今天上午zk集群出现了问题,
client端日志:
zk server follower端日志:Exception when following the leader
java.lang.Exception: shutdown Follower
中间还夹杂着:zk重新选举的日志:FastLeaderElection
zk server master端日志:java.lang.Exception: shutdown Leader! reason: Not sufficient followers synced, only synced with sids: [ 7 ]
分析:我们使用zk来进行服务发现,使用zk虚节点(EPHEMERAL)来注册所需服务的ip地址,client端监听特定路径下所有zk节点,当机器有上下线时通知client, 今天10:40左右监控报警,一个机房服务可用率掉至55%,日志如上图所示,整理了一下,大概情况是:
1、10:40:54 zk server follower出现Exception when following the leader ,看了一下网上分析说是follower在跟leader同步时,fsync操作时间过长,导致超时。
2、 zk server follower 心跳检测异常,出现 java.lang.Exception: shutdown Follower
3、当所有从节点都出现这个问题后,master节:error:java.lang.Exception: shutdown Leader
reason: Not sufficient followers synced, only synced with sids: [ 7 ]
master节点down掉,导致重新选举。
所以出现所有的session过期,重新建立链接,监听,逐渐恢复过程持续了七八分钟才好。
修复:
暂时修复 :zk参数修改:
将tickTime调大了一些
leaderServes=no
forceSync=no
peerType=observer(部分机器设置)
还是有很多问题:
zk master 与 follower的区别?读写操作执行?事务操作?
机器磁盘io查看:iostat 实时 sar当天
参考:
https://blog.csdn.net/dslztx/article/details/51596951
https://www.cnblogs.com/lwhctv/p/10408295.html
https://blog.csdn.net/liereli/article/details/80039124