"消息":"您的请求:' / _ cluster / allocation / reroute'是不允许的。"}

时间:2017-03-07 04:59:43

标签: amazon-web-services elasticsearch elastic-stack

正在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中不允许手动分片分配?任何人都可以澄清一下。

谢谢

3 个答案:

答案 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 以进一步了解造成这种情况的不同原因以及如何处理。