记一次zkfc故障问题定位
问题现象:
zkfc进程频繁告警
问题分析:
1.查看zkfc日志显示如下,大量的与zk连接超时的信息,达到一定次数后,不再进行重试,最后zkfc状态报不健康
重启服务后,hadoop001节点检测到该台namenode是健康的,且zk选举认为hadoop1节点状态应切换为standy
查看hadoop2 zkfc日志如下
九点零一分左右日志显示与zk连接超时,无法建立通信,导致zkfc服务不健康
重启后日志显示如下,检测到hadoop2节点可能是active节点,将hadoop1节点切换为standy
综上由于hdfs的zkfc与zk通信超时,导致zkfc服务不健康,重启zkfc过程中导致namenode主从发生切换,故需要调整与zk通信时间,日志显示最大时间为10000ms
查看对应时刻zk日志,与leader同步超时,不停进行选举,一个是由于znode数据大小超限(默认4M),一个是因为同步快照日志超时(initLimit 默认值10s),且数据日志大小约为2G已上
问题结论:由于zk的压力过大,导致zkfc和zk通信超时,导致此问题。
zk压力过大的原因如下:
1.zk连接数配置较低
2.由于其他组件在大量使用zk,导致链接负载较高
3.zk的gc参数设置的较小
问题处理:1.调整zk参数,增大客户端链接数参数值
maxCnxns
maxClientCnxns
SyncLimit
2.针对组件设置单独的znode,同时将大量使用zk的组件单独部署一个zk供其使用
3.调大zk的gc参数-Xmx由原来的2G调整到8G