线上ZK问题排查

mac2022-06-30  159

问题描述

测试环境ZK集群的三个节点中zk1状态虽然是follower,启动也能正常启动(通过telnet也能telnet 2181端口); 无法通过zk客户端去连接2181端口,状态一致是CONNECTING

查看zk集群所有节点状态
/data/zookeeper-new-1/bin/zkServer.sh status /data/zookeeper-new-2/bin/zkServer.sh status /data/zookeeper-new-3/bin/zkServer.sh status

得到zk2是主节点

查看各个节点的data数据大小
du -h /data/zookeeper/tmp/zk1/data/version-2/ --max-depth=1 du -h /data/zookeeper/tmp/zk2/data/version-2/ --max-depth=1 du -h /data/zookeeper/tmp/zk3/data/version-2/ --max-depth=1 [appadm@moonmall_Z1 zookeeper]$ du -h /data/zookeeper/tmp/zk1/data/version-2/ --max-depth=1 2.4G /data/zookeeper/tmp/zk1/data/version-2/ [appadm@moonmall_Z1 zookeeper]$ du -h /data/zookeeper/tmp/zk2/data/version-2/ --max-depth=1 7.1G /data/zookeeper/tmp/zk2/data/version-2/ [appadm@moonmall_Z1 zookeeper]$ du -h /data/zookeeper/tmp/zk3/data/version-2/ --max-depth=1 7.3G /data/zookeeper/tmp/zk3/data/version-2/ [appadm@moonmall_Z1 zookeeper]$

结果: zk1节点的数据落后其它节点太多,查看ZK1的配置信息(zoo.conf)

# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/data/zookeeper/tmp/zk1/data dataLogDir=/data/zookeeper/tmp/zk1/log # the port at which the clients will connect clientPort=2181

两个参数需要注意 参数名称|说明 ---|---- tickTime | zk服务器与客户端之间心跳维持的时间间隔。每隔tickTime的时间就会发送一个心跳。 initLimit | 允许所有follower与leader进行同步的时间,如果在设定的时间段内,半数以上的follower未能完成同步,集群会再进行一次选举。 syncLimit | leader与follower之间的同步时间,如果在设定的时间内未完成同步,它将会被集群丢弃。

解决方案
调整syncLimit, 如果文件大小相差较大,可以讲时间相应的调大.将主节点的文件手动复制到有问题的节点中.调整zoo.conf定时清理数据快照信息。减少数据同步信息 autopurge.snapRetainCount=5 # Purge task interval in hours # Set to "0" to disable auto purge feature autopurge.purgeInterval=1 对于集群节点data目录快照文件相差非常巨大。用方法2无法使集群正常工作。(即使集群能够正常启动起来,过不了多久又会停止工作。但是各个节点角色还是正常的)。考虑到之前有个节点总是挂起。可以想到整个集群数据不能保证一致,可以考虑是否重建数据目录。这个需要对整个业务衡量

转载于:https://www.cnblogs.com/KevinStark/p/11405412.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)