docker - 使用Zookeeper和Kafka在容器之间连接失败

标签 docker apache-kafka docker-compose dockerfile apache-zookeeper

我使用kafka,zookeeper,elasticsearch,kafka的3个节点,zk的3个节点

我在Mac上运行docker-compose.yml123.345.567是以下命令的输出:

ifconfig | grep 'inet 192'| awk '{ print $2}' 

docker-compose.yml是
version: '2'
services:
  zookeeper:
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
    build:
       context: /docker/zookeeper
       dockerfile: Dockerfile
       args:
         clientPort:  2181
         follow_to_leader_port: 2888
         leader_select_port:  3888
    environment:
      service1: 0.0.0.0:2888:3888
      service2: 123.345.567:2889:3889
      service3: 123.345.567:2890:3890
      clientPort: 2181
      ZOO_MY_ID:  1
      initLimit:  2
  zookeeper2:
    ports:
      - "2182:2182"
      - "2889:2889"
      - "3889:3889"
    build:
      context: /docker/zookeeper
      dockerfile: Dockerfile
      args:
        clientPort:  2182
        follow_to_leader_port: 2889
        leader_select_port:  3889
    environment:
      service1: 123.345.567:2888:3888
      service2: 0.0.0.0:2889:3889
      service3: 123.345.567:2890:3890
      clientPort: 2182
      ZOO_MY_ID:  2
      initLimit:  2
  zookeeper3:
    ports:
      - "2183:2183"
      - "2890:2890"
      - "3890:3890"
    build:
      context: /docker/zookeeper
      dockerfile: Dockerfile
      args:
        clientPort:  2183
        follow_to_leader_port: 2890
        leader_select_port:  3890
    environment:
      service1: 123.345.567:2888:3888
      service2: 123.345.567:2889:3889
      service3: 0.0.0.0:2890:3890
      clientPort: 2183
      initLimit:  2
      ZOO_MY_ID:  3
  kafka:
    build:
      context: /docker/kafka
      dockerfile: Dockerfile
    ports:
      - "9096:9096"
    environment:
      broker_id:  1
      listeners:  PLAINTEXT://123.345.567:9096
      advertised_listeners: PLAINTEXT://123.345.567:9096
      zookeeper_connect:  123.345.567:2181,123.345.567:2182,123.345.567:2183/kafka_test
  kafka2:
    build:
      context: /docker/kafka
      dockerfile: Dockerfile
    ports:
      - "9097:9097"
    environment:
      broker_id:  2
      listeners:  PLAINTEXT://123.345.567:9097
      advertised_listeners: PLAINTEXT://123.345.567:9097
      zookeeper_connect:  123.345.567:2181,123.345.567:2182,123.345.567:2183/kafka_test
  kafka3:
    build:
      context: /docker/kafka
      dockerfile: Dockerfile
    ports:
        - "9098:9098"
    environment:
      broker_id:  3
      listeners:  PLAINTEXT://123.345.567:9098
      advertised_listeners: PLAINTEXT://123.345.567:9098
      zookeeper_connect:  123.345.567:2181,123.345.567:2182,123.345.567:2183/kafka_test

docker ps输出
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                                                    NAMES
82c0f30cac77        compose_zookeeper3       "/opt/startzookeeper…"   About an hour ago   Up 40 minutes       0.0.0.0:2183->2183/tcp, 0.0.0.0:2890->2890/tcp, 0.0.0.0:3890->3890/tcp   compose_zookeeper3_1
ebd93d99d0d2        compose_kafka            "/opt/startkafka.sh"     About an hour ago   Up 40 minutes       0.0.0.0:9096->9096/tcp                                                   compose_kafka_1
be56ebaee602        compose_kafka2           "/opt/startkafka.sh"     About an hour ago   Up 40 minutes       0.0.0.0:9097->9097/tcp                                                   compose_kafka2_1
8a68874e52f9        compose_kafka3           "/opt/startkafka.sh"     About an hour ago   Up 40 minutes       0.0.0.0:9098->9098/tcp                                                   compose_kafka3_1
000a686a2772        compose_zookeeper2       "/opt/startzookeeper…"   About an hour ago   Up 40 minutes       0.0.0.0:2182->2182/tcp, 0.0.0.0:2889->2889/tcp, 0.0.0.0:3889->3889/tcp   compose_zookeeper2_1
d3fc5ad9b8f8        compose_zookeeper        "/opt/startzookeeper…"   About an hour ago   Up 40 minutes       0.0.0.0:2181->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp   compose_zookeeper_1

卡夫卡中的一些配置
broker.id=2
listeners=PLAINTEXT://123.345.567:9097
advertised.listeners=PLAINTEXT://123.345.567:9097
zookeeper.connect=123.345.567:2181,123.345.567:2182,123.345.567:2183/kafka_test

zookeeper2中的一些配置
clientPort=2182
server.1=123.345.567:2888:3888
server.2=0.0.0.0:2889:3889
server.3=123.345.567:2890:3890

一些错误日志
[32mzookeeper3_1      |[0m 2018-07-15 09:54:19,083 [myid:3] - INFO  [QuorumPeer[myid=3]/0.0.0.0:2183:FastLeaderElection@813] - New election. My id =  3, proposed zxid=0x100000047
[32mzookeeper3_1      |[0m 2018-07-15 09:54:19,113 [myid:3] - WARN  [RecvWorker:1:QuorumCnxManager$RecvWorker@1025] - Connection broken for id 1, my id = 3, error = 
[32mzookeeper3_1      |[0m java.io.EOFException
[32mzookeeper3_1      |[0m  at java.io.DataInputStream.readInt(DataInputStream.java:392)
[32mzookeeper3_1      |[0m  at org.apache.zookeeper.server.quorum.QuorumCnxManager$RecvWorker.run(QuorumCnxManager.java:1010)
[32mzookeeper3_1      |[0m 2018-07-15 09:54:19,123 [myid:3] - WARN  [RecvWorker:1:QuorumCnxManager$RecvWorker@1028] - Interrupting SendWorker
[32mzookeeper3_1      |[0m 2018-07-15 09:54:19,125 [myid:3] - INFO  [WorkerReceiver[myid=3]:FastLeaderElection@595] - Notification: 1 (message format version), 3 (n.leader), 0x100000047 (n.zxid), 0x1 (n.round), LOOKING (n.state), 3 (n.sid), 0x1 (n.peerEpoch) LOOKING (my state)
[32mzookeeper3_1      |[0m 2018-07-15 09:54:19,126 [myid:3] - WARN  [SendWorker:1:QuorumCnxManager$SendWorker@941] - Interrupted while waiting for message on queue
[32mzookeeper3_1      |[0m java.lang.InterruptedException
[32mzookeeper3_1      |[0m  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)
[32mzookeeper3_1      |[0m  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2088)
[32mzookeeper3_1      |[0m  at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:418)
[32mzookeeper3_1      |[0m  at org.apache.zookeeper.server.quorum.QuorumCnxManager.pollSendQueue(QuorumCnxManager.java:1094)
[32mzookeeper3_1      |[0m  at org.apache.zookeeper.server.quorum.QuorumCnxManager.access$700(QuorumCnxManager.java:74)
[32mzookeeper3_1      |[0m  at org.apache.zookeeper.server.quorum.QuorumCnxManager$SendWorker.run(QuorumCnxManager.java:929)

卡夫卡
[35mkafka_1           |[0m [2018-07-15 09:54:38,137] ERROR [KafkaServer id=1] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
[35mkafka_1           |[0m kafka.common.KafkaException: Socket server failed to bind to 123.345.567:9096: Cannot assign requested address.
[35mkafka_1           |[0m  at kafka.network.Acceptor.openServerSocket(SocketServer.scala:404)
[35mkafka_1           |[0m  at kafka.network.Acceptor.<init>(SocketServer.scala:308)
[35mkafka_1           |[0m  at kafka.network.SocketServer$$anonfun$createAcceptorAndProcessors$1.apply(SocketServer.scala:126)
[35mkafka_1           |[0m  at kafka.network.SocketServer$$anonfun$createAcceptorAndProcessors$1.apply(SocketServer.scala:122)
[35mkafka_1           |[0m  at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
[35mkafka_1           |[0m  at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
[35mkafka_1           |[0m  at kafka.network.SocketServer.createAcceptorAndProcessors(SocketServer.scala:122)
[35mkafka_1           |[0m  at kafka.network.SocketServer.startup(SocketServer.scala:84)
[35mkafka_1           |[0m  at kafka.server.KafkaServer.startup(KafkaServer.scala:247)
[35mkafka_1           |[0m  at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
[35mkafka_1           |[0m  at kafka.Kafka$.main(Kafka.scala:92)
[35mkafka_1           |[0m  at kafka.Kafka.main(Kafka.scala)
[35mkafka_1           |[0m Caused by: java.net.BindException: Cannot assign requested address
[35mkafka_1           |[0m  at sun.nio.ch.Net.bind0(Native Method)
[35mkafka_1           |[0m  at sun.nio.ch.Net.bind(Net.java:433)
[35mkafka_1           |[0m  at sun.nio.ch.Net.bind(Net.java:425)
[35mkafka_1           |[0m  at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
[35mkafka_1           |[0m  at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
[35mkafka_1           |[0m  at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
[35mkafka_1           |[0m  at kafka.network.Acceptor.openServerSocket(SocketServer.scala:400)
[35mkafka_1           |[0m  ... 11 more
[35mkafka_1           |[0m [2018-07-15 09:54:38,144] INFO [KafkaServer id=1] shutting down (kafka.server.KafkaServer)
[35mkafka_1           |[0m [2018-07-15 09:54:38,147] INFO [SocketServer brokerId=1] Stopping socket server request processors (kafka.network.SocketServer)
[35mkafka_1           |[0m [2018-07-15 09:54:38,149] INFO [SocketServer brokerId=1] Stopped socket server request processors (kafka.network.SocketServer)
[35mkafka_1           |[0m [2018-07-15 09:54:38,160] INFO Shutting down. (kafka.log.LogManager)
[35mkafka_1           |[0m [2018-07-15 09:54:38,208] INFO Shutdown complete. (kafka.log.LogManager)

我想知道这些容器是否不需要ip:123.345.567。

也许他们需要一些inner ip在容器之间进行通信?

还是我需要一些命令来检查或进行docker网络设置?

感谢您的任何建议!

最佳答案

首先,123.345.567不是四个数字,因此这不是有效的虚假IP

Docker compose使用compose服务名称为您建立了一个DNS网络。您将永远不需要Mac在容器内的外部地址。

对于完整运行的Compose文件,look at Confluent's。从一个Zookeeper和Broker开始,然后开始工作(Kafka不会在具有多个容器的单台计算机上更快地运行,因为它们都共享一个磁盘)

我还建议不要将随机chroot仅添加到您的任何一个Zookeeper(/kafka_test)

关于docker - 使用Zookeeper和Kafka在容器之间连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51347448/

相关文章:

windows - 如何使用 VS2017 和 Docker 集成为 Windows 构建 Docker 镜像?

java - 为kafka java应用程序配置log4j

docker - 在puckel/docker-airflow中启用凭据

java - Spark Streaming 除了字数统计之外还能做其他事情吗?

kubernetes - Kafka 集群丢失或重复消息

mysql - docker 撰写 spring boot 日志

django - Docker-compose 添加 Postgres 密码

docker - 使用 Docker 在 Windows 中安装 CentOS 7 桌面

postgresql - Docker:Springboot容器无法连接到PostgreSql容器连接错误

bash - 挂载卷中的Docker用户权限