Reids主从切换步骤
2025-09-25 23:41:23 0 举报
Redis主从切换详细步骤
作者其他创作
大纲/内容
第三阶段:故障转移执行
新主节点广播PONG消息通知整个集群
从节点执行角色切换(Slave -> Master)
主节点(Master)故障
从节点向其他主节点发起投票请求
超过半数主节点认为该主节点下线标记为“已下线”(FAIL)
第一阶段:故障检测
主节点投票(每个主节点一票)
第一阶段:故障检测 - 从“疑似下线”到“已下线”1、节点间的心跳与 PING/PONG 消息: o集群中的每个节点都会定期通过 Gossip 协议 向其他节点发送 PING 消息,收到 PING 的节点会回复 PONG 消息。 o这些消息中不仅包含常规数据,还包含当前节点认为其他节点是否在线的状态信息。2、主观下线: 如果某个节点(比如 Node A)在 一段时间内(默认 cluster-node-timeout,通常为 15 秒)一直没有收到主节点 M 的有效PONG回应, 那么节点 A 会将主节点M 标记为 PFAIL,即疑似下线。这是一个“主观”判断,只代表节点 A 认为主节点M可能挂了,还未形成集群共识。3、客观下线: 节点 A 会通过 Gossip 消息将“主节点M 疑似下线”这个信息传播给集群中的其他节点。当集群中某个主节点收到足够多的(超过半数) 其他主节点也认为节点M 处于 PFAIL 状态时,它就会将节点M的状态标记为 FAIL,并立即将这个“节点M 已下线”的 FAIL 消息广播给整个集群。 o关键点:只有标记为 FAIL 状态,才会真正触发故障转移流程。这避免了因网络抖动导致的误判。第二阶段:选举筹备 - 哪个从节点有资格成为新主?一旦主节点被标记为客观下线(FAIL),它的从节点们将开始竞争成为新的主节点。1、从节点确认主节点下线: 每个从节点都会持续监听集群的广播消息。当它们发现自己的主节点被标记为 FAIL 时,就开始准备选举。2、选举延迟时间: o从节点不会立即开始选举,而是会等待一个延迟时间;数据越新、越完整的从节点,等待的时间越短,从而能更早地发起投票请求。 而不是哪个从节点碰巧网络好,抢先发了请求。 o延迟时间计算公式:500ms + random(0 ~ 500ms) + SLAVE_RANK * 1000ms。 SLAVE_RANK:它代表了从节点的“排名”,排名由从节点复制的数据量决定。复制偏移量最大的从节点排名最高。 这意味着数据最新的从节点等待的时间最短。rank=1 表示偏移量最大(最新)的从节点,最先发起选举。rank=2 等待更久,作为备选。 o设计目的:确保数据最完整的从节点(复制偏移量最大)能够最先发起投票,从而有最大概率当选,最大限度地减少数据丢失。第三阶段:故障转移执行 - 发起投票与角色切换在故障转移的选举阶段,角色非常清晰:候选人:是那个挂掉的主节点下属的从节点们。它们想要竞选成为新的主节点。投票者:是集群中所有其他正常工作的、持有哈希槽的主节点。只有它们有资格投票。1、发起投票(从节点发起竞选请求): o等待延迟时间结束后,从节点会向集群中所有主节点广播一条 FAILOVER_AUTH_REQUEST 消息,请求投票; 意思是:“我申请成为新的主节点,请各位投票给我!”;每个主节点对该从节点进行验证(如是否合法、是否已投过票等), 如果验证通过,主节点回复FAILOVER_AUTH_ACK,表示支持。2、主节点进行投票决策: o群中所有持有槽正常的主节点都有一次对该从节点投票权。 o主节点收到投票请求后,遵循以下规则: 在一个选举周期内,它只能投一次票。 它会投票给第一个向它请求投票的从节点。 只有当从节点的主节点被标记为 FAIL 时,且请求来自其合法的从节点时,投票才有效。选举成功(统计票数与晋升): o发起请求的从节点会统计自己获得了多少张来自主节点的选票。 o一旦它获得了超过半数主节点的同意票(即 N/2 + 1,例如3主节点集群需要2票,5主节点集群需要3票),它就赢得了选举。 o随后,该从节点立即执行角色切换,将自己提升为主节点,并接管旧主节点负责的所有哈希槽。角色切换与通知: o当选的从节点会执行以下操作: 停止复制旧主节点(即使它恢复) 立即将自己的角色从 slave 提升为 master。 它接管原主节点负责的所有哈希槽(slots)。 向集群广播一条 MFSTART 或 UPDATE 消息,告知所有节点它的新角色和负责的槽位信息。 o其他节点(包括客户端)更新集群拓扑信息;将客户端请求重定向到新的主节点。旧主节点恢复: o如果旧的主节点重新上线,它会发现集群中已经有了一个新的主节点来负责它的槽。 此时,它会自动降级为这个新主节点的从节点,开始复制新主节点;从而保证集群架构的稳定。
节点PING主节点超时标记为“疑似下线”(PFAIL)
选举成功
节点通过Gossip协议传播主节点疑似下线状态
从节点检测到主节点为FAIL
廷迟结束后尝试发起选举
从节点等待一个延迟时问(排名与复制偏移量有关)
获得多数票(N/2+1)
第二阶段:选举筹备
集群状态恢复
0 条评论
下一页