繁体   English   中英

无法使用在 Docker 上运行的 Kafka 和 Zookeeper 创建 Kafka 主题

[英]Unable to create Kafka topics with Kafka and Zookeeper running on Docker

我有 Kafka 和 Zookeeper 在两个单独的 Docker 容器上运行:

<private-domain>/wurstmeister-kafka:0.10.1.0-2
<private-domain>/wurstmeister-zookeeper:3.4.9

两个容器似乎都已启动,但是当我尝试通过进入第一个容器来创建 Kafka 主题时:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

我收到此错误:

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)
[2020-06-07 03:10:55,293] WARN Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)

请注意,我确实阅读了其他相关问题并尝试将 arguments 添加到命令中,例如-e ZK_HOSTS="localhost:2181" 我知道在我的环境中工作的其他人能够成功运行命令,所以我怀疑这可能是我这边的配置问题。 你能指导一下吗?

编辑:这里是 Docker 撰写文件:

version: '2'
services:
 kafka:
   image: <private-domain>/wurstmeister-kafka:0.10.1.0-2
   container_name: kafka
   ports:
      - 9092:9092
   environment:
     KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
     KAFKA_ADVERTISED_PORT: 9092
     KAFKA_ZOOKEEPER_CONNECT: 127.0.0.1:2181

   restart:
       "unless-stopped"

version: '2'
services:
 zk:
  image: <private-domain>/wurstmeister-zookeeper:3.4.9
  container_name: zk
  ports:
      - "2181:2181"
  restart:
   "unless-stopped"

docker ps的 output :

CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                                NAMES
bf67a49da57a        wurstmeister-kafka:0.10.1.0-2   "start-kafka.sh"         5 months ago        Up 29 minutes       0.0.0.0:9092->9092/tcp                               kafka
ef3e908d82b3        wurstmeister-zookeeper:3.4.9    "/bin/sh -c '/usr/sbin/sshd && bash /usr/bin/start-zk.sh'"   5 months ago        Up 29 minutes       22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp   zk

您有两个 Compose 文件。 因此,您的容器位于不同的网络上,不能相互引用。

您必须在一个文件中添加两个服务,在一个services:阻止,并且只运行一个docker-compose up命令

您可以在 Internet 上找到工作的 compose 文件,或者您可以将minikube / oc与 Kafka Helm Charts 或 Operators 一起使用,这就是大公司在容器中测试 Kafka 的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM