Kafka Zookeeper ZkTimeoutException解决方法
最近工作涉及到Kafka和zookeeper,在服务器上运行项目一直出现Zookeeper TimeOut报错:
[ERROR 2018-04-02 14:15:24] {com.unistacks.tamboo.manager.service.DataCollectorService:78} - saveTopicInfo
org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeout: 30000
at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:1232) ~[zkclient-0.8.jar!/:?]
at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:156) ~[zkclient-0.8.jar!/:?]
at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:130) ~[zkclient-0.8.jar!/:?]
at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:97) ~[zkclient-0.8.jar!/:?]
at com.unistacks.tamboo.manager.helper.ZKHelper.getZkClient(ZKHelper.java:18) ~[classes!/:1.0.0]
at com.unistacks.tamboo.manager.service.KafkaBaseInfoService.getTopicInfoList(KafkaBaseInfoService.java:105) ~[classes!/:1.0.0]
at com.unistacks.tamboo.manager.service.DataCollectorService.saveTopicInfo(DataCollectorService.java:69) [classes!/:1.0.0]
at com.unistacks.tamboo.manager.service.OperationShellService.cascadeExecute(OperationShellService.java:74) [classes!/:1.0.0]
at com.unistacks.tamboo.manager.service.AbstractCascadeOperationService.executeAgentShellSync(AbstractCascadeOperationService.j
ava:103) [classes!/:1.0.0]
网上搜了一圈,大概有一下解决方法:
- 启动kafka
- 关闭防火墙
- 核实服务器时间
- 查看项目引入zookeeperjar包和服务器安装的zookeeper版本是否一致
尝试以上方法结果都没解决,最后再次查看监控日志发现,创建topic实际上已经成功,但是后面服务会再次连接zookeeper进行执行相关脚本操作。回到代码层面仔细查看发现,会从数据库一次性findAll出所有创建的集群,然后遍历,对每一个集群进行当前执行的操作,实际上,真正的集群只有193中的dev,其他的集群与dev共用同一个zookeeper地址,dev为正常集群,项目服务无法通过zookeeper连接连接上其他集群。