下面给你一个**在 Debian 上部署 Kafka 集群(多节点)**的实战步骤示例,基于 Kafka 3.x + Kafka 自带的 KRaft 模式(不依赖 ZooKeeper),这是目前推荐方式。
如果你需要 ZooKeeper 模式或 Docker 部署,我也可以单独给你。
假设 3 台 Debian 服务器:
| 主机名 | IP |
|---|---|
| kafka1 | 192.168.1.11 |
| kafka2 | 192.168.1.12 |
| kafka3 | 192.168.1.13 |
Kafka 集群最少 3 个节点,保证高可用
# 更新系统
apt update && apt upgrade -y
# 安装 Java(Kafka 需要)
apt install -y openjdk-17-jdk
java -version
所有节点执行:
cd /opt
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz
ln -s /opt/kafka_2.13-3.7.0 /opt/kafka
/opt/kafka/bin/kafka-storage.sh random-uuid
假设输出:
abc12345-6789-xxxx-yyyy-zzzzzzzzzzzz
编辑:
nano /opt/kafka/config/kraft/server.properties
node.id=1
controller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093
listeners=PLAINTEXT://192.168.1.11:9092,CONTROLLER://192.168.1.11:9093
advertised.listeners=PLAINTEXT://192.168.1.11:9092
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
log.dirs=/opt/kafka/data
node.id=2
controller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093
listeners=PLAINTEXT://192.168.1.12:9092,CONTROLLER://192.168.1.12:9093
advertised.listeners=PLAINTEXT://192.168.1.12:9092
node.id=3
controller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093
listeners=PLAINTEXT://192.168.1.13:9092,CONTROLLER://192.168.1.13:9093
advertised.listeners=PLAINTEXT://192.168.1.13:9092
/opt/kafka/bin/kafka-storage.sh format \
-t abc12345-6789-xxxx-yyyy-zzzzzzzzzzzz \
-c /opt/kafka/config/kraft/server.properties
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties > /opt/kafka/kafka.log 2>&1 &
/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
# 生产者
kafka-console-producer.sh --bootstrap-server 192.168.1.11:9092 --topic test
# 消费者
kafka-console-consumer.sh --bootstrap-server 192.168.1.12:9092 --topic test --from-beginning
nano /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka
After=network.target
[Service]
Type=simple
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now kafka
✅ 防火墙放行
ufw allow 9092,9093/tcp
✅ 生产环境建议
如果你愿意,我可以继续帮你:
你打算用于 测试环境还是生产环境?