我使用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 回答
与this example中一样,每个kafka节点应在运行时(在docker run上)引用zookpeepr集群节点的IP:
一般的想法是expressed here:
如果,另外,你有一个外部zookeeper服务器名为
zk-01
,那么你还需要传递zookeeper.connect重点仍然是:zookeeper不在“localhost”上,但可通过其docker容器名访问 .