当ES集群出现red或yellow状态的时候,出现大量的UNASSIGNED未注册分片解决方案
确保集群正常
- 服务正常启动
- 9200端口正常监听
查看ES集群状态
1 | curl -XGET 'http://localhost:9200/_cluster/health?pretty' |
1 | [root@lfh-R720-51 ~]# curl -XGET 'http://server_ip:9200/_cluster/health?pretty' |
查看unassigned(未注册)分片信息
1 | curl -XGET 'http://server_ip:9200/_cat/shards' | grep UNASSIGNED |
1 | 索引名称 shard序号 状态:未注册 |
获取ES集群或单一节点唯一标识
这个唯一标识,在稍后处理shards时要用到
1 | curl -XGET 'http://server_ip:9200/_nodes/stats?pretty'|head |
1 | 一般类似: |
处理unassigned分片信息
(1) 如果列出的unassigned分片信息,数据较老,并且可以接受索引删除,那么直接使用命令删除掉就可以了
1 | curl -XDELETE 'http://server_ip:9200/logstash-exc-crash-2018.02.28' |
正常的情况下,删除后会返回true
(2)[推荐] 如果数据较新,不容忍数据丢失,那么就需要强制reroute
1 | curl -XPOST 'server_ip:9200/_cluster/reroute' -d '{ |
其中,index代表索引名称;shard代表shard分片序号;node代表的是集群或节点唯一标识
再次验证集群
待我们手动循环执行以上脚本,处理未注册的shard信息后,再次验证集群的状态,同样输入命令”curl -XGET ‘http://server_ip:9200/_cluster/health?pretty'",查看集群状态,可以看到集群状态已经为green了。
1 | curl -XGET 'http://server_ip:9200/_cluster/health?pretty' |
1 | { |
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2019/04/13/解决ES集群存在UNASSIGNED的问题/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!