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