温馨提示×

debian中kafka如何扩容

小樊
44
2026-10-21 10:28:12
栏目: 智能运维

在 Debian 系统中对 Kafka 进行扩容,通常指以下三类场景之一:

  1. Broker 节点扩容(加机器 / 加进程)
  2. Topic 分区扩容(partition 增加)
  3. 磁盘 / 存储扩容

下面按最常见、也是你大概率想要的 Broker 扩容 + 分区重平衡 来说明。


一、Kafka Broker 扩容(新增节点)

1. 新节点准备

在新 Debian 机器或原机器新目录中:

# 安装 JDK
apt update
apt install -y openjdk-17-jdk

# 创建 kafka 用户(可选)
useradd -m kafka

2. 安装 Kafka(与原集群版本一致)

wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz -C /opt
ln -s /opt/kafka_2.13-3.6.1 /opt/kafka

3. 修改 server.properties

broker.id=2                  # 不能等于已有 broker
listeners=PLAINTEXT://:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181/kafka

✅ Kafka 3.x 推荐用 KRaft,若你用 ZooKeeper 就保持原模式

4. 启动新 Broker

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

此时:

  • 新 broker 已加入集群
  • 但旧 topic 不会自动迁移

二、Topic 分区扩容(必须做)

1. 查看当前分区

kafka-topics.sh --bootstrap-server broker1:9092 \
  --describe --topic my-topic

2. 增加分区

kafka-topics.sh --bootstrap-server broker1:9092 \
  --alter --topic my-topic --partitions 6

⚠️ 只能增不能减


三、分区重平衡到新节点(关键)

1. 生成迁移计划

kafka-reassign-partitions.sh \
  --bootstrap-server broker1:9092 \
  --topics-to-move-json-file topics.json \
  --broker-list "0,1,2" \
  --generate

topics.json 示例:

{
  "topics": [
    { "topic": "my-topic" }
  ],
  "version": 1
}

2. 执行重分配

kafka-reassign-partitions.sh \
  --bootstrap-server broker1:9092 \
  --reassignment-json-file reassignment.json \
  --execute

3. 查看进度

kafka-reassign-partitions.sh \
  --bootstrap-server broker1:9092 \
  --reassignment-json-file reassignment.json \
  --verify

四、磁盘扩容(LVM 场景)

如果是单 broker 加磁盘:

mkfs.ext4 /dev/sdb
mount /data/kafka-logs2 /dev/sdb

修改:

log.dirs=/data/kafka-logs,/data/kafka-logs2

重启 broker 即可。


五、常见坑(Debian 特有)

  • Debian 默认 ulimit 低 → 修改 /etc/security/limits.conf
  • systemd 启动需写 service 文件
  • 时间必须同步(NTP)

六、总结流程

加机器 → 配 server.properties → 启动
→ 增加 partition
→ reassignment 到新 broker
→ verify

如果你能告诉我:

  • Kafka 版本
  • 是否用 KRaft / ZooKeeper
  • 是云服务器还是物理机

我可以给你 精确命令和 systemd 配置。

0 踩