kafka集群扩容ubuntu如何操作
小樊
38
2025-12-23 04:38:48
Ubuntu 上 Kafka 集群扩容实操指南
一 扩容总体流程
- 准备并安装新节点:在 Ubuntu 上安装相同版本的 Kafka,并配置唯一的 broker.id、监听地址 listeners、日志目录 log.dirs 与 zookeeper.connect。
- 启动新 Broker:确认 Zookeeper 可达后启动新节点,使其加入集群。
- 迁移分区与副本:使用 kafka-reassign-partitions.sh 生成并执行重分配计划,把部分分区与副本迁移到新节点,实现负载均衡。
- 验证与观察:执行验证并查看 Topic 分布与 ISR,观察重分配期间的延迟与吞吐变化。
二 新节点加入集群
- 安装与拷贝(示例)
- 拷贝现有节点安装包到新机器:
- scp -r kafka_2.13-3.x.x root@new_node_ip:/opt/
- 建立软链并赋权:
- ln -s kafka_2.13-3.x.x /opt/kafka
- chown -R kafka:kafka /opt/kafka
- 关键配置 server.properties(示例)
- broker.id:集群内唯一(如原节点为 0/1/2,新节点用 3)
- listeners:listeners=PLAINTEXT://new_node_ip:9092
- advertised.listeners:建议显式设置以便客户端直连(与 listeners 一致或对外可达地址)
- log.dirs:如 /data/kafka-logs(目录需存在且可写)
- zookeeper.connect:如 10.0.0.10:2181 或 zk1:2181,zk2:2181,zk3:2181/kafka(如使用 chroot)
- 启动与自检
- nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /dev/null 2>&1 &
- 检查进程:jps 应看到 Kafka;查看日志无报错;用现有任一 Broker 执行 kafka-topics.sh --describe 能看到新 broker.id 出现在集群元数据中。
三 迁移分区与副本到新节点
- 方式 A(推荐,批量迁移指定 Topic)
- 生成 topics-to-move.json(示例)
- {“topics”: [{“topic”: “topicA”},{“topic”: “topicB”}], “version”: 1}
- 生成重分配计划(注意把新节点加入 --broker-list)
- bin/kafka-reassign-partitions.sh --zookeeper zk1:2181/kafka --topics-to-move-json-file topics-to-move.json --broker-list “0,1,2,3” --generate
- 复制输出中 “Proposed partition reassignment configuration” 内容到 reassignment.json
- 执行重分配
- bin/kafka-reassign-partitions.sh --zookeeper zk1:2181/kafka --reassignment-json-file reassignment.json --execute
- 验证进度与结果
- bin/kafka-reassign-partitions.sh --zookeeper zk1:2181/kafka --reassignment-json-file reassignment.json --verify
- 使用 kafka-topics.sh --describe 查看分区与副本是否分布到新节点(如 broker 3)
- 方式 B(手动编写 reassignment.json,更灵活)
- 直接按目标分布编写 reassignment.json(包含 version、topic/partition、replicas 列表),然后执行与验证步骤同上。
- 重要提示
- 重分配会占用网络和磁盘 IO,建议在业务低峰期执行,并观察生产/消费延迟与 ISR 变化。
四 常用命令与验证要点
- 查看 Topic 分布与副本:
- bin/kafka-topics.sh --describe --zookeeper zk1:2181/kafka --topic topicA
- 重分配状态:
- bin/kafka-reassign-partitions.sh --zookeeper zk1:2181/kafka --reassignment-json-file reassignment.json --verify
- 监听地址与连通性:
- 确保 listeners 与 advertised.listeners 配置正确,客户端(bootstrap.servers)能直连到新增 Broker。
五 注意事项与最佳实践
- 版本一致:新节点 Kafka 版本尽量与现有集群保持一致,避免元数据/协议不兼容。
- 唯一性与目录:确保 broker.id 唯一,log.dirs 目录存在且权限正确。
- 容量规划:新增节点后,按需调整 Topic 的 分区数 与 副本因子,再执行重分配以均衡负载。
- 稳定性:重分配期间可能出现一定 延迟/抖动,避免同时执行其他高风险变更;不要中断重分配进程。
- 监控与回滚:持续观察 ISR、请求耗时、生产/消费滞后;如异常可暂停/回滚重分配并排查网络、磁盘与 Zookeeper 状态。