坐在办公室里喝着茶,一个电话一下子闷逼了,平台一堆报系统异常,挂了电话一头雾水。服务啥都没动啊,怎么会出现问题呢。第一时间查看服务器日志,没毛病,看到了ES的一堆报错,赶紧用es-header连上去看看,三台集群,只剩一台在线,其他的分片都显示unassigned,由于之前出现过这个问题,做了重新分片好了。
第一念头就是服务器的硬盘是不是满了
df -h
果然显示100%使用,一堆操作查看大文件在哪里,发现有个服务一直在写日志,日志文件大概得有300G,把我看闷了。这是个kafka检测服务,日志一直没清理,果断删除一些,先释放点空间,登陆进去这个服务,可能是其他同事安装的,但是并没有跟kafka的服务绑定,并没有检测有效的kafka,果断先停掉。
再回去重启了ES集群服务,重启后很多分片的shard不能正常的分配,没办法,先用kibana看下健康状况吧:
GET _cluster/health?level=indices
可以看到状态为red的索引及shard记录,然后我们看下更详细的shard:
GET _cluster/health?level=shards
我们可以看到那个index上的哪个分片没有进行分配,状态为unassigned,这就好办了,只能给他重新分配分片了
执行下面的指令进行索引分片的shard重分配
POST /_cluster/reroute?retry_failed=5&pretty
{
"commands" : [ {
"allocate_stale_primary" : {
"index" : "event_action_index",
"shard" :3,
"node" : "node-3",
"accept_data_loss" : true
}
}]
}
原文地址:磁盘空间引起ES集群shard unassigned的处理过程 - 悠涵博客 | 路漫漫其修远兮,吾将上下而求索