正在AWS群集上工作,在节点1的AWS ES群集中重新分配副本分片。我希望主分片和副本分片都驻留。但是当运行下面的命令时出现错误
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中不允许手动分片分配?任何人都可以澄清一下。
谢谢
答案 0 :(得分:2)
正确,AWS不允许您直接控制分片分配,至少不是以通常的方式。
我希望可以以其他特定于AWS的方式完成,因为我有一个黄色的群集,我真的很绿。 :(
[跟进:似乎Elasticsearch域名最终意识到它可以解决这个问题。在我们的例子中,因为我们的自由空间不足,所以复制品未被分配。我们释放了空间,也许30分钟后,碎片开始自行复制。]
答案 1 :(得分:1)
弹性搜索中不允许这样做,因为它会违反概念作为故障转移的副本或完全分发。 https://www.elastic.co/guide/en/elasticsearch/guide/master/replica-shards.html
在同一节点上具有相同的主分片和副本分片是无用的,并且不允许使用。与AWS无关。
答案 2 :(得分:0)
由于多种原因,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
}
}'
您可以通过将副本分片设置回适当的数量来重新启用它。
不建议在运行繁重工作负载的集群上手动处理分片分配,因为当我们删除索引的副本分片时,我们只剩下主分片,然后所有传入的负载都将由该分片处理独自的。任何节点故障都会导致集群状态变为红色。
查看 documentation 以进一步了解造成这种情况的不同原因以及如何处理。