Redis应用学习——Redis Cluster故障转移

1. 发现故障

    1. Redis Cluster节点故障发现依赖于集群中所有节点之间互相的ping/pong消息

    2. 主观下线:指集群中的某个节点独立的发现另一个节点不可用,从而导致当前节点主观认为另一个节点处于下线状态。集群中的每个节点每个一段时间都会向其他节点发送一个ping消息,如果其他节点接收并返回pong消息则记录下最新的通信时间,如果通信发生异常则断开连接,并且如果再次进行ping命令仍然无法ping通,且时间点与上次ping通所记录的时间点之间的时间差已经超过cluster-node-timeout(该参数在节点配置文件中配置),则标记无法ping通的那个节点为主观下线

    3. 客观下线:当半数以上持有槽位的主节点都认为某节点为主观下线时,则该节点就为客观下线。客观下线时,首先需要通知集群内所有节点标记故障节点为客观下线,然后通知故障节点的从节点,触发故障转移流程

2. 故障恢复

    1. 第一步——检查资格:即检查故障节点的从节点中有哪些是具备成为主节点资格的,每个从节点检查与故障主节点的断线时间,如果时间超过cluster-node-timeout*cluster-slave-validity-factor(这两个都是节点配置文件中的配置参数),则取消该从节点的资格

    2. 第二步——准备选举时间:在第一步中检查了每个从节点与故障主节点的断线时间,那么在第二步中,断线时间最短的将会优先获得选举资格(因为断线时间越短,意味着从节点中的数据偏移量越大,也就意味着丢失的数据会更少),这样就有可能获取更多的票数进而成为主节点

5d230377f110083d13c0b37fe1f8c5d6e9f.jpg

    3. 第三步——选举投票:当从节点获取选举资格后,将会向其他主节点发起选举请求,其他主节点就会进行投票,优先级越高的从节点就越有可能成为主节点,当从节点获取的票数到达一定数值时,就会替换成为主节点

    4. 第四步——替换主节点:当从节点经过投票后确定为替换主节点后,首先要改变自己从节点的身份,也就是执行slaveof no one命令,成为一个主节点,然后将原故障主节点负责的槽位删除并分配到新的主节点中,再将其他连接到原故障主节点的从节点进行迁移重新连接到新主节点上,再向集群中广播pong消息,表示已经进行替换主节点

转载于:https://my.oschina.net/ProgramerLife/blog/2874447

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值