Kafka - ошибка Docker: kafka.zookeeper.ZooKeeperClientTimeoutException в оболочке Kafka - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь запустить Кафку с помощью докера.

Я запустил службу kafka.

docker-compose ps

     Name                        Command               State                         Ports                       

kafka-docker_kafka_1 start-kafka.sh Up 0.0.0.0:9092->9092/tcp
kafka-docker_zookeeper_1 / bin / sh -c / usr / sbin / sshd ... Up 0.0.0.0:2181->2181/tcp, 22 / tcp, 2888 / tcp, 3888 / tcp

docker-compose.yml

catdocker-compose.yml

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    build: .
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS: 36000
      KAFKA_ADVERTISED_PORT: 9092
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Когда я пытался создать тему, войдя в оболочку, выдает следующую ошибку.

. / Start-kafka-shell.sh kafka zookeeper : 2181

bash-4.4 # $ KAFKA_HOME / bin / kafka-topics.sh -create --topic sentiment --partitions 1 --zookeeper $ ZK --replication-factor 1

[2019-02-12 08:07:59,097] WARN Session 0x0 for server zookeeper:2181, unexpected error, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
java.nio.channels.UnresolvedAddressException
    at sun.nio.ch.Net.checkAddress(Net.java:101)
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622)
    at org.apache.zookeeper.ClientCnxnSocketNIO.registerAndConnect(ClientCnxnSocketNIO.java:277)
    at org.apache.zookeeper.ClientCnxnSocketNIO.connect(ClientCnxnSocketNIO.java:287)
    at org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1021)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1064)

Пробовал 2 варианта:

  1. Получено исключение тайм-аута при изменении имени хоста: zookeeper (хотя я упоминал то же самое в docker-compose.yml) для ip: 0.0.0.0

. / Start-kafka-shell.sh kafka 0.0.0.0 : 2181

bash-4.4 # $ KAFKA_HOME / bin / kafka-topics.sh --создать --topic sentiment --partitions 1 --zookeeper $ ZK --replication-фактор 1

Exception in thread "main" kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
    at kafka.zookeeper.ZooKeeperClient.$anonfun$waitUntilConnected$3(ZooKeeperClient.scala:268)
    at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:251)
    at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:264)
    at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:97)
    at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1694)
    at kafka.admin.TopicCommand$.main(TopicCommand.scala:57)
    at kafka.admin.TopicCommand.main(TopicCommand.scala)
Чтобы избежать вышеуказанной ошибки, я увеличил параметр тайм-аута с 6000 до 36000 в docker-compose.yml -> KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS: 36000

У меня та же ошибка тайм-аута.Пожалуйста, дайте мне знать, если кто-то может помочь.

1 Ответ

0 голосов
/ 13 февраля 2019

Есть много готовых изображений Кафки.Трудно сказать, что вы на самом деле пытаетесь сделать, но, кажется, вы восстанавливаете образ?Или строит свой?

Вам определенно не нужен адрес zookeeper в качестве параметра для запуска Kafka, хотя

При этом 0.0.0.0 не является реальным адресом для подключения.Он часто используется как адрес привязки , что означает «разрешить все подключения к этому серверу»

Тогда zookeeper имя службы разрешается только в сети Docker, поэтому это может объяснить, почему вам нужно--net, но это подразумевает, что вы используете docker run для чего-то, что опять-таки не ясно, если вы используете Compose

Если вы хотите попасть в оболочку контейнера, вы должны простоиспользовать docker-compose exec kafka bash, а Zookeeper уже является переменной окружения этого контейнера

Так что-то вроде

docker-compose exec kafka bash -c '$KAFKA_HOME/bin/kafka-topics.sh --create --topic sentiment --partitions 1 --zookeeper $KAFKA_ZOOKEEPER_CONNECT --replication-factor 1'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...