es 报错cannot allocate because allocation is not permitted to any of the nodes

0.现象

es 集群报red ,有unassigned shared ,
用命令 curl localhost:9200/_cat/shards |grep UNASSIGNED 可以查看。
即使你马上加节点,还是没有改善。新节点并不会正常工作,可能跟集群red有关系。

1.根本原因

节点磁盘不足,导致某些分片无法分配,一般情况下都有集群会有水位设置,比如说可以设置50G或者到85%的时候就不往里写数据了,
但是之前一次出了故障导致必须放开这个限制,之后没加上。

可以用命令:

GET /_cluster/allocation/explain

查看详细原因。

2.解决方案

POST /_cluster/reroute?retry_failed=true

es的机制貌似是try了5次就停了,重启master或者node都无效,执行上面的命令可以再retry。

3.后记

es这个东西还是复杂,而且很重,没有专业团队维护后期数据量大了很难维护。

原文地址:https://www.cnblogs.com/gqdw/p/12632585.html