下面给你一个**在 Ubuntu 上搭建 Kafka 集群(以 3 台为例)**的实用配置步骤,基于 Kafka 3.x + Zookeeper(常见稳定方案)。如果你用的是 Kafka 3.3+ 的 KRaft 模式,我也会在最后说明区别。
假设 3 台服务器:
| 主机名 | IP |
|---|---|
| kafka1 | 192.168.1.11 |
| kafka2 | 192.168.1.12 |
| kafka3 | 192.168.1.13 |
每台都执行:
sudo apt update
sudo apt install -y openjdk-11-jdk
java -version
下载 Kafka:
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
sudo mv kafka_2.13-3.6.1 /opt/kafka
编辑:
/opt/kafka/config/zookeeper.properties
统一配置:
dataDir=/opt/kafka/zookeeper-data
clientPort=2181
maxClientCnxns=0
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 > /opt/kafka/zookeeper-data/myid
# kafka2
echo 2 > /opt/kafka/zookeeper-data/myid
# kafka3
echo 3 > /opt/kafka/zookeeper-data/myid
编辑:
/opt/kafka/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
log.dirs=/opt/kafka/kafka-logs
num.partitions=3
default.replication.factor=3
min.insync.replicas=2
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
⚠️ broker.id 和 IP 必须每台不同
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
随便一台执行:
/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server 192.168.1.11:9092
查看 broker:
/opt/kafka/bin/zookeeper-shell.sh 192.168.1.11:2181 ls /brokers/ids
创建 Topic:
/opt/kafka/bin/kafka-topics.sh \
--create --topic test \
--partitions 3 --replication-factor 3 \
--bootstrap-server 192.168.1.11:9092
查看 Topic:
/opt/kafka/bin/kafka-topics.sh --describe --topic test --bootstrap-server 192.168.1.11:9092
如果你不想用 Zookeeper:
config/kraft/server.propertieskafka-storage.sh random-uuid
kafka-storage.sh format
controller.quorum.voters 配置 3 台如果你需要 KRaft 完整配置,我可以单独给你一份。
✅ 防火墙开放:
9092, 2181, 2888, 3888
✅ advertised.listeners 必须写 IP,不能写 localhost
✅ broker.id 唯一
✅ replication.factor ≤ broker 数量
如果你愿意,我可以:
你现在是学习还是生产环境?