我想将docker与几个kafka经纪人一起使用。
所以我用这个docker image =>开始了一些测试https://github.com/ches/docker-kafka
对于一个经纪人,所有工作都很好:
我开始我的动物园管理员:
docker run -d --name zookeeper jplock/zookeeper:3.4.6
然后我开始一个kafka实例:
docker run -d --name kafka --link zookeeper:zookeeper ches/kafka
当我创建主题和消息时,所有工作。
现在我创建了第二个kafka实例:
docker run -d --name kafka2 --link zookeeper:zookeeper --expose 9093 --env-file env ches/kafka
我将公开的端口更改为9093和环境变量:
PORT=9093
EXPOSED_PORT=9093
BROKER_ID=2
代理启动良好,我可以创建一个复制主题:
docker -D run --rm ches/kafka kafka-topics.sh --create --topic test2 --replication-factor 2 --partitions 1 --zookeeper $ZK_IP:2181
现在我想发送一些消息:
docker run --rm --interactive ches/kafka kafka-console-producer.sh --topic test2 --broker-list $KAFKA_IP:9092
我收到此错误:
错误生产者与172.17.0.17:9093的连接失败 (kafka.producer.SyncProducer)java.net.ConnectException:Connection 拒绝
码头工人ps给我的信息:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7bba0f3d0db ches/kafka:latest "kafka-console-produ About a minute ago Up About a minute 9092/tcp, 7203/tcp sick_shockley
9c475a659383 ches/kafka:latest "/start.sh" 4 minutes ago Up 4 minutes 7203/tcp, 9092/tcp, 9093/tcp kafka2
63aae4c539ab ches/kafka:latest "/start.sh" 28 minutes ago Up 28 minutes 7203/tcp, 9092/tcp kafka
ab560690e0e7 jplock/zookeeper:3.4.6 "/opt/zookeeper/bin/ 28 minutes ago Up 28 minutes 2181/tcp, 2888/tcp, 3888/tcp zookeeper
所以kafka2似乎是从9093端口开始的。
为什么我会收到此错误?
感谢。
答案 0 :(得分:0)
在zookeeper docker中检查kafka码头工人的广告主机名是什么。他们很可能将docker hash注册为主机名(因为它是docker容器中getInetAdress()的结果)而不是可解析的地址。
如果是这种情况,编辑标准kafka配置以更改advertised.host.name应该可以解决您的问题(这有点烦人,因为您必须在开始时更改它,但您可以从/ etc /中获取它在启动时托管docker容器的文件,它应该是它中第一行的前半部分。)