一、前言|
大年初三,客户反馈,自己的业务集群RED了,一直触发集群状态告警,需要紧急处理....
二、问题处理过程:
集群状态为红色,表示集群有主分片未正常运行《包括其未初始化成功、未正常开启服务》通过查看日志,我们可以看到如下截图信息:
同时通过,GET _cluster/allocation/explain API 可以看到分片未分派的原因,大概如下:
大致的错误文本如下:
“/data1/containers/1607327622000737832/es/data/nodes/0/indices/N8EaHtdzR1qVM83PhZbKAA/3/_state/state-1.st.tmp: Read-only file system“ 错误的现象就是随着时间的推移,该节点上对应的未正常服务主分片越来越多,集群状态一直为RED.
”"failed shard on node [xXwnFsNLS4SbxAcBlYe0Fw]: failed to create shard, failure FileSystemException[/data1/containers/1587040431000054832/es/data/nodes/0/indices/TxWNAT6cS9WUXIKuzyZmEA/240/_state/state-1.st.tmp: Read-only file system
“
三、解决办法
1,找到日志报错信息中节点对应的CVM,并重启该节点,一般节点重启后文件系统就可以读写了,错误信息里报哪个节点有问题就是哪个节点,重启该节点。
2,如重启故障节点还不能解决,那就需要找CVM同学更换ES底层CVM机器
3,在更换故障节点前,ES需要先将该故障磁盘先打个快照
4,CVM同学在数据做备份后,对该故障磁盘文件系统做fsck 修复。
5,修复完毕,机器重新重启,分片初始化成功,集群GREEN。
6,ES数据盘文件系统只读原因为:
Fstab里面配置了分区挂载后,如果有检测到error,就只读模式挂载,所有后面盘只读也符合预期。
至于前面为什么会出现一个块not found,这个就不太好查了,因为确实坏块数量太小了,就一块。没有其他线索。
正常没有设置自动只读的,一般是不影响的,下次机器重启的时候,开机磁盘自检就可以自动fsck修复这个坏块。
盘只读的原因, 是业务自己机器fstab里面这样配置的,如果发现盘有错误,就只读模式挂载,于是会造成这样的问题。
因此,对于ES服务设置的自动挂载云盘的脚本中的自动挂载参数“”一般没有特别设置这个error配置,按默认的来,就可避免这个参数。
四、总结
本次比较完整的跟进了这个底层CVM磁盘故障导致ES服务不可用的处理过程,特地记录下来,方便后续学习总结。