【发布时间】:2020-02-20 07:08:57
【问题描述】:
我有一个包含 3 个节点的 Elasticsearch (v5.6.10) 集群。
- 节点 A:主节点
- 节点 B:主 + 数据
- 节点 C:主 + 数据
每个数据节点有 6 个分片,复制设置为 1。所有 6 个主节点都在节点 B 中,所有 6 个副本都在节点 C 中。
我的要求是取出节点 B,做一些维护工作,然后将其放回集群中,而不需要任何停机时间。
我查看了弹性文档、论坛和 stackoverflow 问题。我发现我应该先执行以下请求,以便将该节点上的分片分配给其余节点。
curl -XPUT localhost:9200/_cluster/settings -H 'Content-Type: application/json' -d '{
"transient" :{
"cluster.routing.allocation.exclude._ip" : <Node B IP>
}
}';echo
重新分配所有分片后,我可以关闭节点并进行维护工作。完成后,我必须再次包含节点以进行分配,Elasticsearch 将再次重新平衡分片。
现在我还发现了另一个讨论,其中用户面临黄色/红色集群健康问题,因为只有一个数据节点但错误地将复制设置为一个,导致未分配的分片。在我看来,在做这个练习时,我正在将我的集群带向那个状态。
所以,我关心的是我是否遵循了正确的方法,记住我的所有主分片都在我从复制因子为 1 的集群中取出的节点(节点 B)中。
【问题讨论】:
标签: elasticsearch