想象一下我有的情况
- 3(AWS) 个节点
- 具有 3 个分片和 1 个副本的索引(我们称之为 friend )。
S1(索引好友主分片 1)
S2(索引好友主分片 2)
S3(索引好友主分片 3)
R1(碎片 1 的副本)
R2(碎片 2 的副本) R3(碎片 3 的副本)
假设 Node1 有 (S1 R2) 并且是 master
节点2有(S2 R3)
Node3 有 (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"}}'
关于elasticsearch - 如果一个节点关闭,则禁用 ElasticSearch 重新平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251361/