"Message":"Your request: '/_cluster/allocation/reroute' is not allowed."}

"Message":"Your request: '/_cluster/allocation/reroute' is not allowed."}

正在 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 不允许手动分片分配?谁能澄清一下。

谢谢

这在 elasticsearch 中是不允许的,因为它会违反作为故障转移或分布式副本的概念。 https://www.elastic.co/guide/en/elasticsearch/guide/master/replica-shards.html

在同一节点上拥有相同的主分片和副本分片是没有用的,也是不允许的。与AWS无关。

正确,AWS 不允许您直接控制分片分配,至少不能以通常的方式。

我希望它可以 以其他一些特定于 AWS 的方式完成,因为我有一个黄色的集群,我真的宁愿是绿色的。 :(

[跟进:Elasticsearch 领域似乎最终意识到它可以自行解决这个问题。在我们的例子中,因为我们的免费 space 短缺,所以副本未分配。我们释放了 space,也许 30 分钟后碎片开始自行复制。]

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