适用场景
集群扩容不是"加机器":Redis 要迁槽位、Kafka 要搬分区、ES 要重分配分片,每一步都可能影响在线业务。
配置步骤(Elasticsearch 扩容与分片)
# 1) 新节点加入集群(同一集群名与版本)
# 2) 分片重分配限速
PUT _cluster/settings
{ "persistent": { "cluster.routing.allocation.node_concurrent_recoveries": 2 } }
# 3) 查看
GET _cat/health?v
GET _cat/allocation?v
关键参数与建议
- 扩容窗口:低峰 + 监控到位 + 回退方案
- 数据迁移限速:避免占满带宽与磁盘 IO
- 扩容后验证:容量、性能、副本状态、业务读写
- 容量规划:预留 30% 余量,避免频繁扩容
- 版本一致:新节点版本与集群一致,避免兼容问题
容易踩的坑
- 一次加入过多节点,恢复风暴导致磁盘打满
- 分片数过多,元数据压力大
- 磁盘水位超 85% 后分片无法分配
验证与巡检
curl -s 'localhost:9200/_cat/allocation?v'
- 巡检:集群 green、磁盘 <80%、分片分布均衡
小结
集群扩容的验收:容量提升、性能不降、副本健康、业务无感知。扩容后一周内重点观察是否出现热点倾斜。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。