我创建了一个ES集群,ES在三台不同的机器上运行。为了使它们成为集群,我在elasticsearch.yml配置文件的所有3台机器中添加了如下所示的单播配置。
discovery.zen.ping.unicast.hosts:[IP1, IP2, IP3]
当我跑步时
curl -XGET localhost:9200/_cluster/health?pretty
将No_of_nodes设为3.现在我想从群集中删除一个节点 所以在不更改任何配置文件的情况下,我运行了以下命令
curl -XPUT localhost:9200/_cluster/settings -d '{
"transient" :{
"cluster.routing.allocation.exclude._ip" : "IP_adress_of_Node3"
}
}';
在此之后,我再次运行第二个命令以获取群集详细信息,预期输出为NO_of_nodes应为2,但结果显示节点数= 3,即使排除节点后仍然如此。如果有人可以告诉我删除节点的步骤有什么问题,那将会有很大的帮助。
谢谢
答案 0 :(得分:2)
您发送到群集的命令 cluster.routing.allocation.exclude._ip 实际上不会从群集中删除该节点,而是准备将其删除。这样做,它指示Elasticsearch将此节点上保留的所有分片移离此节点,并将它们存储在其他节点上。 这允许您在节点为空时删除该节点,而不会导致存储在此节点上的分片的复制不足。
要从群集中实际删除该节点,您需要将其从单播主机列表中删除。当然你也可以关闭它并把它留在列表中,直到你下次需要重新启动你的群集为止,据我所知,它不会伤害任何东西。