94 lines
3.5 KiB
YAML
94 lines
3.5 KiB
YAML
services:
|
|
broker1:
|
|
image: apache/kafka:latest
|
|
container_name: broker1
|
|
environment:
|
|
KAFKA_KRAFT_CLUSTER_ID: kafka-cluster-3-nodes # Define your cluster ID at .env file
|
|
KAFKA_NODE_ID: 1
|
|
KAFKA_PROCESS_ROLES: "broker,controller"
|
|
KAFKA_LISTENERS: INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:19092
|
|
KAFKA_ADVERTISED_LISTENERS: INTERNAL://broker1:9092,EXTERNAL://localhost:19092
|
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
|
|
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
|
|
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
|
|
KAFKA_LOG_DIRS: /var/lib/kafka/data
|
|
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
|
|
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
|
|
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
|
|
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@broker1:9093,2@broker2:9093,3@broker3:9093
|
|
volumes:
|
|
- /data/kafka/broker/01:/var/lib/kafka/data
|
|
networks:
|
|
- kafka-net
|
|
ports:
|
|
- "19092:19092" # Expose external port for broker1
|
|
restart: unless-stopped
|
|
|
|
broker2:
|
|
image: apache/kafka:latest
|
|
container_name: broker2
|
|
environment:
|
|
KAFKA_KRAFT_CLUSTER_ID: kafka-cluster-3-nodes # Define your cluster ID at .env file
|
|
KAFKA_NODE_ID: 2
|
|
KAFKA_PROCESS_ROLES: "broker,controller"
|
|
KAFKA_LISTENERS: INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:19093
|
|
KAFKA_ADVERTISED_LISTENERS: INTERNAL://broker2:9092,EXTERNAL://localhost:19093
|
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
|
|
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
|
|
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
|
|
KAFKA_LOG_DIRS: /var/lib/kafka/data
|
|
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
|
|
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
|
|
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
|
|
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@broker1:9093,2@broker2:9093,3@broker3:9093
|
|
volumes:
|
|
- /data/kafka/broker/02:/var/lib/kafka/data
|
|
networks:
|
|
- kafka-net
|
|
ports:
|
|
- "19093:19093" # Expose external port for broker2
|
|
restart: unless-stopped
|
|
|
|
broker3:
|
|
image: apache/kafka:latest
|
|
container_name: broker3
|
|
environment:
|
|
KAFKA_KRAFT_CLUSTER_ID: kafka-cluster-3-nodes # Define your cluster ID at .env file
|
|
KAFKA_NODE_ID: 3
|
|
KAFKA_PROCESS_ROLES: "broker,controller"
|
|
KAFKA_LISTENERS: INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:19094
|
|
KAFKA_ADVERTISED_LISTENERS: INTERNAL://broker3:9092,EXTERNAL://localhost:19094
|
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
|
|
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
|
|
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
|
|
KAFKA_LOG_DIRS: /var/lib/kafka/data
|
|
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
|
|
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
|
|
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
|
|
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@broker1:9093,2@broker2:9093,3@broker3:9093
|
|
volumes:
|
|
- /data/kafka/broker/03:/var/lib/kafka/data
|
|
networks:
|
|
- kafka-net
|
|
ports:
|
|
- "19094:19094" # Expose external port for broker3
|
|
restart: unless-stopped
|
|
|
|
kafdrop:
|
|
image: obsidiandynamics/kafdrop:latest
|
|
networks:
|
|
- kafka-net
|
|
depends_on:
|
|
- broker1
|
|
- broker2
|
|
- broker3
|
|
ports:
|
|
- 19000:9000
|
|
environment:
|
|
KAFKA_BROKERCONNECT: broker1:9092,broker2:9092,broker3:9092
|
|
restart: unless-stopped
|
|
|
|
networks:
|
|
kafka-net:
|
|
driver: bridge
|