适用场景
集群扩容不是"加机器":Redis 要迁槽位、Kafka 要搬分区、ES 要重分配分片,每一步都可能影响在线业务。
配置步骤(Kafka 扩容与分区调整)
# 1) 新 Broker 加入集群
# 2) 生成分区重分配方案
kafka-reassign-partitions.sh --bootstrap-server kafka:9092 --generate --topics-to-move-json-file topics.json --broker-list "1,2,3,4"
# 3) 执行迁移
kafka-reassign-partitions.sh --bootstrap-server kafka:9092 --execute --reassignment-json-file plan.json
# 4) 验证
kafka-reassign-partitions.sh --bootstrap-server kafka:9092 --verify --reassignment-json-file plan.json
关键参数与建议
- 扩容窗口:低峰 + 监控到位 + 回退方案
- 数据迁移限速:避免占满带宽与磁盘 IO
- 扩容后验证:容量、性能、副本状态、业务读写
- 容量规划:预留 30% 余量,避免频繁扩容
- 版本一致:新节点版本与集群一致,避免兼容问题
容易踩的坑
- 迁移不限流(--throttle 未设),影响生产写入
- 分区数不变只加 broker,负载仍不均
- 未验证迁移结果,部分分区仍在旧节点
验证与巡检
kafka-topics.sh --bootstrap-server kafka:9092 --describe --topic orders | head
- 巡检:分区分布均匀、ISR 完整、迁移完成
小结
集群扩容的验收:容量提升、性能不降、副本健康、业务无感知。扩容后一周内重点观察是否出现热点倾斜。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。