简化配置
version: "3"
services:
shezheng_zookeeper:
image: docker.io/bitnami/zookeeper:3.8
restart: always
ports:
- "27381:2181"
volumes:
- ./data/zookeeper:/bitnami
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
user: root
network_mode: bridge
shezheng_kafka:
image: docker.io/bitnami/kafka:3.2
restart: always
ports:
- "19092:9092"
volumes:
- ./data/kafka:/bitnami/kafka
user: root
environment:
- KAFKA_CFG_ZOOKEEPER_CONNECT=172.18.103.22:27381
- ALLOW_PLAINTEXT_LISTENER=yes
- AUTO_CREATE_TOPICS=true
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.18.103.22:19092
depends_on:
- shezheng_zookeeper
links:
- shezheng_zookeeper
network_mode: bridge
来源:https://medium.com/@14407744/set-up-kafka-cluster-with-zookeeper-and-without-zookeeper-6bcd96fdc74
原文配置
version: '3'
services:
zoo1:
image: confluentinc/cp-zookeeper:7.2.1
hostname: zoo1
container_name: zoo1
ports:
- "2181:2181"
volumes:
- ./zoo1:/var/lib/zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_SERVERS: zoo1:2888:3888;zoo2:2888:3888;zoo3:2888:3888
zoo2:
image: confluentinc/cp-zookeeper:7.2.1
hostname: zoo2
container_name: zoo2
ports:
- "2182:2182"
volumes:
- ./zoo2:/var/lib/zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2182
ZOOKEEPER_SERVER_ID: 2
ZOOKEEPER_SERVERS: zoo1:2888:3888;zoo2:2888:3888;zoo3:2888:3888
zoo3:
image: confluentinc/cp-zookeeper:7.2.1
hostname: zoo3
container_name: zoo3
ports:
- "2183:2183"
volumes:
- ./zoo3:/var/lib/zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2183
ZOOKEEPER_SERVER_ID: 3
ZOOKEEPER_SERVERS: zoo1:2888:3888;zoo2:2888:3888;zoo3:2888:3888
kafka1:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka1
container_name: kafka1
volumes:
- ./zk-kafka-cluster/kafka1/data:/var/lib/kafka/data
ports:
- "9092:9092"
- "29092:29092"
environment:
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka1:19092,EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092,DOCKER://host.docker.internal:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,DOCKER:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2182,zoo3:2183"
KAFKA_BROKER_ID: 1
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer
KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true"
depends_on:
- zoo1
- zoo2
- zoo3
kafka2:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka2
container_name: kafka2
ports:
- "9093:9093"
- "29093:29093"
volumes:
- ./zk-kafka-cluster/kafka2/data:/var/lib/kafka/data
environment:
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka2:19093,EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9093,DOCKER://host.docker.internal:29093
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,DOCKER:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2182,zoo3:2183"
KAFKA_BROKER_ID: 2
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer
KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true"
depends_on:
- zoo1
- zoo2
- zoo3
kafka3:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka3
container_name: kafka3
ports:
- "9094:9094"
- "29094:29094"
environment:
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka3:19094,EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9094,DOCKER://host.docker.internal:29094
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,DOCKER:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2182,zoo3:2183"
KAFKA_BROKER_ID: 3
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer
KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true"
volumes:
- ./zk-kafka-cluster/kafka3/data:/var/lib/kafka/data
depends_on:
- zoo1
- zoo2
- zoo3
kafka-manager:
image: hlebalbau/kafka-manager:3.0.0.5-7e7a22e
ports:
- "9000:9000"
links:
- zoo1
- kafka1
- zoo3
- zoo2
- kafka2
- kafka3
environment:
ZK_HOSTS: zoo1:2181,zoo2:2182,zoo3:2183
来源:https://www.confluent.io/blog/kafka-listeners-explained/
- LISTENERS are what interfaces Kafka binds to.
- ADVERTISED_LISTENERS are how clients can connect.