0

我创建了一个 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 即使在排除节点后仍然如此。如果有人可以告诉我删除节点所遵循的步骤中有什么问题,那将有很大帮助。

谢谢

4

1 回答 1

2

您发送到集群的命令cluster.routing.allocation.exclude._ip实际上不会从集群中删除节点,而是准备将其删除。它的作用是,它指示 Elasticsearch 将保存在该节点上的所有分片从该节点移开,并将它们存储在其他节点上。这允许您在节点为空时删除该节点,而不会导致存储在该节点上的分片复制不足。

要真正从集群中删除节点,您需要将其从单播主机列表中删除。当然,您也可以将其关闭并将其保留在列表中,直到您下次无论如何都需要重新启动集群为止,据我所知,这不会造成任何伤害。

于 2017-02-15T09:33:47.347 回答