温馨提示×

debian kafka怎么集群部署

小樊
43
2026-09-28 02:34:41
栏目: 智能运维

下面给你一个**在 Debian 上部署 Kafka 集群(多节点)**的实战步骤示例,基于 Kafka 3.x + Kafka 自带的 KRaft 模式(不依赖 ZooKeeper),这是目前推荐方式。
如果你需要 ZooKeeper 模式或 Docker 部署,我也可以单独给你。


一、环境准备

1. 节点规划(示例)

假设 3 台 Debian 服务器:

主机名 IP
kafka1 192.168.1.11
kafka2 192.168.1.12
kafka3 192.168.1.13

Kafka 集群最少 3 个节点,保证高可用


2. 基础环境(所有节点)

# 更新系统
apt update && apt upgrade -y

# 安装 Java(Kafka 需要)
apt install -y openjdk-17-jdk

java -version

二、下载 Kafka

所有节点执行:

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

三、KRaft 集群配置

1. 生成 Cluster ID(任意一个节点)

/opt/kafka/bin/kafka-storage.sh random-uuid

假设输出:

abc12345-6789-xxxx-yyyy-zzzzzzzzzzzz

2. 配置文件(每个节点)

编辑:

nano /opt/kafka/config/kraft/server.properties

kafka1(192.168.1.11)

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

kafka2(192.168.1.12)

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

kafka3(192.168.1.13)

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

3. 初始化存储(所有节点)

/opt/kafka/bin/kafka-storage.sh format \
  -t abc12345-6789-xxxx-yyyy-zzzzzzzzzzzz \
  -c /opt/kafka/config/kraft/server.properties

四、启动 Kafka

前台测试

/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 &

五、验证集群

创建 Topic

/opt/kafka/bin/kafka-topics.sh \
  --bootstrap-server 192.168.1.11:9092 \
  --create --topic test --partitions 3 --replication-factor 3

查看 Topic

/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

六、设置 systemd(推荐)

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

✅ 生产环境建议

  • replication-factor ≥ 3
  • min.insync.replicas = 2
  • 使用 SASL / SSL(安全)
  • 磁盘使用独立盘

如果你愿意,我可以继续帮你:

  • ✅ 用 docker-compose 部署 Kafka 集群
  • ✅ 配置 Kafka + ZooKeeper 传统模式
  • ✅ 配置 Kafka SASL/SSL
  • ✅ 结合 Debian + systemd + 日志监控

你打算用于 测试环境还是生产环境?

0 踩