我目前正在运行一个三节点(elasticsearch)集群index.number_of_replicas: 0
。我想关闭其中一个节点进行维护。我有什么办法可以在不增加的情况下做到这一点吗number_of_replicas
?
关闭 API 似乎无法在关闭节点之前重新平衡分片。因此,我似乎需要使用集群重新路由 API 手动将分片移动到另一个节点。这样做会将其他分片重新平衡回我的节点,所以我想我需要以某种方式重新平衡集群。有没有比这更好的选择?
答案1
你可以通过告诉集群将某个节点排除在分配之外来停用该节点。(来自文档 这里)
curl -XPUT localhost:9200/_cluster/settings -d '{ "transient" :{ "cluster.routing.allocation.exclude._ip" : "10.0.0.1" } }';echo
这将导致 Elasticsearch 将该节点上的分片分配给剩余节点,而集群的状态不会变为黄色或红色(即使您的副本数为 0)。
一旦所有分片都重新分配完毕,您就可以关闭节点并在那里执行任何需要执行的操作。完成后,包括分配的节点,Elasticsearch 将再次重新平衡分片。