簡體   English   中英

沒有為新添加的節點分配elasticsearch分片

[英]No elasticsearch shard is assigned to newly added node

在我的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

關於如何解決這個問題的任何特殊意見?

可能有幾個可能的原因。

  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" } }'

如果以上所有都是好的,那么您需要檢查主日志,以確定它為什么不向節點提供任何數據。 在最壞的情況下,您可能需要重新啟動群集,您可以一次滾動停止啟動一個節點。

添加新節點時,Elasticsearch不會觸發數據的重新平衡。 實際上你真的不希望它,因為當它需要專注於索引文檔和回答查詢時,它可能會使你的網絡飽和並給集群帶來壓力。

您可以通過_cluster / reroute 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移動數據后重置瞬態設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM