kafka注册zookeeper失败

宁静志远 发表于: 2019-10-21   最后更新时间: 2019-10-21 10:44:59   3,399 游览

集群运行过程中,经常会发现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在生产环境下不太允许,还是需要找一找根本原因)

发表于 2019-10-21
添加评论

看着像用的kubernetes安装的kafka,zk与broker中断的时候,kafka的pod是新的还是老的。

宁静志远 -> 半兽人 5年前

是的,kafka和zookeeper都是以kubernetes中pod形式运行的。
zk与broker中断的时候,kafka pod看起来没有任何异常,也没有重启

半兽人 -> 宁静志远 5年前

先参考下,我翻译了一半,我已经投入测试了,目前很稳定,文章还没来得及翻译完:
zookeeper:https://www.orchome.com/1277
kafka:https://www.orchome.com/1813

半兽人 -> 宁静志远 5年前

你这个是只有第一次启动kafka集群的时候有这个问题?某个节点无法注册到zk上?
还是集群都正常了,使用中突然某个节点掉了?

宁静志远 -> 半兽人 5年前

初始注册不会有任何问题,主要是跑着跑着突然节点掉了,业务就出问题了。

半兽人 -> 宁静志远 5年前

先到丢失连接的broker上,找到引起失败的日志,确认是什么原因导致的节点不可用。

主机之间进行长ping试试啊,看看是否有瞬时的网络不通。

你的答案

查看kafka相关的其他问题或提一个您自己的问题