Как запустить KSQLDB вместе с сервером Kafka с помощью Docker Compose

Я пытаюсь запустить KSQLDB вместе с Kafka, но KSQLDB отказывается подключаться к моему серверу Kafka.

kafka1-kafka-1   | [2024-02-19 17:08:15,202] INFO [BrokerLifecycleManager id=1] Unable to register broker 1 because the controller returned error DUPLICATE_BROKER_REGISTRATION (kafka.server.BrokerLifecycleManager)
kafka1-ksqldb-1  | [2024-02-19 17:08:16,320] INFO [AdminClient clientId=adminclient-1] Node -1 disconnected. (org.apache.kafka.clients.NetworkClient)
kafka1-ksqldb-1  | [2024-02-19 17:08:16,321] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (kafka/172.18.0.2:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
kafka1-kafka-1   | [2024-02-19 17:08:16,809] INFO [QuorumController id=1] registerBroker: failed with DuplicateBrokerRegistrationException in 293 us. Reason: Another broker is registered with that broker id. (org.apache.kafka.controller.QuorumController)
kafka1-kafka-1   | [2024-02-19 17:08:16,813] INFO [BrokerLifecycleManager id=1] Unable to register broker 1 because the controller returned error DUPLICATE_BROKER_REGISTRATION (kafka.server.BrokerLifecycleManager)

Мой docker-compose.yaml выглядит так:

version: "3.1"
services:
  kafka:
    image: confluentinc/confluent-local:latest
    ports:
      - "9092:9092"
      - "8082:8082"
      - "29093:29093"
  ksqldb:
    image: confluentinc/cp-ksqldb-server:7.5.3
    environment:
      - KSQL_BOOTSTRAP_SERVERS=kafka:9092
      - KSQL_KSQL_SERVICE_ID=ksqldb_
      - KSQL_KSQL_QUERIES_FILE=/opt/data/queries.sql
      - KSQL_LISTENERS=http://0.0.0.0:8088/
    depends_on:
      - kafka

По сути, мне нужен файл docker-compose, который сможет запускать два образа и позволит мне экспериментировать с таблицами и потоками.

Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
0
0
165
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не хватает некоторых переменных среды в контейнере Kafka.

KAFKA_LISTENERS: "PLAINTEXT://0.0.0.0:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092" 
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092"

По умолчанию используется локальный хост, поэтому другие контейнеры не могут подключиться.

И нужно KSQL_BOOTSTRAP_SERVERS=kafka:29092 на ksql (сменить порт)

Спасибо. Это само решило одну из проблем Kafka. К сожалению, KSQLDB по-прежнему не может подключиться: kafka1-ksqldb-1 | [2024-02-19 18:43:37,421] ИНФОРМАЦИЯ [AdminClient clientId=adminclient-1] Узел -1 отключен. (org.apache.kafka.clients.NetworkClient) kafka1-ksqldb-1 | [2024-02-19 18:43:37,422] ПРЕДУПРЕЖДЕНИЕ [AdminClient clientId=adminclient-1] Не удалось установить соединение с узлом -1 (kafka/172.22.0.2:29092). Брокер может быть недоступен. (org.apache.kafka.clients.NetworkClient)

Nikolaj 19.02.2024 19:45

Обновленный ответ. Вы можете найти значения по умолчанию здесь github.com/confluentinc/kafka-images/blob/7.4.x/local/includ‌​e/…

OneCricketeer 19.02.2024 19:58

KSQLDB: «Брокер недоступен». KAFKA: «Не удалось установить соединение с узлом 1 (localhost/127.0.0.1:29093). Брокер может быть недоступен». Был бы признателен за рабочий образец файла docker-compose.

Nikolaj 19.02.2024 20:18

Ksql не нужно подключаться к порту 29093. Это остальной прокси. В Confluent уже есть примеры создания докеров github.com/confluentinc/cp-all-in-one/blob/7.5.0-post/…

OneCricketeer 19.02.2024 21:43

Хорошо, используя указанный пример компоновки докера, изменив изображение Kafka на confluent-local и опустив различные настройки, я заставил его работать. Спасибо @OneCricketeer

Nikolaj 21.02.2024 19:59

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