如果一个节点关闭,则禁用 ElasticSearch 重新平衡

Disable ElasticSeach re-balancing if one node is down

想象一下我遇到的情况

S1(索引好友主分片 1)

S2(索引好友主分片 2)

S3(索引好友主分片 3)

R1(碎片 1 的副本)

R2(碎片 2 的副本) R3(碎片 3 的副本)

假设 Node1 有 (S1 R2) 并且是 master

节点 2 有 (S2 R3)
节点 3 有 (S3 R1)

现在,如果由于连接失败,节点 2 出现故障。

负载平衡将会发生并且 节点 1 会将副本 (R2) 提升为主要副本,并且 (R2) 的新副本将在节点 3

中创建

负载均衡后最终会像

节点 1 有 (S1 S2, R3)
Node3 有 (S3 R1, R2)

在此重新平衡繁重的 IO 操作期间,Elastic 搜索运行状况将变为红色 -> 黄色,然后变为绿色。

我的要求是,如果节点 2 宕机,节点不得重新平衡。如果查询结果只显示分片 S1 和 S3 的结果,我没问题。当节点 2 再次返回时,不应发生重新平衡。

您可以通过禁用分片分配来实现此目的。

curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "none"}}'

如果您想重新开启分配:

curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "all"}}'