背景
网上搜了很多没有关于WSL2部署Kafka的KRaft版本的内容,故分享。
镜像bitnami/kafka:3.5.2,内容仅供参考,需要一定的docker知识基础。
前置准备和参考
- Docker-Compose部署Kafka KRaft集群环境(超详细) - 掘金 (juejin.cn)
- Kafka从上手到实践-Kafka集群:Kafka Listeners | 程序员说 (devtalking.com)
- kafka的listeners和advertised.listeners,配置内外网分流 - 掘金 (juejin.cn)
docker-compose.yml文件编写
version: "3"
networks:
net_akuan:
external: true
services:
kafka01:
image: 'bitnami/kafka:3.5.2'
container_name: kafka01
ports:
- '9094:9094'
environment:
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_KRAFT_CLUSTER_ID=9YoavaRpTCOitT3Dm2OQFA
- KAFKA_CFG_LISTENERS=INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:9094
- KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka_addr1:9092,EXTERNAL://localhost:9094
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_NODE_ID=1
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka_addr1:9093,2@kafka_addr2:9093,3@kafka_addr3:9093
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
volumes:
- /d/docker_data/kafka/cluster/kafka1:/bitnami/kafka
networks:
net_akuan:
aliases:
- kafka_addr1
kafka02:
image: 'bitnami/kafka:3.5.2'
container_name: kafka02
ports:
- '9095:9095'
environment:
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_KRAFT_CLUSTER_ID=9YoavaRpTCOitT3Dm2OQFB
- KAFKA_CFG_LISTENERS=INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:9095
- KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka_addr2:9092,EXTERNAL://localhost:9095
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_NODE_ID=2
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka_addr1:9093,2@kafka_addr2:9093,3@kafka_addr3:9093
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
volumes:
- /d/docker_data/kafka/cluster/kafka2:/bitnami/kafka
networks:
net_akuan:
aliases:
- kafka_addr2
kafka03:
image: 'bitnami/kafka:3.5.2'
container_name: kafka03
ports:
- '9096:9096'
environment:
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_KRAFT_CLUSTER_ID=9YoavaRpTCOitT3Dm2OQFC
- KAFKA_CFG_LISTENERS=INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:9096
- KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka_addr3:9092,EXTERNAL://localhost:9096
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_NODE_ID=3
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka_addr1:9093,2@kafka_addr2:9093,3@kafka_addr3:9093
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
volumes:
- /d/docker_data/kafka/cluster/kafka3:/bitnami/kafka
networks:
net_akuan:
aliases:
- kafka_addr3