返回到文章

采纳

编辑于

kafka注册zookeeper失败

kafka

集群运行过程中,经常会发现kafka注册zookeeper失败,即zookeeper中/brokers/ids发现少了某个kafka broker:

# kubectl exec zookeeper-0 -- zkCli.sh ls /brokers/ids | tail -1
[0, 2]

曾经发现过的问题是,kafka和zookeeper的连接参数ZOOKEEPER_CONN采用了zookeeper的service地址,连接时可能随机连接某个zookeeper pod,导致连接无法保持,所以当前已经改为:

zookeeper-0.zookeeper-hs.default.svc.cluster.local:2181,zookeeper-1.zookeeper-hs.default.svc.cluster.local:2181,zookeeper-2.zookeeper-hs.default.svc.cluster.local:2181

但仍旧会发生连接断开的问题。当前kafka和zookeeper相关参数如下:

zookeeper:
    tickTime=2000
    initLimit=5
    syncLimit=15
    maxClientCnxns=500
    autopurge.purgeInterval=24
    autopurge.snapRetainCount=6

kafka:
    zookeeper.session.timeout.ms=20000

不知大家有没有遇到过相关问题?

(有一种规避方案是通过kakfa探针检测是否注册到zookeeper,但总是重启kafka broker在生产环境下不太允许,还是需要找一找根本原因)