温馨提示×

Debian下Kafka怎么集群

小樊
43
2026-08-06 20:05:39
栏目: 智能运维

Debian 下部署 Kafka 集群,通常和 Linux 通用做法一致,核心是 ZooKeeper(或 KRaft)+ 多 Broker + 正确配置。下面给你一个从零到可运行的完整流程(生产可用思路)


一、环境准备(所有节点)

1️⃣ 系统要求

  • Debian 10 / 11 / 12
  • Java 8 或 11(推荐 11)
  • 至少 3 台机器(或虚拟机)

示例节点:

kafka1  192.168.1.10
kafka2  192.168.1.11
kafka3  192.168.1.12

2️⃣ 安装 Java

sudo apt update
sudo apt install -y openjdk-11-jdk
java -version

3️⃣ 创建 Kafka 用户(推荐)

sudo useradd -r -m -s /bin/bash kafka

二、安装 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

三、ZooKeeper 集群(传统方式)

Kafka 3.x 仍支持 ZooKeeper ⚠️ 新集群建议用 KRaft(无 ZooKeeper)(见后文)


1️⃣ 配置 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

2️⃣ 设置 myid(每个节点不同)

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

3️⃣ 启动 ZooKeeper

sudo -u kafka /opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties

检查:

echo ruok | nc localhost 2181  # 返回 imok

四、Kafka Broker 集群配置

1️⃣ 编辑 server.properties(每个节点)

/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

2️⃣ 创建数据目录

sudo mkdir -p /var/lib/kafka-logs
sudo chown -R kafka:kafka /var/lib/kafka-logs

3️⃣ 启动 Kafka

sudo -u kafka /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

五、验证集群是否成功

1️⃣ 查看 broker

/opt/kafka/bin/zookeeper-shell.sh localhost:2181 ls /brokers/ids

2️⃣ 创建 topic(3 副本)

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

3️⃣ 查看 topic 状态

/opt/kafka/bin/kafka-topics.sh \
--describe \
--topic test \
--bootstrap-server 192.168.1.10:9092

✅ 看到 3 个 broker 且 ISR 完整即成功


六、KRaft 模式(无 ZooKeeper,推荐新集群)

Kafka 3.3+ 正式支持

1️⃣ 生成 Cluster ID

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

2️⃣ 配置 kraft/server.properties

process.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

3️⃣ 格式化存储

/opt/kafka/bin/kafka-storage.sh format -t <cluster-id> -c /opt/kafka/config/kraft/server.properties

4️⃣ 启动

/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties

七、生产建议(重要)

✅ 使用 KRaft
✅ 每个 broker 单独磁盘
✅ JVM 堆 4–8G
✅ 关闭 swap
✅ 防火墙放行 9092 / 2181 / 9093


八、你可能需要的下一步

  • Kafka 集群 + systemd 服务
  • Kafka + SASL / SSL
  • Kafka + Debian + Docker
  • Kafka 性能调优
  • Kafka 与 Logstash / Flink / Spark

如果你愿意,我可以: ✅ 给你 systemd 启动脚本 ✅ 给你 生产级 server.properties ✅ 帮你 排查启动失败

你现在用的是 Debian 几?Kafka 几?

0