按权重自动均衡槽位
cluster rebalance 是多次 reshard 的自动化封装:给定各节点权重后,它会计算槽的分布并自动把槽从负载高的节点迁到低的节点,还可以让新加入的空主节点也参与接收。权重能让性能更好的机型多承担一些槽,偏差阈值则决定多大不均衡才触发迁移。
基本信息
| 适用 | Redis 5.0 及以上 Cluster 模式 |
|---|---|
| 权重 | cluster-weight 指定节点权重,默认 1 |
| 偏差容忍 | cluster-threshold 指定触发迁移的不均衡百分比 |
| 空主节点 | cluster-use-empty-masters 允许新空节点接收槽 |
再均衡操作
再均衡操作
redis-cli --cluster rebalance 10.0.0.1:6379 --cluster-weight 新节点ID=2 旧节点ID=1 --cluster-use-empty-masters --cluster-threshold 2 # 按权重迁移并允许空主接收
redis-cli --cluster rebalance 10.0.0.1:6379 --cluster-simulate # 只预演不执行,先看迁移计划
redis-cli --cluster check 10.0.0.1:6379 # 迁移前后核对槽分布与副本状态
redis-cli --cluster info 10.0.0.1:6379 # 查看节点与槽的概览
redis-cli CLUSTER COUNTKEYSINSLOT <槽号> # 抽查关键槽上的键数量
redis-cli --cluster reshard 10.0.0.1:6379 # 需要精确控制时可改用 reshard 手工迁移参数读法
| 参数 | 含义 | 使用建议 |
|---|---|---|
| --cluster-weight | 节点权重,默认 1 | 按机型与磁盘规格匹配设置 |
| --cluster-threshold | 触发迁移的不均衡百分比 | 过高会导致长尾节点依旧不均 |
| --cluster-use-empty-masters | 空主节点参与接收槽 | 扩容后必加,否则新节点分不到槽 |
| --cluster-simulate | 只输出迁移计划 | 生产执行前先用它评估影响 |
| --cluster-timeout | 单步迁移超时 | 网络抖动频繁时可适当放宽 |
典型使用场景
- 扩容后把槽从旧节点迁到新节点,实现容量对齐
- 机型混合部署:给高配节点更高权重
- 负载倾斜修正:某个节点键值明显更多时重新均衡
- 缩容前的槽腾挪,配合删节点流程使用
- 演练迁移计划,评估对业务延迟的影响
再均衡会在集群间持续迁移槽与键,产生大量跨节点流量;务必在业务低峰执行,并预留网络带宽与监控观察窗口。
迁移过程中客户端可能收到 ASK 重定向,这是集群的正常机制;如果重定向报错频发,先检查客户端是否支持集群模式与槽缓存。