带有 kafka docker 图像的 zookeeper

问题描述

嗨,我创建了新的 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