Запустить несколько узлов kafka на локальном хосте (docker-compose)

Я пытаюсь запустить докер-кафку и масштабировать ее на своем локальном хосте. Вот мой исходный файл docker-compose.yml:

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
        KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
        KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092
        KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

Это отлично работает, когда я запрашиваю BOOTSTRAP_SERVERS_CONFIG="PLAINTEXT://127.0.0.1:9092".

Очевидно, что если я использую docker-compose scale kafka=3, я получу ошибку, потому что порт 9092 на локальном хосте уже используется.

Согласно документу: https://github.com/wurstmeister/kafka-docker/wiki/Подключение, я пытался изменить порт следующим образом:

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092"
    environment:
        KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
        KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092
        KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

При этом, если я запрошу с BOOTSTRAP_SERVERS_CONFIG="PLAINTEXT://127.0.0.1:9092", мой производитель не сможет отправить сообщение из-за тайм-аута. Это означает, что точка входа не KAFKA_LISTENERS или KAFKA_ADVERTISED_LISTENERS.

java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

Если я использую порт, мой докер был привязан (32001): BOOTSTRAP_SERVERS_CONFIG="PLAINTEXT://127.0.0.1:32001" При попытке отправить сообщение я получил другое сообщение об ошибке:

java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for demo-0:120001 ms has passed since batch creation

Я предполагаю, что есть что-то странное в KAFKA_LISTENERS и KAFKA_ADVERTISED_LISTENERS, но я не могу найти способ заставить это работать.

В моей последней попытке я сделал:

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9093:9092"
    environment:
        KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 # or PLAINTEXT://0.0.0.0:9093
        KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092 # or PLAINTEXT://127.0.0.1:9093 
        KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

Но это ничего не дало. Если у кого-то есть идея, дайте мне знать.

Вам нужно более четко определить, что вы подразумеваете под «у меня ничего не работает». Вы получаете сообщение об ошибке? Если да, то? Лог-файлы? и Т. Д.

Robin Moffatt 29.01.2019 00:19

Мой Producer просто не может подключиться к kafka при попытке отправить свое сообщение (получил тайм-аут). Я запущу это снова, чтобы я мог написать точные журналы.

DeepProblems 29.01.2019 10:16
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
2
2
290
0

Другие вопросы по теме