问题
集群启动脚本运行后,发现只有1台kafka启动成功,具体如下:
![](https://img-blog.csdnimg.cn/img_convert/04de8bc5e1c2229c788c53ceecdfc2ab.png)
![](https://img-blog.csdnimg.cn/img_convert/58baaefe11f889d075892dd117c6b30b.png)
排查
启动脚本里直接启动zookeeper,睡眠后20秒启动三台kafka的,最后启动efak。具体脚本如下:
![](https://img-blog.csdnimg.cn/img_convert/2b618dcd220e85a09fa70a8ed5035db0.png)
查看报错日志如下:
![](https://img-blog.csdnimg.cn/img_convert/7fe0cdc200346be373d2cc20683e1b24.png)
推测:三台kafka同时启动,对cpu负荷较高,线程没有足够的时间片来连接zookeeper。因此,有两个优化点:(1)加大kafka连接zookeeper超时时间,(2)脚本里各kafka一台一台启动而不是同时启动。
解决
1、设置kafka的config/server.properties里zookeeper.connection.timeout.ms的默认6秒改成15秒,具体如下:
![](https://img-blog.csdnimg.cn/img_convert/d27df1c0a3590d260acc61fab9827ce5.png)
2、调整启动脚本,三台kafka同时启动,只有1台能成功连接,说明单台只需少于6秒就能连接zookeeper,这里保险起见,每个kafka设置8秒钟启动,脚本调优后如下:
![](https://img-blog.csdnimg.cn/img_convert/9c906942ac2ff7fecbd4408a7519cb3a.png)
最后多次关闭后启动kafka集群检查服务,非常正常了,具体验证如下:
![](https://img-blog.csdnimg.cn/img_convert/cf930bafc580bb948176ce0515bcb8d2.png)
![](https://img-blog.csdnimg.cn/img_convert/d1a83058e52f0dceaaaaa8da5a1ae833.png)
最后附下关闭脚本,zookeeper没掉线的情况下,只需关闭kafka集群中的一个节点,其它节点都会关闭
![](https://img-blog.csdnimg.cn/img_convert/033b8c18398003ab96eda88a486065fb.png)