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%的阈值临界了,所以我的这个问题解决办法是增加硬盘容量或者修改阈值即可恢复正常的健康度了
收上是网友遇到的问题。
而我遇到的是下面的错误:
是因为升级前,关闭了自动分片配置,还没有重启分片的配置。重新设置下即可:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": null
}
}
设置完,瞬间全绿了,奥利给。