Landoop / fast-data-dev: не удалось установить соединение с узлом -1 - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь использовать Кафку с образом докера Landoop/fast-data-dev Я выполнил следующие команды

Я запустил Docker-контейнер

docker run --rm -it -p 2183:2181 -p 3030:3030 -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 9093:9092 -e ADV_HOST=127.0.0.1 landoop/fast-data-dev

тогда я запустил команду bash

docker run --rm -it --net=host landoop/fast-data-dev bash

тогда я создал тему

kafka-topics --create --zookeeper localhost:2183 --replication-factor 1 --partitions 3 --topic my-topic

тогда я попытался отправить данные в тему

kafka-console-producer --broker-list localhost:9093 --topic my-topic

но я получаю следующую ошибку

[2018-10-27 20: 08: 24,655] WARN [Producer clientId = console-provider] Не удалось установить соединение с узлом -1. Брокер может быть недоступен. (Org.apache.kafka.clients.NetworkClient)

ps: из-за проблемы "порт уже выделен" я изменил отображения kafka и zookeeper на 9093 и 2183

1 Ответ

0 голосов
/ 28 октября 2018

Вы запускаете команды CLI внутри контейнера , поэтому вы не можете просто переназначить порт на хосте.Вам также нужно будет установить порт в контейнере, на котором работает Kafka, используя в этом случае переменную BROKER_PORT.

docker run --rm -it -p 2183:2181 -p 3030:3030 -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 9093:9093 -e ADV_HOST=127.0.0.1 -e BROKER_PORT=9093 landoop/fast-data-dev

В противном случае вам все равно придется использовать localhost:9092 внутри контейнера, даже если внешний порт равен 9093, но вам все равно не нужно было добавлять флаги -p, чтобы выставитьвнешние порты, если вы собираетесь запустить bash внутри контейнера, чтобы что-то делать.

Если вы хотите использовать приложения вне контейнера , см. этот блог , в котором используются контейнеры Confluent, но применяется та же концепция, хотя переменные landoop отличаются

...