我已将Kafka支持集成到我们的服务器中并进行了测试。它在我的开发人员环境中运行良好,但其他开发人员无法在开发人员环境中运行它。问题类似于我在自己的开发人员环境中遇到的问题,但我无法理解为什么它在我的机器上工作而不是他们的工作。
基本上我们在docker-compose堆栈中运行Kafka。在这两种环境中docker-compose ps
都显示正在运行的相同配置。
$ docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------------------------------------
localdockerdevelop_kafka-1_1 start-kafka.sh Up 0.0.0.0:9092->9092/tcp
localdockerdevelop_kafka-2_1 start-kafka.sh Up 0.0.0.0:9093->9092/tcp
localdockerdevelop_kafka-3_1 start-kafka.sh Up 0.0.0.0:9094->9092/tcp
localdockerdevelop_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
localdockerdevelop_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
localdockerdevelop_zookeeper_1 /bin/sh -c /usr/sbin/sshd ... Up 0.0.0.0:2181->2181/tcp, 22/tcp, 2888/tcp, 3888/tcp
如果您telnet 127.0.0.1 9092
连接到Kafka代理,则在这两种环境中。但是,在他们的环境中,当Kafka Admin客户端尝试连接到bootstrap.servers= "127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094"
时,它会超时,但对于我的环境,它会立即连接。我们都是从Git中的develop
分支运行的,所以我们应该运行相同的环境。
另一个测试:我在我的机器上运行了docker-compose堆栈,当我运行我们的服务器时,它连接正常。当我的同事配置他的bootstrap.servers使用我的ip-address时,他看到同样的问题,即使他可以telnet到我的机器上的代理。
任何人都可以建议任何其他诊断提示和技巧来弄清楚为什么Kafka Admin Client无法连接到经纪人吗?
答案 0 :(得分:0)
好的,发现了问题。我正在关注https://docs.python.org/3/reference/datamodel.html#object.repr上的示例,并尝试使用KAFKA_ADVERTISED_HOST_NAME的简单路径。 Kafka已弃用advertised.host.name并尝试在多代理配置中使用它是有问题的。
之前我通过向/ etc / hosts添加代理主机名来解决这个问题,这个kludge工作,但我忘了我正在使用kludge并没有告诉其他开发人员。团队不想编辑/ etc / hosts,因此我正在开发一个不涉及advertised.host.name的解决方案