2016-11-12 63 views
1

在我的ES集羣中,我有10個分片和2個副本5個節點。我剛剛爲羣集添加了一個新節點,並與羣集同步。狀態爲綠色,根據羣集API,我們現在在羣集中有6個活動數據節點。但是當我檢查''http://localhost:9200/_cat/shards'時,沒有碎片被分配給這個節點。因此,沒有彈性查詢被引導到這個新添加的節點。沒有什麼特別在這個節點的日誌文件:沒有彈性搜索分區分配給新添加的節點

[2016-11-12 14:39:21,114][INFO ][node      ] [xxx] initializing ... 
[2016-11-12 14:39:22,801][INFO ][plugins     ] [xxx] modules [reindex, lang-expression, lang-groovy], plugins [], sites [] 
[2016-11-12 14:39:22,843][INFO ][env      ] [Chak] using [1] data paths, mounts [[/ (/dev/sda1)]], net usable_space [531gb], net total_space [879.9gb], spins? [no], types [ext4] 
[2016-11-12 14:39:22,843][INFO ][env      ] [xxx] heap size [989.8mb], compressed ordinary object pointers [true] 
[2016-11-12 14:39:22,844][WARN ][env      ] [xxx] max file descriptors [65535] for elasticsearch process likely too low, consider increasing to at least [65536] 
[2016-11-12 14:39:31,375][INFO ][node      ] [xxx] initialized 
[2016-11-12 14:39:31,377][INFO ][node      ] [xxx] starting ... 
[2016-11-12 14:39:32,616][INFO ][transport    ] [xxx] publish_address {192.168.200.8:9300}, bound_addresses {192.168.200.8:9300} 
[2016-11-12 14:39:32,637][INFO ][discovery    ] [xxx] divar_elastic/GwfnlWtzTDGv42bZA2PcMA 
[2016-11-12 14:39:36,042][INFO ][cluster.service   ] [xxx] detected_master {xxx}{907DRgSbTv2T-dcDOwPfSw}{192.168.200.7}{192.168.200.7:9302}, added {{xxx}{TAgbh6SmShKCPEPBtUXyXw}{192.168.200.3}{192.168.200.3:9300},{xxx}{907DRgSbTv2T-dcDOwPfSw}{192.168.200.7}{192.168.200.7:9302},{xxx}{C_b3gDlpTfu1zt0RdDlckw}{192.168.200.13}{192.168.200.13:9300},{xxx}{lYOnZzFPTiuJr7JoMNfK5g}{192.168.200.4}{192.168.200.4:9300},{xxx}{BSzFHsAMRyq8cqMh22GSKg}{192.168.200.11}{192.168.200.11:9300},}, reason: zen-disco-receive(from master [{Nar}{907DRgSbTv2T-dcDOwPfSw}{192.168.200.7}{192.168.200.7:9302}]) 
[2016-11-12 14:39:36,143][INFO ][cluster.routing.allocation.decider] [Foo] updating [cluster.routing.allocation.disk.watermark.low] to [93%] 
[2016-11-12 14:39:36,143][INFO ][cluster.routing.allocation.decider] [Foo] updating [cluster.routing.allocation.disk.watermark.high] to [97%] 
[2016-11-12 14:39:37,661][INFO ][http      ] [xxx] publish_address {192.168.200.8:9200}, bound_addresses {192.168.200.8:9200} 
[2016-11-12 14:39:37,664][INFO ][node      ] [xxx] started 

有關如何解決這個問題的任何特殊看法?

+0

問題已解決並在此解決:http://superuser.com/questions/980607/elasticsearch-not-assigning-shards-to-a-new-node – Pooya

回答

0

可能有幾個可能的原因相同。

  1. 當節點離開集羣或連接主節點暫時延遲碎片重新分配,以避免不必要地重新平衡上碎片浪費資源。 檢查延遲超時。

    curl -XPUT 'localhost:9200/<INDEX_NAME>/_settings' -d ' { "settings": { "index.unassigned.node_left.delayed_timeout": "30s" } }

  2. 您需要檢查,如果碎片分配設置爲false。重新啓用分片重新分配。

    curl -XPUT 'localhost:9200/_cluster/settings' -d '{ "transient": { "cluster.routing.allocation.enable" : "all" } }'

如果以上所有都不錯,那麼你需要檢查主日誌以爲什麼不給予任何數據的節點。在最壞的情況下,您可能需要重新啓動羣集,您可以一次執行一個節點的滾動停止啓動。

0

Elasticsearch在添加新節點時不會觸發數據重新平衡。實際上,你真的不希望這樣做,因爲這可能會使網絡飽和,並且在需要將重點放在索引文檔和回答查詢時集中於羣集上。

您可以通過_cluster手動移動碎片到新節點/重路由API(https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-reroute.html

另一種選擇(和一個我傾向於使用這樣的事情)是你可以申請一個短暫的設置將基於磁盤的水印(例如https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html)。如果您查看/_cat/allocation?v並注意到您的舊節點的磁盤利用率(比如說)爲60%,則可以將高水位設置降低到55%左右,以便較早的節點開始將數據發送到較新的節點消耗的磁盤空間。如果您這樣做,確保在ES移動數據後重置瞬態設置。