1、部署
version: '3.9'
services:
broker:
image: xxxxx/library/apache/kafka:4.3.0
container_name: broker
ports:
- "9092:9092"
- "9093:9093"
environment:
# KRaft 必要配置
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: broker,controller
# 监听器配置
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
# 一定要注意,这个ip地址一定要写你对外服务的ip地址,这里是vpn的
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.88.1:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
# ⭐ 关键修复:使用 controller.quorum.voters 的正确格式
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@localhost:9093"
# 集群 ID(KRaft 必须)
KAFKA_CLUSTER_ID: "5L6g3nShT-eMCtK--X86sw"
# 单节点配置
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_NUM_PARTITIONS: 3
# 数据目录
KAFKA_LOG_DIRS: /tmp/kraft-combined-logs
networks:
- kafka-net
networks:
kafka-net:
driver: bridge
2、测试
docker exec -it broker /bin/bash
kafka的命令所在的目录是:/opt/kafka/bin/
(1)查看topic
kafka-topics.sh \
--bootstrap-server localhost:9092 \
--list
(2)创建topic
kafka-topics.sh \
--bootstrap-server localhost:9092 \
--create \
--topic test-topic \
--partitions 1 \
--replication-factor 1