1. 程式人生 > >ElasticSearch重啟之後shard未分配問題的解決

ElasticSearch重啟之後shard未分配問題的解決

環境:

  • Ubuntu16.04
  • elasticsearch 6.2.3
  • 3個master節點,10個data節點
  • 每個分片有一個副本

故障:

    將一個數據節點的elasticsearch換成docker elasticsearch,分詞器沒有新增到plugins中。隨後把分詞器新增到plugins中後,發現有的分片沒有被分配,但是ES叢集啟動正常,只不過一直是yellow狀態。而且unassigned分片一直未被分配

解決辦法

首先執行:GET user/_recovery?active_only=true 發現叢集並沒有進行副本恢復。

點選未進行分配的分片,發現allocation_status: "no_attempt"

原因是:shard 自動分配 已經達到最大重試次數5次,仍然失敗了,所以導致"shard的分配狀態已經是:no_attempt"。這時在Kibana Dev Tools,執行命令:POST /_cluster/reroute?retry_failed=true即可。由index.allocation.max_retries引數來控制最大重試次數。

The cluster will attempt to allocate a shard a maximum of index.allocation.max_retries times in a row (defaults to 5), before giving up and leaving the shard unallocated.

當執行reroute命令對分片重新路由後,ElasticSearch會自動進行負載均衡,負載均衡引數cluster.routing.rebalance.enable預設為true。 

It is important to note that after processing any reroute commands Elasticsearch will perform rebalancing as normal (respecting the values of settings such as cluster.routing.rebalance.enable) in order to remain in a balanced