在 Debian 下部署 Kafka 集群,通常和 Linux 通用做法一致,核心是 ZooKeeper(或 KRaft)+ 多 Broker + 正确配置。下面给你一个从零到可运行的完整流程(生产可用思路)。
示例节点:
kafka1 192.168.1.10
kafka2 192.168.1.11
kafka3 192.168.1.12
sudo apt update
sudo apt install -y openjdk-11-jdk
java -version
sudo useradd -r -m -s /bin/bash kafka
cd /opt
sudo wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
sudo tar -xzf kafka_2.13-3.6.1.tgz
sudo mv kafka_2.13-3.6.1 kafka
sudo chown -R kafka:kafka /opt/kafka
✅ Kafka 3.x 仍支持 ZooKeeper ⚠️ 新集群建议用 KRaft(无 ZooKeeper)(见后文)
编辑:
/opt/kafka/config/zookeeper.properties
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.1.10:2888:3888
server.2=192.168.1.11:2888:3888
server.3=192.168.1.12:2888:3888
sudo mkdir -p /var/lib/zookeeper
# kafka1
echo 1 | sudo tee /var/lib/zookeeper/myid
# kafka2
echo 2 | sudo tee /var/lib/zookeeper/myid
# kafka3
echo 3 | sudo tee /var/lib/zookeeper/myid
sudo -u kafka /opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
检查:
echo ruok | nc localhost 2181 # 返回 imok
/opt/kafka/config/server.properties
broker.id=1 # 每个节点不同(1/2/3)
log.dirs=/var/lib/kafka-logs
zookeeper.connect=192.168.1.10:2181,192.168.1.11:2181,192.168.1.12:2181
listeners=PLAINTEXT://192.168.1.10:9092
advertised.listeners=PLAINTEXT://192.168.1.10:9092
其他节点:
# kafka2
broker.id=2
listeners=PLAINTEXT://192.168.1.11:9092
# kafka3
broker.id=3
listeners=PLAINTEXT://192.168.1.12:9092
sudo mkdir -p /var/lib/kafka-logs
sudo chown -R kafka:kafka /var/lib/kafka-logs
sudo -u kafka /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
/opt/kafka/bin/zookeeper-shell.sh localhost:2181 ls /brokers/ids
/opt/kafka/bin/kafka-topics.sh \
--create \
--topic test \
--partitions 3 \
--replication-factor 3 \
--bootstrap-server 192.168.1.10:9092
/opt/kafka/bin/kafka-topics.sh \
--describe \
--topic test \
--bootstrap-server 192.168.1.10:9092
✅ 看到 3 个 broker 且 ISR 完整即成功
Kafka 3.3+ 正式支持
/opt/kafka/bin/kafka-storage.sh random-uuid
kraft/server.propertiesprocess.roles=broker,controller
node.id=1
controller.quorum.voters=1@192.168.1.10:9093,2@192.168.1.11:9093,3@192.168.1.12:9093
listeners=PLAINTEXT://192.168.1.10:9092,CONTROLLER://192.168.1.10:9093
log.dirs=/var/lib/kafka-logs
/opt/kafka/bin/kafka-storage.sh format -t <cluster-id> -c /opt/kafka/config/kraft/server.properties
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties
✅ 使用 KRaft
✅ 每个 broker 单独磁盘
✅ JVM 堆 4–8G
✅ 关闭 swap
✅ 防火墙放行 9092 / 2181 / 9093
如果你愿意,我可以: ✅ 给你 systemd 启动脚本 ✅ 给你 生产级 server.properties ✅ 帮你 排查启动失败
你现在用的是 Debian 几?Kafka 几?