简化配置:
version: "3"
services:
shezheng_kafka:
image: 'bitnami/kafka:3.2'
hostname: shezheng_kafka
container_name: shezheng_kafka
volumes:
- ./data/kafka:/bitnami/kafka
user: root
network_mode: bridge
ports:
- '19092:9092'
environment:
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 # 服务端监听的地址
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://shezheng_kafka:9092
- KAFKA_BROKER_ID=1
- KAFKA_KRAFT_CLUSTER_ID=LelM2dIFQkiUFvXCEcqRWA
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@shezheng_kafka:9093
- ALLOW_PLAINTEXT_LISTENER=yes
- AUTO_CREATE_TOPICS=true
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.18.103.22:19092 # 客户端连接的地址
- KAFKA_NUM_PARTITIONS=51
来源:https://medium.com/@14407744/set-up-kafka-cluster-with-zookeeper-and-without-zookeeper-6bcd96fdc74
不依赖于 zookeeper
的方案。
version: "3"
services:
kafka1:
image: 'bitnami/kafka:3.3.1'
hostname: kafka1
container_name: kafka1
volumes:
- ./kafka-cluster-without-zk/kafka1/data:/var/lib/kafka/data
user: root
ports:
- '9092:9092'
environment:
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka1:9092
- KAFKA_BROKER_ID=1
- KAFKA_KRAFT_CLUSTER_ID=LelM2dIFQkiUFvXCEcqRWA
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093;2@kafka2:9095;3@kafka3:9097
- ALLOW_PLAINTEXT_LISTENER=yes
kafka2:
image: 'bitnami/kafka:3.3.1'
hostname: kafka2
container_name: kafka2
volumes:
- ./kafka-cluster-without-zk/kafka2/data:/var/lib/kafka/data
user: root
ports:
- '9094:9094'
environment:
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9094,CONTROLLER://:9095
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka2:9094
- KAFKA_BROKER_ID=2
- KAFKA_KRAFT_CLUSTER_ID=LelM2dIFQkiUFvXCEcqRWA
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093;2@kafka2:9095;3@kafka3:9097
- ALLOW_PLAINTEXT_LISTENER=yes
kafka3:
image: 'bitnami/kafka:3.3.1'
hostname: kafka3
container_name: kafka3
volumes:
- ./kafka-cluster-without-zk/kafka3/data:/var/lib/kafka/data
user: root
ports:
- '9096:9096'
environment:
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9096,CONTROLLER://:9097
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka3:9096
- KAFKA_BROKER_ID=3
- KAFKA_KRAFT_CLUSTER_ID=LelM2dIFQkiUFvXCEcqRWA
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093;2@kafka2:9095;3@kafka3:9097
- ALLOW_PLAINTEXT_LISTENER=yes
来源:https://www.confluent.io/blog/kafka-listeners-explained/
- LISTENERS are what interfaces Kafka binds to.
- ADVERTISED_LISTENERS are how clients can connect.