温馨提示×

debian kafka怎样扩容

小樊
37
2026-09-09 21:45:08
栏目: 智能运维

在 Debian 上对 Kafka 进行扩容,通常分为 Broker 扩容(加机器/加节点) 和 Topic 分区扩容(增加吞吐) 两类。下面按实际运维流程说明。


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

1. 新节点准备

在 Debian 新机器上:

  • 安装相同版本的 JDK
  • 安装相同版本的 Kafka
  • 保证网络互通(broker 之间、zk/kraft 之间)
apt update
apt install -y openjdk-17-jdk

下载 Kafka(版本要和现有集群一致):

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
mv kafka_2.13-3.7.0 /opt/kafka

2. 修改 Kafka 配置

编辑 /opt/kafka/config/server.properties

关键参数(不要和已有 broker 冲突):

broker.id=3
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://<新节点IP>:9092

# ZooKeeper 模式
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181

# 或 KRaft 模式
process.roles=broker
controller.quorum.voters=1@k1:9093,2@k2:9093,3@k3:9093

⚠️ broker.id 必须唯一


3. 启动新 Broker

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

确认:

/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server <任一broker>:9092

4. 数据再均衡(重要)

新 broker 启动后 不会自动迁移数据,需要手动 reassign。

生成迁移计划

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

topics.json 示例:

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

执行迁移

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

查看进度

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

二、Topic 分区扩容(提升并发)

1. 查看当前分区

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

2. 增加分区

kafka-topics.sh \
--bootstrap-server broker1:9092 \
--alter \
--topic test-topic \
--partitions 12

⚠️ 分区只能增不能减
⚠️ 已有 key 的 message 分区映射会变


三、Kafka 磁盘扩容(Debian)

如果是单机磁盘不够:

方案 1:加磁盘 + 多 log.dirs

log.dirs=/data1/kafka-logs,/data2/kafka-logs

Kafka 会自动做磁盘均衡(按比例)

方案 2:LVM 扩容

lvextend -L +100G /dev/vg0/kafka
resize2fs /dev/vg0/kafka

四、常见坑

问题 说明
broker.id 冲突 集群直接异常
版本不一致 不兼容
不 reassign 新节点无数据
分区数过多 controller 压力大
网络延迟高 ISR 频繁抖动

五、简要总结

✅ Broker 扩容

  • 新机器 → 配 server.properties → 启动 → reassign

✅ Topic 扩容

  • kafka-topics.sh --alter --partitions

✅ 磁盘扩容

  • 多 log.dirs 或 LVM

如果你愿意,可以告诉我:

  • Kafka 版本
  • ZooKeeper 还是 KRaft
  • 单节点还是集群

我可以给你一份 可直接执行的扩容脚本。

0 踩