温馨提示×

debian kafka怎样扩容节点

小樊
46
2026-09-03 19:17:17
栏目: 智能运维

在 Debian 上部署的 Kafka 集群扩容节点,本质上就是 增加 Broker 并重新分配 Partition/副本。下面按实操流程说明(以 Kafka 3.x 为例,ZooKeeper 模式;如用 KRaft 模式略有不同)。


一、扩容前准备

1. 新节点环境准备(Debian)

在新机器上:

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

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

2. 同步 Kafka 安装包

从旧节点复制 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

二、配置新 Kafka Broker

编辑配置文件:

vi /opt/kafka/config/server.properties

关键配置(不要和旧节点冲突)

broker.id=3                 # 新 ID,集群内唯一
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://<新节点IP>:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181/kafka

如果是 KRaft 模式,需要配置 controller.quorum.voters

创建数据目录:

mkdir -p /data/kafka-logs
chown -R kafka:kafka /data/kafka-logs

三、启动新节点

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

检查是否加入集群:

/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server 新节点IP:9092

或在 ZooKeeper 中:

get /kafka/brokers/ids

四、分区再均衡(重点)

新节点不会自动使用,必须 重新分配 Partition。

1. 生成当前 topic 列表

/opt/kafka/bin/kafka-topics.sh \
  --bootstrap-server 任意旧节点:9092 \
  --list > topics.txt

2. 生成再均衡计划

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

会输出一个 JSON,保存为 reassign.json


3. 执行再均衡

/opt/kafka/bin/kafka-reassign-partitions.sh \
  --bootstrap-server 旧节点:9092 \
  --reassignment-json-file reassign.json \
  --execute

4. 查看进度

/opt/kafka/bin/kafka-reassign-partitions.sh \
  --bootstrap-server 旧节点:9092 \
  --reassignment-json-file reassign.json \
  --verify

✅ 完成后,新节点开始承载 Partition。


五、副本因子调整(可选)

如果原来副本因子是 1,可提升为 3:

{
  "version": 1,
  "partitions": [
    {"topic":"test","partition":0,"replicas":[0,1,3]}
  ]
}

然后执行 --execute。


六、注意事项(非常重要)

  1. broker.id 必须唯一
  2. log.dirs 不要共享磁盘
  3. 再均衡会消耗网络 IO,建议在低峰期
  4. 不要手动删 log.dirs
  5. 如果用了 ACL / SASL,新节点配置要一致

七、KRaft 模式简略说明(如你用的是新版本)

/opt/kafka/bin/kafka-storage.sh format \
  --config server.properties \
  --cluster-id xxx

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

其余 Partition 再均衡流程一致。


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

  • Kafka 版本
  • ZooKeeper 还是 KRaft
  • 单集群还是多数据中心

我可以给你 针对你环境的完整配置示例。

0 踩