2017-02-15 64 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)並創建一個新的問題與輸出? –