services:
+ controller:
+ image: apache/kafka:4.1.1
+ environment:
+ KAFKA_NODE_ID: 0
+ KAFKA_PROCESS_ROLES: controller
+ KAFKA_LISTENERS: CONTROLLER://:9093
+ KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
+ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT
+ KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093
+ CLUSTER_ID: 4L6g3nShT-eMCtK--X86sw
+ KAFKA_SHARE_COORDINATOR_STATE_TOPIC_REPLICATION_FACTOR: 1
+ KAFKA_SHARE_COORDINATOR_STATE_TOPIC_MIN_ISR: 1
+ KAFKA_LOG_DIRS: /var/lib/kafka/data
+ volumes:
+ - controller-data:/var/lib/kafka/data
+ stop_grace_period: 120s
+
kafka-1:
image: apache/kafka:4.1.1
environment:
KAFKA_NODE_ID: 1
- KAFKA_PROCESS_ROLES: broker, controller
- KAFKA_LISTENERS: CONTROLLER://:9093, BROKER://:9092, LOCALHOST://:9081
+ KAFKA_PROCESS_ROLES: broker
+ KAFKA_LISTENERS: BROKER://:9092, LOCALHOST://:9081
KAFKA_ADVERTISED_LISTENERS: BROKER://kafka-1:9092, LOCALHOST://localhost:9081
KAFKA_INTER_BROKER_LISTENER_NAME: BROKER
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT, BROKER:PLAINTEXT, LOCALHOST:PLAINTEXT
- KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:9093,2@kafka-2:9093,3@kafka-3:9093
+ KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093
CLUSTER_ID: 4L6g3nShT-eMCtK--X86sw
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
ports:
- 9081:9081
stop_grace_period: 120s
+ depends_on:
+ - controller
kafka-2:
image: apache/kafka:4.1.1
environment:
KAFKA_NODE_ID: 2
- KAFKA_PROCESS_ROLES: broker, controller
- KAFKA_LISTENERS: CONTROLLER://:9093, BROKER://:9092, LOCALHOST://:9082
+ KAFKA_PROCESS_ROLES: broker
+ KAFKA_LISTENERS: BROKER://:9092, LOCALHOST://:9082
KAFKA_ADVERTISED_LISTENERS: BROKER://kafka-2:9092, LOCALHOST://localhost:9082
KAFKA_INTER_BROKER_LISTENER_NAME: BROKER
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT, BROKER:PLAINTEXT, LOCALHOST:PLAINTEXT
- KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:9093,2@kafka-2:9093,3@kafka-3:9093
+ KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093
CLUSTER_ID: 4L6g3nShT-eMCtK--X86sw
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
aliases:
- kafka
stop_grace_period: 120s
+ depends_on:
+ - controller
kafka-3:
image: apache/kafka:4.1.1
environment:
KAFKA_NODE_ID: 3
- KAFKA_PROCESS_ROLES: broker, controller
- KAFKA_LISTENERS: CONTROLLER://:9093, BROKER://:9092, LOCALHOST://:9083
+ KAFKA_PROCESS_ROLES: broker
+ KAFKA_LISTENERS: BROKER://:9092, LOCALHOST://:9083
KAFKA_ADVERTISED_LISTENERS: BROKER://kafka-3:9092, LOCALHOST://localhost:9083
KAFKA_INTER_BROKER_LISTENER_NAME: BROKER
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT, BROKER:PLAINTEXT, LOCALHOST:PLAINTEXT
- KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:9093,2@kafka-2:9093,3@kafka-3:9093
+ KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093
CLUSTER_ID: 4L6g3nShT-eMCtK--X86sw
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
ports:
- 9083:9083
stop_grace_period: 120s
+ depends_on:
+ - controller
cli:
image: juplo/toolbox
- kafka-3
volumes:
+ controller-data:
kafka-1-data:
kafka-2-data:
kafka-3-data: