Elasticsearch - 配置集群感知后所有副本分片都未分配

Elasticsearch - all replica shards are unassigned after configuring cluster awareness

我有一个 (Elasticsearch) 7 节点集群: 6 个节点是 data 和 master 合格节点。 一个是见证和投票节点。

我有两个数据中心,A1 和 A2。

我最近重新配置了 6 个具有集群路由分配意识的数据节点,具体取决于它们所在的数据中心:

A1

node.attr.ABC: A1
cluster.routing.allocation.awareness.attributes: ABC

A2

node.attr.ABC: A2
cluster.routing.allocation.awareness.attributes: ABC

因为我设置了这个并重新启动了所有节点,我看到我所有的副本分片现在都没有分配,并且 只有 个主分片被分配给节点。

如果我尝试使用 allocate_replica 并将其中一个副本移动到 A1/A2 -

上的任一节点
{
    "commands": [
        {
            "allocate_replica": {
                "index": "MY_INDEX",
                "shard": 0,
                "node": "node1.local"
            }
        }
    ]
}

我会得到错误:

节点不包含感知属性[A1];所需属性集群设置

我该如何解决这个问题并将我的副本分片正确地重新分配给节点?

GET _cluster/allocation/explain 的回复提供了以下线索:

node does not contain the awareness attribute [A1]; required attributes cluster setting [cluster.routing.allocation.awareness.attributes=A1

您的集群设置似乎包含

cluster.routing.allocation.awareness.attributes: A1

而不是你提到的

cluster.routing.allocation.awareness.attributes: ABC