适用场景

集群扩容不是"加机器":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 完整、迁移完成

小结

集群扩容的验收:容量提升、性能不降、副本健康、业务无感知。扩容后一周内重点观察是否出现热点倾斜。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。