2017-02-15 34 views
0

我已经创建了ES群集,ES在三台不同的机器上运行。为了使它们成为集群,我在elasticsearch.yml配置文件的所有3机器中添加了如下的单播配置。无法从ES群集中​​分离碎片

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仍然前夕n排除节点后。如果有人能够告诉我在删除节点的步骤中出现了什么问题,这将非常有帮助。

感谢

回答

2

命令cluster.routing.allocation.exclude._ip您发送给您的集群实际上不会从群集删除节点,而是准备将其去除。它所做的是,它指示Elasticsearch将此节点上保存的所有碎片移出此节点,并将它们存储在其他节点上。 这允许您在删除节点后将其删除,而不会导致存储在此节点上的分片的复制不足。

要真正从群集中删除节点,您需要将它从您的单播主机列表中删除。当然你也可以把它关闭并留在列表中,直到你下一次需要重新启动集群为止,据我所知,这不会伤害任何东西。

+0

感谢您的意见,我还有一个,所以我在单播中的条目是正确的吗?我的意思是说,在我的配置文件中,我已经为所有3个机器配置文件中的所有3个节点创建了一个条目是否正确? –

+0

而且对于排除API,它应该将排除的IP下的分片移动到剩余节点,但在我的情况下,仍然会看到标记为排除的Node下的分片。可能是什么问题 –

+0

Elasticsearch在尝试重新分配碎片(复制因子,磁盘空间......)时还考虑了其​​他一些事情,因此可能有多种原因,为什么在您的特定情况下它不会重新分配碎片。你可以运行分配解释API(https://www.elastic.co/guide/en/elasticsearch/reference/master/cluster-allocation-explain.html)并创建一个新的问题与输出? –