下面给你一个**在 Ubuntu 上部署 Kafka 集群(多节点)**的完整实战流程,基于 Kafka 3.x + KRaft 模式(推荐,不再依赖 ZooKeeper),这是目前最主流、最简单的方案。
| 节点 | IP | 角色 |
|---|---|---|
| node1 | 192.168.1.101 | Kafka |
| node2 | 192.168.1.102 | Kafka |
| node3 | 192.168.1.103 | Kafka |
✅ 3 个节点,最少 3 个 controller 才能形成 quorum
# 所有节点执行
sudo apt update
sudo apt install -y openjdk-17-jdk wget curl
java -version
cd /opt
sudo wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
sudo tar -xzf kafka_2.13-3.7.0.tgz
sudo mv kafka_2.13-3.7.0 kafka
cd kafka
KAFKA_CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)
echo $KAFKA_CLUSTER_ID
记录该 ID,例如:
xtzWWN4bTjitpL3kfd9s5g
编辑:
vim config/kraft/server.properties
node.id=1
process.roles=broker,controller
controller.quorum.voters=1@192.168.1.101:9093,2@192.168.1.102:9093,3@192.168.1.103:9093
listeners=PLAINTEXT://192.168.1.101:9092,CONTROLLER://192.168.1.101:9093
advertised.listeners=PLAINTEXT://192.168.1.101:9092
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
log.dirs=/opt/kafka/kraft-logs
metadata.log.dir=/opt/kafka/kraft-metadata
node.id=2
process.roles=broker,controller
controller.quorum.voters=1@192.168.1.101:9093,2@192.168.1.102:9093,3@192.168.1.103:9093
listeners=PLAINTEXT://192.168.1.102:9092,CONTROLLER://192.168.1.102:9093
advertised.listeners=PLAINTEXT://192.168.1.102:9092
node.id=3
process.roles=broker,controller
controller.quorum.voters=1@192.168.1.101:9093,2@192.168.1.102:9093,3@192.168.1.103:9093
listeners=PLAINTEXT://192.168.1.103:9092,CONTROLLER://192.168.1.103:9093
advertised.listeners=PLAINTEXT://192.168.1.103:9092
export KAFKA_CLUSTER_ID=xtzWWN4bTjitpL3kfd9s5g
bin/kafka-storage.sh format \
-t $KAFKA_CLUSTER_ID \
-c config/kraft/server.properties
bin/kafka-server-start.sh -daemon config/kraft/server.properties
检查:
jps
# 应有 Kafka
bin/kafka-topics.sh \
--bootstrap-server 192.168.1.101:9092 \
--create \
--topic test-topic \
--partitions 3 \
--replication-factor 3
bin/kafka-topics.sh \
--bootstrap-server 192.168.1.101:9092 \
--describe \
--topic test-topic
期望看到:
Replicas: 1,2,3
Isr: 1,2,3
# 生产
bin/kafka-console-producer.sh \
--bootstrap-server 192.168.1.101:9092 \
--topic test-topic
# 消费(另一终端)
bin/kafka-console-consumer.sh \
--bootstrap-server 192.168.1.101:9092 \
--topic test-topic \
--from-beginning
✅ 防火墙
sudo ufw allow 9092
sudo ufw allow 9093
✅ 生产环境建议
export KAFKA_HEAP_OPTS="-Xms2G -Xmx2G"
✅ 日志目录不要放 /tmp
| 模式 | 建议 |
|---|---|
| ZooKeeper | ❌ Kafka 3.x 起已废弃 |
| KRaft | ✅ 强烈推荐 |
如果你需要:
告诉我你的使用场景,我可以直接给你对应配置。