У меня есть три физических узла с установленным Docker на каждом из них. Я настроил Marathon, Flink, Mesos, Zookeeper и Hadoop на каждом докере. Они работают очень хорошо. Я должен распространять данные в кластер Flink, поэтому мне нужен Кафка.
Zookeeper уже запущен; Итак, Кафка запускается без ошибок. Проблема в том, что в этой ситуации, когда я хочу создать тему Kafka, я вижу эту ошибку, потому что я не запускаю Zookeeper в папке Kafka:
Исключение в потоке "main" kafka.zookeeper.ZooKeeperClientTimeoutException: Превышен тайм-аут ожидания соединения в состоянии: CONNECTING
at kafka.zookeeper.ZooKeeperClient $$ anonfun $ kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected $ 1.применить $ mcV $ sp (ZooKeeperClient.scala: 230)
at kafka.zookeeper.ZooKeeperClient $$ anonfun $ kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected $ 1.apply (ZooKeeperClient.scala: 226)
at kafka.zookeeper.ZooKeeperClient $$ anonfun $ kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected $ 1.apply (ZooKeeperClient.scala: 226)
в kafka.utils.CoreUtils $ .inLock (CoreUtils.scala: 251)
в kafka.zookeeper.ZooKeeperClient.kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected (ZooKeeperClient.scala: 226)
в kafka.zookeeper.ZooKeeperClient. (ZooKeeperClient.scala: 95)
в kafka.zk.KafkaZkClient $ .apply (KafkaZkClient.scala: 1580)
на kafka.admin.TopicCommand $ .main (TopicCommand.scala: 57)
at kafka.admin.TopicCommand.main (TopicCommand.scala)
Кроме того, я изменяю свой план использования Zookeeper в папке Kafka. Для этого я настраиваю Zookeeper в папке Kafka с новыми портами, такими как 2186,2889,3889 . Но когда я запускаю Zookeeper с этой командой:
/home/kafka_2.11-2.0.0/bin/zookeeper-server-start.sh /home/kafka_2.11-2.0.0/config/zookeeper.properties
Я получаю эту ошибку:
ПРЕДУПРЕЖДЕНИЕ. Невозможно открыть канал для 2 по адресу выборов /10.32.0.3:3889 (org.apache.zookeeper.server.quorum.QuorumCnxManager)
java.net.ConnectException: соединение отклонено (соединение отклонено)
на java.net.PlainSocketImpl.socketConnect (собственный метод)
на java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:350)
на java.net.AbstractPlainSocketImpl.connectToAddress (AbstractPlainSocketImpl.java:206)
на java.net.AbstractPlainSocketImpl.connect (AbstractPlainSocketImpl.java:188)
в java.net.SocksSocketImpl.connect (SocksSocketImpl.java:392)
на java.net.Socket.connect (Socket.java:589)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne (QuorumCnxManager.java:558)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend (QuorumCnxManager.java:534)
at org.apache.zookeeper.server.quorum.FastLeaderElection $ Messenger $ WorkerSender.process (FastLeaderElection.java:454)
at org.apache.zookeeper.server.quorum.FastLeaderElection $ Messenger $ WorkerSender.run (FastLeaderElection.java:435)
at java.lang.Thread.run (Thread.java:748)
Конфигурация zookeeper, которая находится в "/home/zookeeper-3.4.14/conf/zoo.cfg" в первом узле:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper/data
clientPort=2181
server.1=0.0.0.0:2888:3888
server.2=10.32.0.3:2888:3888
server.3=10.32.0.4:2888:3888
Конфигурация Zookeeper, которая находится в папке Kafka, выглядит так для первого узла:
dataDir=/tmp/zookeeper/data
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2186
server.1=0.0.0.0:2889:3889
server.2=10.32.0.3:2889:3889
server.3=10.32.0.4:2889:3889
Не могли бы вы рассказать мне, как запустить двух зоопарков в один докер-контейнер? Кстати, я не могу использовать другой контейнер для кластера Kafka, так как мне нужны два контейнера с одним общим IP-адресом.
Любая помощь будет очень признательна.