问题描述
嗨,我创建了新的 zookeeper 容器和 kafka 容器
我用这个命令运行zookeeper
docker run -d \
--name zookeeper \
-p 2181:2181 \
jplock/zookeeper
我用这个命令运行 kafka
docker run -d \
--name kafka \
-p 7203:7203 \
-p 9092:9092 \
-e KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 \
-e ZOOKEEPER_IP=127.0.0.1 \
ches/kafka
并使用此命令创建新主题
docker run \
--rm ches/kafka kafka-topics.sh \
--create \
--topic senz \
--replication-factor 1 \
--partitions 1 \
--zookeeper 127.0.0.1:2181
但是当创建 kafka 新的 kafka 主题时,我遇到了这个错误并停止了 kafka 容器
[2021-03-03 17:08:35,797] WARN Session 0x0 for server null,unexpected error,closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
java.net.ConnectException: Connection refused
at sun.nio.ch.socketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.socketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141)
[2021-03-03 17:08:36,898] WARN Session 0x0 for server null,closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
java.net.ConnectException: Connection refused
at sun.nio.ch.socketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.socketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141)
[2021-03-03 17:08:38,006] WARN Session 0x0 for server null,closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
java.net.ConnectException: Connection refused
at sun.nio.ch.socketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.socketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141)
Exception in thread "main" org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server '127.0.0.1:2181' with timeout of 30000 ms
at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:1233)
at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:157)
at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:131)
at kafka.utils.ZkUtils$.createZkClientAndConnection(ZkUtils.scala:106)
at kafka.utils.ZkUtils$.apply(ZkUtils.scala:88)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
at kafka.admin.TopicCommand.main(TopicCommand.scala)
感谢您的帮助。
解决方法
网络中我们必须将网络指针指向zookeeper和kafka的解决方案
解决办法是:
**
1.通过 docker 创建新网络
**
docker network create kafka-net
2.现在像这样将您的网络加入到 zookeeper 和 kafka 中:
docker run -d\
--name zookeeper \
--network kafka-net
-p 2181:2181 \
jplock/zookeeper
和 kafka 像这样:
docker run -d \
--name kafka \
--network kafka-net
-p 7203:7203 \
-p 9092:9092 \
-e KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 \
-e ZOOKEEPER_IP=zookeeper \
ches/kafka