温馨提示×

debian上kafka怎么扩容

小樊
41
2026-08-31 23:32:07
栏目: 智能运维

在 Debian 上对 Kafka 扩容,通常分为几种场景:Broker 节点扩容(加机器)Topic 分区扩容磁盘/存储扩容。下面按常见运维场景说明。


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

1. 新节点准备

在新 Debian 机器上:

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

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

2. 安装 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 -C /opt
ln -s /opt/kafka_2.13-3.7.0 /opt/kafka

3. 修改 Kafka 配置

编辑:

vi /opt/kafka/config/server.properties

关键配置(broker.id 必须唯一):

broker.id=2
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://<新节点IP>:9092
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
log.dirs=/data/kafka-logs

如果是 KRaft 模式(无 ZooKeeper):

process.roles=broker
controller.quorum.voters=...

4. 启动新 Broker

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

二、分区 Reassignment(让数据均衡)

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

1. 生成迁移计划

bin/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": "test-topic"}
  ],
  "version": 1
}

2. 执行迁移

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

3. 查看进度

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

三、Topic 分区扩容(增加吞吐)

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

⚠️ 注意:

  • 分区只能增加,不能减少
  • 增加分区会打乱 key 的路由

四、磁盘 / 存储扩容(单节点)

方式 1:增加 log.dirs(推荐)

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

Kafka 会自动做 分区级别负载均衡

方式 2:LVM / 云盘扩容

Debian 上:

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

五、生产环境建议

✅ 扩容前:

  • 保证 min.insync.replicas ≥ 2
  • 避免高峰时段做 partition reassignment

✅ 监控:

  • Under Replicated Partitions
  • Network / Disk IO

✅ 自动化:

  • 使用 Cruise Control(LinkedIn)
  • 或使用 kafka-monitor

如果你能告诉我:

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

我可以给你 更精确的 Debian 实操步骤

0