doc: 修改kafka集群的docker-compose

This commit is contained in:
asahi
2026-02-22 22:04:18 +08:00
parent 2b78644f7e
commit 4857dab31b
2 changed files with 80 additions and 69 deletions

View File

@@ -1,82 +1,93 @@
version: '3'
services: services:
zookeeper-1: broker1:
image: confluentinc/cp-zookeeper:latest image: apache/kafka:latest
container_name: zookeeper-1 container_name: broker1
environment: environment:
ZOOKEEPER_SERVER_ID: 1 KAFKA_KRAFT_CLUSTER_ID: kafka-cluster-3-nodes # Define your cluster ID at .env file
ZOOKEEPER_CLIENT_PORT: 22181 KAFKA_NODE_ID: 1
ZOOKEEPER_TICK_TIME: 2000 KAFKA_PROCESS_ROLES: "broker,controller"
ports: KAFKA_LISTENERS: INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:19092
- "22181:22181" KAFKA_ADVERTISED_LISTENERS: INTERNAL://broker1:9092,EXTERNAL://localhost:19092
volumes: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
- /data/kafka/zookeeper/data:/var/lib/zookeeper/data KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
- /data/kafka/zookeeper/log:/var/lib/zookeeper/log KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_LOG_DIRS: /var/lib/kafka/data
broker-1: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
image: confluentinc/cp-kafka:latest KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
container_name: broker-1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
ports: KAFKA_CONTROLLER_QUORUM_VOTERS: 1@broker1:9093,2@broker2:9093,3@broker3:9093
- "19092:19092"
depends_on:
- zookeeper-1
environment:
KAFKA_BROKER_ID: 1
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper-1:22181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker-1:19092,PLAINTEXT_HOST://localhost:29092
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
volumes: volumes:
- /data/kafka/broker/01:/var/lib/kafka/data - /data/kafka/broker/01:/var/lib/kafka/data
networks:
broker-2: - kafka-net
image: confluentinc/cp-kafka:latest
container_name: broker-2
ports: ports:
- "19093:19093" - "19092:19092" # Expose external port for broker1
depends_on: restart: unless-stopped
- zookeeper-1
broker2:
image: apache/kafka:latest
container_name: broker2
environment: environment:
KAFKA_BROKER_ID: 2 KAFKA_KRAFT_CLUSTER_ID: kafka-cluster-3-nodes # Define your cluster ID at .env file
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true" KAFKA_NODE_ID: 2
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper-1:22181' KAFKA_PROCESS_ROLES: "broker,controller"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_LISTENERS: INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:19092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker-2:19093,PLAINTEXT_HOST://localhost:29093 KAFKA_ADVERTISED_LISTENERS: INTERNAL://broker2:9092,EXTERNAL://localhost:19092
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT 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: volumes:
- /data/kafka/broker/02:/var/lib/kafka/data - /data/kafka/broker/02:/var/lib/kafka/data
networks:
broker-3: - kafka-net
image: confluentinc/cp-kafka:latest
container_name: broker-3
ports: ports:
- "19094:19094" - "19093:19092" # Expose external port for broker2
depends_on: restart: unless-stopped
- zookeeper-1
broker3:
image: apache/kafka:latest
container_name: broker3
environment: environment:
KAFKA_BROKER_ID: 3 KAFKA_KRAFT_CLUSTER_ID: kafka-cluster-3-nodes # Define your cluster ID at .env file
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true" KAFKA_NODE_ID: 3
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper-1:22181' KAFKA_PROCESS_ROLES: "broker,controller"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_LISTENERS: INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:19092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker-3:19094,PLAINTEXT_HOST://localhost:29094 KAFKA_ADVERTISED_LISTENERS: INTERNAL://broker3:9092,EXTERNAL://localhost:19092
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT 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: volumes:
- /data/kafka/broker/03:/var/lib/kafka/data - /data/kafka/broker/03:/var/lib/kafka/data
networks:
- kafka-net
ports:
- "19094:19092" # Expose external port for broker3
restart: unless-stopped
kafka-ui: kafdrop:
container_name: kafka-ui image: obsidiandynamics/kafdrop:latest
image: provectuslabs/kafka-ui:latest networks:
ports: - kafka-net
- 18080:8080 # Changed to avoid port clash with akhq depends_on:
depends_on: - broker1
- broker-1 - broker2
- broker-2 - broker3
- broker-3 ports:
environment: - 19000:9000
KAFKA_CLUSTERS_0_NAME: local environment:
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: broker-1:19092,broker-2:19093,broker-3:19094 KAFKA_BROKERCONNECT: broker1:9092,broker2:9092,broker3:9092
# KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schema-registry:8081 restart: unless-stopped
# KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: connect
# KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect:8083 networks:
DYNAMIC_CONFIG_ENABLED: 'true' kafka-net:
driver: bridge