首页 文章

容器之间的通信连接失败

提问于
浏览
1

我使用docker,一个用于zookeeper,另一个用于kafka,我使用docker ps docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                            NAMES
23dbed8536dc        dc62102ccd75        "/opt/startkafka.sh"     4 minutes ago       Up 4 minutes                                                         inspiring_nobel
8f89ce6a4b57        00088267fb34        "/opt/startzookeeper…"   7 minutes ago       Up 7 minutes        2888/tcp, 192.168.1.5:2181->2181/tcp, 3888/tcp   vigorous_zhukovsky

kafka config连接到zookeeper是

zookeeper_connect=localhost:2181

当我的码头 Worker 运行 Kafka 集装箱

[2018-07-15 01:31:58,369] INFO打开与服务器localhost / 127.0.0.1:2181的套接字连接 . 不会尝试使用SASL进行身份验证(未知错误)(org.apache.zookeeper.ClientCnxn)[2018-07-15 01:31:58,373] WARN会话0x0表示服务器空,意外错误,关闭套接字连接并尝试重新连接(org) .apache.zookeeper.ClientCnxn)java.net.ConnectException:在org.apache的sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)的sun.nio.ch.SocketChannelImpl.checkConnect(本地方法)中拒绝连接.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)org.apache.zookeeper.ClientCnxn $ SendThread.run(ClientCnxn.java:1141)[2018-07-15 01:31:59,479] INFO打开服务器的套接字连接本地主机/ 127.0.0.1:2181 . 不会尝试使用SASL进行身份验证(未知错误)(org.apache.zookeeper.ClientCnxn)[2018-07-15 01:31:59,481] WARN会话0x0表示服务器空,意外错误,关闭套接字连接并尝试重新连接(org) .apache.zookeeper.ClientCnxn)java.net.ConnectException:在org.apache的sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)的sun.nio.ch.SocketChannelImpl.checkConnect(本地方法)中拒绝连接.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)org.apache.zookeeper.ClientCnxn $ SendThread.run(ClientCnxn.java:1141)

我知道kafka容器无法连接到zookeeper更改kafka配置zookeeper_connect = 192.168.1.5:2181

[2018-07-15 01:35:40,833] INFO套接字连接 Build 到192.168.1.5/192.168.1.5:2181,启动会话(org.apache.zookeeper.ClientCnxn)[2018-07-15 01:35:40,836 ] INFO无法从服务器sessionid 0x0读取其他数据,可能服务器已关闭套接字,关闭套接字连接并尝试重新连接(org.apache.zookeeper.ClientCnxn)[2018-07-15 01:35:42,520]错误KafkaServer期间发生致命错误启动 . 准备关机(kafka.server.KafkaServer)kafka.zookeeper.ZooKeeperClientTimeoutException:处于状态时等待连接超时:在kafka.zookeeper.ZooKeeperClient上的CONNECTING $$ anonfun $ kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected $ 1.apply $ mcV $ sp(ZooKeeperClient.scala:225)at kafka.zookeeper.ZooKeeperClient $$ anonfun $ kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected $ 1.apply(ZooKeeperClient.scala:221)at kafka.zookeeper.ZooKeeperClient $$ anonfun $ kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected $ 1.apply(ZooKeeperClient.scala:221)at kafka.utils.CoreUtils $ .inLock(CoreUtils.scala:250)at kafka.zookeeper.ZooKeeperClient.kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected(ZooKeeperClient.scala: 221)at kafka.zoo.ZooKeeperClient . (ZooKeeperClient.scala:95)at kafka.zk.KafkaZkClient $ .apply(KafkaZkClient.scala:1538)at kafka.server.KafkaServer.kafka $ server $ KafkaServer $$ createZkClient $ 1(KafkaServer .scala:345)at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:36) 9)at kafka.server.KafkaServer.startup(KafkaServer.scala:202)at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)at kafka.Kafka $ .main(Kafka.scala:92)at kafka.Kafka .main(Kafka.scala)[2018-07-15 01:35:42,523] INFO关闭(kafka.server.KafkaServer)[2018-07-15 01:35:42,525] WARN(kafka.utils.CoreUtils $) java.lang.NullPointerException at kafka.server.KafkaServer $$ anonfun $ shutdown $ 5.apply $ mcV $ sp(KafkaServer.scala:569)at kafka.utils.CoreUtils $ .swallow(CoreUtils.scala:85)at kafka.server kafka.server.shutdown(KafkaServer.scala:569)位于kafka.server.KafkaServer.startup(KafkaServer.scala:326)位于kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)位于kafka.Kafka $ .main(Kafka) .scala:92)at kafka.Kafka.main(Kafka.scala)[2018-07-15 01:35:42,528] INFO关闭完成(kafka.server.KafkaServer)[2018-07-15 01:35:42,528 ]错误退出 Kafka . (kafka.server.KafkaServerStartable)[2018-07-15 01:35:42,530] INFO关闭(kafka.server.KafkaServer)

我不知道如何让kafka容器连接到zookeeper容器,或测试容器之间的连接 . 谢谢你的任何建议!

1 回答

  • 0

    this example中一样,每个kafka节点应在运行时(在docker run上)引用zookpeepr集群节点的IP:

    docker run -p 9092:9092 \
      -e ZOOKEEPER_CONNECT=10.0.0.1:2181,10.0.0.2:2181,10.0.0.3:2181 \
      -e KAFKA_HOST=host_kafka1 -e KAFKA_PORT=9092 -e BROKER_ID=0 \
      --name kafka1 jeygeethan/kafka-cluster
    

    一般的想法是expressed here

    如果,另外,你有一个外部zookeeper服务器名为 zk-01 ,那么你还需要传递zookeeper.connect

    docker run --tty --interactive --rm \
      --name kafka-01 \
      --publish 9092:9092 \
      --env SERVER__ZOOKEEPER_CONNECT=zk-01 \  <=============
      --env SERVER__BROKER_ID=1 \
      --env SERVER__COMPRESSION_TYPE=gzip \
      --link zk-01 \
      christiangda/kafka bin/kafka-server-start.sh config/server.properties
    

    重点仍然是:zookeeper不在“localhost”上,但可通过其docker容器名访问 .

相关问题