一、故障现象
Teledb运维控制台观测到set频繁进行主从切换
二、故障关键信息
放到前面,用于下一次故障的快速确认
1、检查zookeeper集群各实例状态,频繁在follower 和 not running间切换
./zkServer.sh status
2、日志信息输出
less zookeeper.out | grep "fsync-ing the write ahead log in SyncThread"
三、故障分析
2.1 teledb agent日志表现
大量的连不上zk的信息,如下图
2.2 数据库实例上连接zk的表现
连得上,但是反复被中断,如下图
2.3 zk自身的日志表现
Follower节点如下错误。
fsync-ing the write ahead log in SyncThread:1 took 2243ms which will adversely effect operation latency
····
INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:8035:Follower@145] - shutdown called
java.lang.Exception: shutdown Follower···
四、故障原因
直接原因:Follower在跟Leader节点同步时,fsync操作时间过长,导致超时。
根本原因:磁盘性能等多方面因素
五、解决方案
临时解决方案:echo "forcesync=no" >> zoo.cfg (具有一定隐患,需同步)
长期解决方案:
1、zkdata与zklog分开磁盘存储;或提升磁盘性能;
2、增加zk服务器之间的心跳超时时间,syncLimit 、tickTime