Я пытаюсь запустить 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, который сможет запускать два образа и позволит мне экспериментировать с таблицами и потоками.

Вам не хватает некоторых переменных среды в контейнере 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 (сменить порт)
Обновленный ответ. Вы можете найти значения по умолчанию здесь github.com/confluentinc/kafka-images/blob/7.4.x/local/include/…
KSQLDB: «Брокер недоступен». KAFKA: «Не удалось установить соединение с узлом 1 (localhost/127.0.0.1:29093). Брокер может быть недоступен». Был бы признателен за рабочий образец файла docker-compose.
Ksql не нужно подключаться к порту 29093. Это остальной прокси. В Confluent уже есть примеры создания докеров github.com/confluentinc/cp-all-in-one/blob/7.5.0-post/…
Хорошо, используя указанный пример компоновки докера, изменив изображение Kafka на confluent-local и опустив различные настройки, я заставил его работать. Спасибо @OneCricketeer
Спасибо. Это само решило одну из проблем 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)