ES 分片失敗:UNASSIGNED reason為node_left 的 解決方案,包括(ALLOCATION_FAILED,REPLICA_ADDED,NODE_LEFT,REINITIALIZED,CLUSTER_RECOVERED等等)


問題場景:
今日早上登錄head查看集群,發現有一個節點出現UNASSIGNED。

 

 

 

然后點擊灰色的分片查看原因為:

  

 

 

可以看到reason為node_left。

根據官方的解釋有如下:

INDEX_CREATED:由於創建索引的API導致未分配。
CLUSTER_RECOVERED :由於完全集群恢復導致未分配。
INDEX_REOPENED :由於打開open或關閉close一個索引導致未分配。
DANGLING_INDEX_IMPORTED :由於導入dangling索引的結果導致未分配。
NEW_INDEX_RESTORED :由於恢復到新索引導致未分配。
EXISTING_INDEX_RESTORED :由於恢復到已關閉的索引導致未分配。
REPLICA_ADDED:由於顯式添加副本分片導致未分配。
ALLOCATION_FAILED :由於分片分配失敗導致未分配。
NODE_LEFT :由於承載該分片的節點離開集群導致未分配
REINITIALIZED :由於當分片從開始移動到初始化時導致未分配(例如,使用影子shadow副本分片)。
REROUTE_CANCELLED :作為顯式取消重新路由命令的結果取消分配。
REALLOCATED_REPLICA :確定更好的副本位置被標定使用,導致現有的副本分配被取消,出現未分配。
我的原因為第9條,NODE_LEFT :由於承載該分片的節點離開集群導致未分配。

當然也可以通過:http://ip:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason  查看你的各個節點分片的狀態和原因

 

但是知道原因為NODE_LEFT也沒啥能具體定位問題的描述,所以再通過:http://ip:9200/_cluster/allocation/explain   返回未分配索引每個分片的詳情和未分配的原因,可以查看我的具體原因如下:

 

 

 

很容易看到我的分片主要是硬盤SSD的剩余容量達到85%的閾值臨界了,所以我的這個問題解決辦法是增加硬盤容量或者修改閾值即可恢復正常的健康度了

收上是網友遇到的問題。

 

而我遇到的是下面的錯誤:

 

            "deciders": [
                {
                    "decider": "enable",
                    "decision": "NO",
                    "explanation": "replica allocations are forbidden due to cluster setting [cluster.routing.allocation.enable=primaries]"
                }
 

 

是因為升級前,關閉了自動分片配置,還沒有重啟分片的配置。重新設置下即可:

PUT _cluster/settings

{

  "persistent": {

    "cluster.routing.allocation.enable": null

  }

}

 設置完,瞬間全綠了,奧利給。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM