我正在处理AWS集群,在节点1的AWS集群中重新分配副本碎片。我希望主碎片和副本碎片都驻留在其中。但是,当运行以下命令时,会出现错误
curl -XPOST 'http://AWS-CLuster-name.com/_cluster/allocation/reroute' -d '{ "commands": [{"allocate_replica":{"index": ".kibana", "shard": 0, node: "nodename" "primary": false }'当运行上述命令时,会出现以下错误。
{"Message":"Your request: '/_cluster/allocation/reroute' is not allowed."}这是否意味着AWS中不允许手动分配碎片?有谁能澄清一下。
谢谢
发布于 2017-03-07 18:27:21
这在elasticsearch中是不允许的,因为它违反了作为故障转移副本或分布式副本的概念。https://www.elastic.co/guide/en/elasticsearch/guide/master/replica-shards.html
在同一节点上拥有相同的主碎片和副本碎片是无用的,不允许使用simpy。与AWS无关。
发布于 2017-03-16 22:43:13
正确,AWS不允许您直接控制碎片分配,至少不能以通常的方式控制。
我希望它能以其他一些AWS特有的方式来实现,因为我有一个黄色的集群,我非常希望它是绿色的。:(
后续:看起来Elasticsearch领域最终意识到它可以自己解决这个问题。在我们的例子中,由于我们的空闲空间越来越短,所以副本没有被分配。我们释放了空间,大概30分钟后,碎片开始自己复制。
发布于 2021-05-17 11:39:42
由于多种原因,Elasticsearch群集状态变为黄色或红色。有时,即使经过相当长的时间,Elasticsearch域也可能不会修复集群状态的问题。当碎片分配的最大重试次数超过限制(5次重试)时,尤其会发生这种情况。
在这个场景中,根据文档,手动碎片分配可以通过禁用和重新启用索引上的副本碎片来触发。
通过运行以下命令,可以确定哪个索引的碎片分配失败了
curl -XGET 'MyES_Endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED一旦找出没有分配哪个索引的碎片,就可以使用下面的命令禁用索引的副本碎片
curl -XPUT 'MyES_Endpoint/<index>/_settings' -H 'Content-Type: application/json' -d'
{
"index" : {
"number_of_replicas" : 0
}
}'通过将副本碎片设置为适当的编号,您可以重新启用副本碎片。
警告
不建议在运行大量工作负载的集群上手动处理碎片分配,因为当我们移除索引的副本碎片时,只剩下主碎片,然后所有传入的负载仅由该碎片处理。然后,任何节点故障都会导致集群的状态变为红色。
看看文档,进一步了解造成这种情况的不同原因,以及如何处理这些原因。
https://stackoverflow.com/questions/42640555
复制相似问题