redis 集群节点切换角色

redis 集群节点切换角色

根据你提供的Redis集群节点信息和目标需求,以下是将10.1.*​节点提升为主节点的操作步骤和注意事项:


一、当前主节点与从节点关系分析

链接节点查看现有集群状态

xml 复制代码
10.1.230.40:6379> CLUSTER NODES
0b51383741a0ff67fc8b15a0f2166bb5a12bf822 10.8.230.42:6379@16379 slave e8d28f4e215718d59df98247ae1e6ebe2794ed02 0 1744008314000 13 connected
954b17e97b83fbca22f6cab3c73da67a6be34fa6 10.8.230.41:6379@16379 slave 2b4ab6c9ec9a73a7ca6cbf637c9fa25cd80fbd63 0 1744008314000 16 connected
2242e52dcaf94cef1db93d94e4d7d9ee57c4d566 10.8.230.44:6379@16379 master - 0 1744008313843 15 connected 5461-10922
a43c31620863882c9d54793391236c0b27bc2e2e 10.1.230.44:6379@16379 slave 2b4ab6c9ec9a73a7ca6cbf637c9fa25cd80fbd63 0 1744008314044 16 connected
fd0fc5c568ef00adaf700e47a5658c01cdb6a0c1 10.1.230.43:6379@16379 slave e8d28f4e215718d59df98247ae1e6ebe2794ed02 0 1744008314145 13 connected
82d2c20c58a2fbce12a7eb2dc7ea112ccd39aff9 10.1.230.42:6379@16379 slave e8d28f4e215718d59df98247ae1e6ebe2794ed02 0 1744008314044 13 connected
bc4b6e3063b2c1c3b0e8c8efc8c32928ad9f8b13 10.1.230.41:6379@16379 slave 2242e52dcaf94cef1db93d94e4d7d9ee57c4d566 0 1744008314000 15 connected
e8d28f4e215718d59df98247ae1e6ebe2794ed02 10.8.230.45:6379@16379 master - 0 1744008314146 13 connected 10923-16383
e59dd0efc212a27f42a2188bd360e9031ae83a1d 10.8.230.43:6379@16379 slave 2242e52dcaf94cef1db93d94e4d7d9ee57c4d566 0 1744008314000 15 connected
d9768a72ad28bb198732f0371c4a3e2971dacdc7 10.1.230.45:6379@16379 slave 2b4ab6c9ec9a73a7ca6cbf637c9fa25cd80fbd63 0 1744008314246 16 connected
2b4ab6c9ec9a73a7ca6cbf637c9fa25cd80fbd63 10.8.230.40:6379@16379 master - 0 1744008314146 16 connected 0-5460
4ff65e21dadd2b1d9a641d4619f5a2b621d7a8a1 10.1.230.40:6379@16379 myself,slave 2b4ab6c9ec9a73a7ca6cbf637c9fa25cd80fbd63 0 1744008313000 16 connected

CLUSTER NODES​输出可见:

  • 唯一标识(ID)
  • 网络地址(IP:Port)
  • 角色(主节点、从节点)
  • 状态(连接状态、故障标志)
  • 槽位分配(哈希槽范围
  1. 当前主节点(共3个):

    • 10.8.230.40:6379(ID: 2b4ab6c9),负责槽位0-5460
    • 10.8.230.44:6379(ID: 2242e52d),负责槽位5461-10922
    • 10.8.230.45:6379(ID: e8d28f4e),负责槽位10923-16383
  2. 目标从节点(需提升为新的主节点):

    • 10.1.230.40:6379(ID: 4ff65e21) → 当前从属于10.8.230.40
    • 10.1.230.45:6379(ID: d9768a72) → 当前从属于10.8.230.40
    • 10.1.230.41:6379(ID: bc4b6e30) → 当前从属于10.8.230.44
    • 10.1.230.42:6379(ID: 82d2c20c) → 当前从属于10.8.230.45
    • 10.1.230.44:6379(ID: a43c3162) → 当前从属于10.8.230.40
  3. 分析得出我们需要将

    • 10.1.230.41:6379 提升为主节点
    • 10.1.230.42:6379 提升为主节点
    • 10.1.230.44:6379 提升为主节点

二、操作步骤

1. 触发故障转移(Failover)

在Redis集群模式下,需使用CLUSTER FAILOVER​命令强制从节点接管主节点角色。需按主节点逐个操作

  • 示例:替换主节点10.8.230.40(槽位0-5460)

    bash 复制代码
    # 连接到目标从节点(如10.1.230.40)
    redis-cli -h 10.1.230.41 -p 6379
    
    # 执行强制故障转移
    CLUSTER FAILOVER FORCE
    • 作用:强制该从节点接管其主节点的槽位。
    • 验证 :再次执行CLUSTER NODES,确认该节点角色变为master,且槽位0-5460已转移。
  • 重复上述步骤

    • 替换10.8.230.44(槽位5461-10922):选择10.1.230.41执行故障转移。
    • 替换10.8.230.45(槽位10923-16383):选择10.1.230.4210.1.230.44执行故障转移。
2. 调整原主节点角色(按需调整非必做 重新调整整体结构)

若原主节点仍在线,需将其降级为从节点并指向新主:

bash 复制代码
# 连接到原主节点(如10.8.230.40)
redis-cli -h 10.8.230.40 -p 6379

# 重置节点角色
CLUSTER RESET HARD

# 重新加入集群作为从节点
CLUSTER MEET 10.1.230.40 6379
CLUSTER REPLICATE <新主节点ID>
3. 验证集群状态
  • 检查所有主节点是否均为10.1.*​节点:

    bash 复制代码
    CLUSTER NODES | grep master
  • 确认槽位分配完整且无重复:

    bash 复制代码
    CLUSTER SLOTS

三、注意事项

  1. 数据一致性

    • 确保故障转移前从节点数据已完全同步(通过INFO replication检查master_sync_in_progress是否为0)。
    • 若原主节点有未同步的写操作,强制故障转移可能导致数据丢失。
  2. 客户端配置更新

    • 更新客户端连接配置,指向新的主节点IP。
  3. 高可用性建议

    • 若需自动化切换,建议部署Redis Sentinel监控集群。
    • 每个主节点至少保留一个从节点以维持高可用性。

四、补充说明

  • 强制故障转移适用场景 :当原主节点不可用或需主动切换时使用CLUSTER FAILOVER FORCE
  • 动态配置:Redis集群支持动态调整节点角色,无需重启服务。

相关推荐
Momentary_SixthSense2 小时前
RESP协议
java·开发语言·javascript·redis·后端·python·mysql
努力的小郑2 小时前
放弃使用 Redis 事务!这才是它正确的打开方式!
数据库·redis
Seven973 小时前
用过redis哪些数据类型?Redis String 类型的底层实现是什么?
redis
.Shu.15 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
lssjzmn1 天前
🚀如何基于Redis的ZSet数据结构设计一个通用的,简单的,可靠的延迟消息队列,以RedisTemplate为例
redis
jakeswang1 天前
应用缓存不止是Redis!——亿级流量系统架构设计系列
redis·分布式·后端·缓存
.Shu.1 天前
Redis zset 渐进式rehash 实现原理、触发条件、执行流程以及数据一致性保障机制【分步源码解析】
数据库·redis·缓存
君不见,青丝成雪1 天前
大数据技术栈 —— Redis与Kafka
数据库·redis·kafka
悟能不能悟1 天前
排查Redis数据倾斜引发的性能瓶颈
java·数据库·redis
切糕师学AI1 天前
.net core web程序如何设置redis预热?
redis·.netcore