У меня проблема с запуском брокера Kafka в контейнере Docker.
Я загрузил и распаковал tar-архив Kafka 2.12-2.4.1.
Я могу запускать брокеры Zookeeper и Kafka из командной строки, успешно создавая и получая сообщения. Когда я создаю контейнер docker с помощью Zookeeper, я могу запустить его с помощью брокера Kafka, запущенного из командной строки, и снова успешно создавать и принимать сообщения. Когда я помещаю брокера в контейнер docker, потребители и производители не могут найти брокера для подключения.
Я проверил, есть ли у Zookeeper подключенный брокер: команда zookeeper "dump" ниже
echo dump | nc localhost 2181
возвращает
SessionTracker dump:
Session Sets (3)/(1):
0 expire at Thu May 28 09:53:33 GMT 2020:
0 expire at Thu May 28 09:53:36 GMT 2020:
1 expire at Thu May 28 09:53:39 GMT 2020:
0x10002dfed700008
ephemeral nodes dump:
Sessions with Ephemerals (1):
0x10002dfed700008:
/controller
/brokers/ids/0
Connections dump:
Connections Sets (2)/(2):
0 expire at Thu May 28 09:53:37 GMT 2020:
2 expire at Thu May 28 09:53:47 GMT 2020:
ip: /172.18.0.1:55656 sessionId: 0x0
ip: /172.18.0.5:48474 sessionId: 0x10002dfed700008
, что, на мой неподготовленный глаз, похоже, что у Zookeeper есть зарегистрированный брокер.
Я могу успешно перечислить темы с помощью команды
kafka-topics.sh --list --zookeeper localhost:2181
и когда я запускаю команду
netstat -plnt
, я вижу, что у меня есть прослушиватели на портах 2181 и 9092, как показано ниже
tcp6 0 0 :::9092 :::* LISTEN 54661/docker-proxy
tcp6 0 0 :::2181 :::* LISTEN 47872/docker-proxy
Однако, когда Я пытаюсь подключиться к потребителю с помощью команды
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic aaaa
. Я получаю сообщение об ошибке
WARN [Consumer clientId=consumer-console-consumer-8228-1, groupId=console-consumer-8228] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
, которое, похоже, указывает на то, что клиент не может связаться с брокером.
Я пробовал несколько различных вариантов прослушивателей и рекламируемых прослушивателей в файле конфигурации брокера, установив для них значения localhost и 127.0.0.1, но безрезультатно.
Я уверен, что мне не хватает что-то простое: кто-нибудь может помочь?