下面以 Ubuntu + Kafka(以 3.x 为例,Kafka 自带 Zookeeper 或 KRaft 模式) 为例,说明如何配置 Kafka 集群。
假设有 3 台机器:
| 主机名 | IP |
|---|---|
| kafka1 | 192.168.1.11 |
| kafka2 | 192.168.1.12 |
| kafka3 | 192.168.1.13 |
每台机器都:
/opt/kafkasudo apt update
sudo apt install openjdk-11-jdk -y
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz -C /opt
ln -s /opt/kafka_2.13-3.6.1 /opt/kafka
编辑 config/zookeeper.properties
dataDir=/var/lib/zookeeper
clientPort=2181
server.1=192.168.1.11:2888:3888
server.2=192.168.1.12:2888:3888
server.3=192.168.1.13:2888:3888
在每台机器创建 myid:
# kafka1
echo 1 > /var/lib/zookeeper/myid
# kafka2
echo 2 > /var/lib/zookeeper/myid
# kafka3
echo 3 > /var/lib/zookeeper/myid
编辑 config/server.properties
broker.id=1
listeners=PLAINTEXT://192.168.1.11:9092
advertised.listeners=PLAINTEXT://192.168.1.11:9092
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181
broker.id=2
listeners=PLAINTEXT://192.168.1.12:9092
advertised.listeners=PLAINTEXT://192.168.1.12:9092
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181
broker.id=3
listeners=PLAINTEXT://192.168.1.13:9092
advertised.listeners=PLAINTEXT://192.168.1.13:9092
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181
# 先启动 zookeeper
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
# 再启动 kafka
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
KAFKA_CLUSTER_ID=$(/opt/kafka/bin/kafka-storage.sh random-uuid)
server.propertiesprocess.roles=broker,controller
node.id=1
listeners=PLAINTEXT://192.168.1.11:9092,CONTROLLER://192.168.1.11:9093
controller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093
只需改 node.id 和 IP
/opt/kafka/bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c /opt/kafka/config/server.properties
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
/opt/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.1.11:9092 \
--create --topic test --partitions 3 --replication-factor 3
/opt/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.1.11:9092 --describe --topic test
✅ broker.id 必须唯一
✅ advertised.listeners 必须能被其他节点访问
✅ 防火墙开放 9092 / 2181 / 9093
✅ 生产环境建议 3 或 5 个节点
如果你愿意,我可以:
你现在是 Zookeeper 还是 KRaft?