Докер производителя кафки не может подключиться к докеру брокера - AWS - PullRequest
0 голосов
/ 26 июня 2019

Вот файл yml, который используется для вызова докер-контейнеров в экземпляре AWS для kafka и zookeeper:

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
    - "2181:2181"
  kafka:
    build: .
    ports:
    - "9092:9092"
  environment:
    KAFKA_ADVERTISED_HOSTNAME: <machines private ip>
    KAFKA_LISTENERS: PLAINTEXT://:9092
    KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://<machines private ip>:9092


    KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock

Когда я запускаю команду docker-compose с указанным выше файлом, это приводит к созданию Docker-сети с именем kafka-docker с контейнером kafka и контейнером zookeeper.

Теперь в докерной сети по умолчанию bridge у меня есть другой контейнер со следующим фрагментом кода nodejs:

const Producer = kafka.Producer;
const client = new kafka.Client("<machines private ip>:2181");

const producer = new Producer(client);
const kafka_topic = 'hello-topic';

event = ...
event_payload = ...
let payloads = [{topic:kafka_topic ,messages:JSON.stringify(event_payload),  partition: 0 }]
let push_status = producer.send(payloads, (err, data) => {
       if (err) {
            console.log(err);
       } else {
            console.log('[kafka-producer -> '+kafka_topic+']: broker update success');
            }
        });

console.log(err) выдает мне ошибку «Брокер недоступен». Может кто-нибудь сказать, пожалуйста, что не так с моей настройкой?

1 Ответ

0 голосов
/ 26 июня 2019

Обратите внимание на строку:

const client = new kafka.Client("<machines private ip>:2181");

Это не тот порт, который слушает Кафка.Кафка прослушивает соединения через порт 9092:

const client = new kafka.Client("<machines private ip>:9092");

Должно работать после этого изменения.

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