ES故障案例——记ES数据盘故障造成集群不可用

作者:SUNNY
时间:2018-05-24


故障现象

Pending tasks任务一直有堆积,线上createindex等无法完成或创建时间较长。

原因分析

Data node某数据盘故障,创建索引时,master无法完成分片分配,导致任务阻塞,影响后续创建索引等任务。

原因理解

重新梳理看到的现象:

1, create index较慢或者或出现失败
在这里插入图片描述
2, pending task有任务堆积
在这里插入图片描述
3, GET /_cat/nodes返回500
在这里插入图片描述

根据pending task中的任务“shard-failed”,搜索master日志,找到如下一条信息
在这里插入图片描述

根据此信息,可能是/data9目录数据目录出现权限问题,但是进入到es数据目录,创建、删除、修改文件权限是正常。比较奇怪。

在官方论坛找到了一篇关于此报错的一个讨论:

https://discuss.elastic.co/t/master-node-error-read-only-file-system/121806

但此讨论与遇到问题不是同一问题。

问题追查,到此陷入困境。

仔细阅读了master的配置文件,但是master实际上并没有配置/data9这个数据目录,但master为什么会有这样报错?

猜测1:由于master机器上有2个es实例,启动时引用错配置文件

验证:验证进程打开的文件句柄,与实际不符。

猜测2:其他节点报错

验证:仔细排查挨个节点的日志,发现一data node同样有相应报错,报错与master错误日志一致。切换到对应目录,确认对应磁盘故障。

实际处理

临时方案:

在对应数据节点,临时下线故障数据目录,重启es实例。

效果验证:

GET /_cluster/pending_tasks常态下为0

tasks: []

GET /_cat/nodes返回正常结果

功能验证正常

说明:分片不能同步情况可以可以通过此接口查看/_cluster/allocation/explain?pretty&pretty

后续跟进:

增加数据盘故障监控

小结

数据节点数据盘故障,会影响到整个集群性能。

发布了67 篇原创文章 · 获赞 0 · 访问量 1785

猜你喜欢

转载自blog.csdn.net/zhinengyunwei/article/details/104042424
今日推荐