问题描述
近日一个同事新写了一个kafka生产者程序,问我他往某topic里发送的消息我这边是否能收到,于是我登录kafka集群的节点,用kafka自带的命令行工具kafka-console-consumer.sh
连接他指定的topic进行消费,发现并没有看到他发送的内容,然后我自己用kafka-console-producer.sh
尝试发送消息,却能够在消费端收到消息的。而且他还反馈他本地使用了kafka的UI工具offsetexploer
也无法连接到集群,而且生产者发送消息收到响应的时间也特别长。这听起来似乎又是一件比较奇怪的事情!
问题追踪
因为我在kafka集群上用命令行是可以消费到数据的,说明集群本身没有问题,于是我怀疑以下问题:
- 是不是kafka的配置写错了? 我仔细核对了一下他的配置,发现并没有问题。
- 有没有可能是他机器上防火墙的原因?结果也不是这个原因,而且我在我自己的电脑上用
offsetexploer
也无法正常与kafka集群建立连接。 - kafka集群服务器上开启了什么访问限制?检查一圈也没有任何问题,在broker服务器上开启抓包,确实也没收到远程客户端的报文。
- 是本地连不上zookeeper导致获取不到集群的broker信息? 在本地用
zooInspector
工具是可以正常连接到zk的,也可以在zk下看到kafka集群的信息。
那还能是什么原因导致服务器上可以正常收发数据但是远程客户端就不行呢?查了一圈资料,看到有人说本地没有配置hosts文件会导致没有办法DNS解析到对应的IP,