温馨提示×

ubuntu kafka怎样扩容

小樊
41
2026-10-20 03:50:30
栏目: 智能运维

在 Ubuntu 上对 Kafka 进行扩容,通常分为几种场景,最常见的是 Broker 节点扩容(加机器/加进程)。下面按实际操作流程给你讲清楚,适合生产环境。


一、Kafka 扩容常见方式

  1. 增加 Broker 节点(最常见)
  2. 增加 Topic 分区(Partition)
  3. 分区副本重分配(Rebalance)

注意:Kafka 不支持减少副本数自动收缩,只能扩。


二、Broker 节点扩容(Ubuntu)

1️⃣ 新节点安装 Kafka

在新 Ubuntu 机器上:

sudo apt update

安装 JDK(如未安装):

sudo apt install openjdk-11-jdk -y

下载 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
mv kafka_2.13-3.6.1 /opt/kafka

2️⃣ 修改 Kafka 配置

编辑:

vi /opt/kafka/config/server.properties

关键配置(每个节点不同):

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

如果是 KRaft 模式(无 ZooKeeper):

process.roles=broker
controller.quorum.voters=0@kafka1:9093,1@kafka2:9093,2@kafka3:9093

3️⃣ 启动新 Broker

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

检查:

jps
# 看到 Kafka 进程即可

4️⃣ 验证节点已加入

bin/kafka-broker-api-versions.sh --bootstrap-server kafka1:9092

或:

bin/kafka-topics.sh --bootstrap-server kafka1:9092 --describe

三、分区重分配(必须做)

新 Broker 加入后 不会自动分担数据,需要手动 reassign。

1️⃣ 生成重分配计划

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

topics.json 示例:

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

会生成:

  • current-cluster-reassignment.json
  • proposed-cluster-reassignment.json

2️⃣ 执行重分配

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

3️⃣ 查看进度

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

四、扩容分区(可选)

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

分区数只能增加,不能减少


五、注意事项(很重要)

✅ 新节点 broker.id 唯一
✅ Kafka 版本必须一致
✅ 重分配会占用 IO,建议低峰期
✅ 如果是生产,建议限速:

# server.properties
replica.fetch.max.bytes=1048576

六、总结

Kafka 扩容标准流程:

  1. 新机器装 Kafka
  2. 修改 server.properties
  3. 启动 Broker
  4. 执行 partition reassignment
  5. 验证数据均衡

如果你愿意,我可以:

  • 给你 ZooKeeper / KRaft 区别说明
  • 写一套 自动化扩容脚本
  • 针对你当前 Kafka 版本给具体命令

你现在是 ZooKeeper 还是 KRaft?几台机器?

0 踩