#docker #apache-kafka #docker-compose
#docker #apache-kafka #docker-compose
Вопрос:
Я новичок в docker. Я бы хотел контейнеризировать kafka и добавить к нему кластер, скажем, MyCluster, а затем добавить 4 темы, такие как topic_a, topic_b, topic_c и topic_d, в кластер сразу после запуска сервера kafka. Может кто-нибудь, пожалуйста, объясните мне, как это сделать? Я попробовал следующий docker-compose.yml, и я могу запустить контейнерный сервер kafka и менеджер kafka, но я не могу создать кластер / темы программно. Пожалуйста, помогите!
version: "2"
services:
kafkaserver:
image: "spotify/kafka:latest"
container_name: kafka
hostname: kafkaserver
networks:
- kafkanet
ports:
- 2181:2181
- 9092:9092
environment:
ADVERTISED_HOST: kafkaserver
ADVERTISED_PORT: 9092
command:
/opt/kafka_2.11-0.10.1.0/bin/kafka-topics.sh --create --zookeeper kafkaserver:2181 --replication-factor 1 --partitions 1 --topic topic_a
/opt/kafka_2.11-0.10.1.0/bin/kafka-topics.sh --create --zookeeper kafkaserver:2181 --replication-factor 1 --partitions 1 --topic topic_b
/opt/kafka_2.11-0.10.1.0/bin/kafka-topics.sh --create --zookeeper kafkaserver:2181 --replication-factor 1 --partitions 1 --topic topic_c
/opt/kafka_2.11-0.10.1.0/bin/kafka-topics.sh --create --zookeeper kafkaserver:2181 --replication-factor 1 --partitions 1 --topic topic_d
kafka_manager:
image: "mzagar/kafka-manager-docker:1.3.3.4"
container_name: kafkamanager
networks:
- kafkanet
ports:
- 9000:9000
links:
- kafkaserver
environment:
ZK_HOSTS: "kafkaserver:2181"
networks:
kafkanet:
driver: bridge
Комментарии:
1. Этот образ spotify не поддерживался годами. Вероятно, не хотите его использовать
Ответ №1:
Я использую эту конфигурацию в своем файле docker-compose. Весь файл можно найти здесь https://github.com/felipegutierrez/explore-flink/blob/master/operations-playground/docker-compose.yaml
zookeeper:
image: wurstmeister/zookeeper:3.4.6
restart: always
kafka:
image: wurstmeister/kafka:2.12-2.2.1
environment:
KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://:9094
KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9094
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_CREATE_TOPICS: "input:2:1, output:2:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
ports:
- 9094:9094
restart: always
Комментарии:
1. Привет, Фелипе, большое спасибо за ваш ответ. Это сработало как чудо после того, как я изменил свой docker-compose.yml, чтобы использовать KAFKA_CREATE_TOPICS: «topic_a: 1: 1, topic_b: 1: 1, topic_c: 1: 1, topic_d: 1: 1».
2. Приятно 😉 Я рад, что это сработало. Имейте в виду, что очень сложно заставить Kafka работать из коробки в Docker или Kubernetes. Именно поэтому существует множество других проектов, которые реализуют это для нас. Например, Strimzi, Confluent, wurstmeister и т. Д…. Используйте их. И, пожалуйста, рассмотрите возможность проверки моего ответа как принятого 🙂