На основе этого примера мы создали следующий файл docker-compose, docker-compose.yaml:
version: '2'
services:
kafka1:
image: wurstmeister/kafka
depends_on:
- zoo1
- zoo2
- zoo3
ports:
- "9092:9092"
environment:
KAFKA_LOG_DIRS: /kafka1
KAFKA_BROKER_ID: 1
KAFKA_CREATE_TOPICS: my-topic-1:1:2,my-topic-2:1:2
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ADVERTISED_PORT: 9092
KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
kafka2:
image: wurstmeister/kafka
depends_on:
- zoo1
- zoo2
- zoo3
ports:
- "9093:9092"
environment:
KAFKA_LOG_DIRS: /kafka2
KAFKA_BROKER_ID: 2
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ADVERTISED_PORT: 9093
KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
kafka3:
image: wurstmeister/kafka
depends_on:
- zoo1
- zoo2
- zoo3
ports:
- "9094:9092"
environment:
KAFKA_LOG_DIRS: /kafka3
KAFKA_BROKER_ID: 3
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ADVERTISED_PORT: 9094
KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
zoo1:
image: elevy/zookeeper:latest
environment:
MYID: 1
SERVERS: zoo1,zoo2,zoo3
ports:
- "2181:2181"
- "2888"
- "3888"
zoo2:
image: elevy/zookeeper:latest
environment:
MYID: 2
SERVERS: zoo1,zoo2,zoo3
ports:
- "2182:2181"
- "2888"
- "3888"
zoo3:
image: elevy/zookeeper:latest
environment:
MYID: 3
SERVERS: zoo1,zoo2,zoo3
ports:
- "2183:2181"
- "2888"
- "3888"
Выполнение docker-compose up -d
показывает три экземпляра zookeeper итри брокера кафки запускаются.При попытке подключиться к kafka по адресу localhost: 9092 возникают ошибки.Изучение журналов показывает, что kafka1 запускается нормально, но оба kafka2 и kafka3 имеют следующие ошибки:
WARN [Controller id=2, targetBrokerId=2] Connection to node 2 (localhost/127.0.0.1:9093) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
WARN [Controller id=2, targetBrokerId=3] Connection to node 3 (localhost/127.0.0.1:9094) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)