Redis Cluster 节点管理
  # Redis Cluster 节点管理:是否需要手动调整?
Redis Cluster 支持自动的节点发现和槽分配,但在 添加/删除节点 时,部分操作仍需手动干预,具体取决于你的需求:
# 1. 添加新节点
# (1)自动化的部分
- 节点发现:新节点加入集群后,会自动同步集群拓扑信息。
 - 从节点复制:如果新节点是 从节点(slave),可以自动复制主节点数据。
 
# (2)需要手动操作的部分
| 操作 | 是否手动 | 说明 | 
|---|---|---|
| 添加节点到集群 | ✅ | redis-cli --cluster add-node | 
| 分配槽(如果是主节点) | ✅ | redis-cli --cluster reshard | 
| 设置从节点复制关系 | ⚠️ | 可以手动或自动(--cluster-slave) | 
| 调整槽均衡 | ✅ | redis-cli --cluster rebalance | 
示例:添加新主节点
# 1. 添加节点(不自动分配槽)
redis-cli --cluster add-node 10.143.143.104:7006 10.143.143.101:7000
# 2. 手动分配槽给它
redis-cli --cluster reshard 10.143.143.101:7000
# 交互式输入要迁移的槽数量、源节点、目标节点
# 3. 可选:让集群自动均衡槽
redis-cli --cluster rebalance 10.143.143.101:7000
 1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
示例:添加新从节点(自动复制)
# 自动分配一个主节点给它
redis-cli --cluster add-node 10.143.143.104:7006 10.143.143.101:7000 --cluster-slave
# 或者手动指定主节点
redis-cli --cluster add-node 10.143.143.104:7006 10.143.143.101:7000 --cluster-slave --cluster-master-id <主节点ID>
 1
2
3
4
5
2
3
4
5
# 2. 删除节点
# (1)自动化的部分
- 从节点删除:直接移除,不影响数据。
 - 主节点删除(无槽时):可以直接删除。
 
# (2)需要手动操作的部分
| 操作 | 是否手动 | 说明 | 
|---|---|---|
| 迁移槽(如果主节点有槽) | ✅ | redis-cli --cluster reshard | 
| 删除节点 | ✅ | redis-cli --cluster del-node | 
示例:删除主节点(有槽)
# 1. 先迁移它的槽到其他主节点
redis-cli --cluster reshard 10.143.143.101:7000
# 选择目标节点,输入要迁移的槽数量
# 2. 确认槽已迁移后,删除节点
redis-cli --cluster del-node 10.143.143.101:7000 <节点ID>
 1
2
3
4
5
6
2
3
4
5
6
示例:删除从节点(无槽)
# 直接删除
redis-cli --cluster del-node 10.143.143.101:7000 <节点ID>
 1
2
2
# 3. 如何减少手动操作?
# (1)使用 --cluster-replicas 1 自动分配主从
 在 初始化集群 时,可以自动分配主从关系:
redis-cli --cluster create \
  10.143.143.101:7000 10.143.143.101:7001 \
  10.143.143.102:7002 10.143.143.102:7003 \
  10.143.143.103:7004 10.143.143.103:7005 \
  --cluster-replicas 1
 1
2
3
4
5
2
3
4
5
这会自动:
- 选 3 个主节点(
7000、7002、7004)。 - 分配 3 个从节点(
7001、7003、7005)分别复制主节点。 
# (2)使用 --cluster-rebalance 自动均衡槽
 redis-cli --cluster rebalance 10.143.143.101:7000 --cluster-use-empty-masters
 1
自动调整槽分布,使各主节点负载均衡。
# (3)自动化运维工具
- Redis Cluster Proxy(如 
twemproxy、predixy)可以简化客户端访问。 - Kubernetes Operator(如 
Redis Enterprise、Redis Cluster Operator)可以自动管理节点扩缩容。 
# 4. 结论
| 操作 | 是否必须手动 | 
|---|---|
| 添加主节点 | ✅ 需手动分配槽 | 
| 添加从节点 | ⚠️ 可自动或手动 | 
| 删除主节点(有槽) | ✅ 需先迁移槽 | 
| 删除从节点 | ❌ 可直接删除 | 
| 槽均衡调整 | ⚠️ 可手动或自动 | 
最佳实践:
- 初始创建集群时 用 
--cluster-replicas 1自动分配主从。 - 扩缩容时:
- 主节点:手动分配槽。
 - 从节点:可自动分配。
 
 - 定期检查 用 
redis-cli --cluster check确保集群健康。 
如果你的集群需要频繁扩缩容,建议结合 自动化运维工具(如 Ansible、K8s Operator)减少手动操作。
编辑  (opens new window)
  上次更新: 2025/06/24, 00:41:57