Redis高可用之---哨兵集群

1.概述

redis中存在一个高可用结构的重要进程,sentinel哨兵,可以实现监听主从、控制主从,完成主从复制基础之上的故障替换转移,主节点宕机,从节点顶替。

哨兵也是redis-server进程,比较特殊,不处理数据增删查改,只负责监听主从。

2.运行原理

2.1结构

在主从结构之上,需要引入哨兵行程集群(下面的结构为一主二从三哨兵)

哨兵执行逻辑 :
1.哨兵启动会连接主节点 
2.调用info replication 获取到主从集群的所有节点信息 
3.开启每秒钟的心跳检测(rpc远程通信协议),判断节点是否存活 

  • 从节点宕机,哨兵进程只会做记录 down 
  • 主节点宕机,哨兵开始发起投票选举,在多个从节点中选择其中一个顶替成为新的主节点,其他从节点哨兵重新挂接到新的主节点 

4.投票需要过半机制. 

  • 如果3个哨兵进程,2个以上选择同一个从节点,这个从节点才能顶替原有主节点提供功能 
  • 不过半的投票结果是作废的,将会隔一段时间重新投票 


哨兵需要搭建集群(不让让一个哨兵说了算,否则网络波动一个可能判断失误)
哨兵配置不合理,可能出现平衡的选举,就会等待一段时间,重新选举,为了避免这种情况,一般一主二从三哨兵,就不会出现哨兵选举出现平票的情况。

2.2宕机情况

2.2.1从节点宕机

从节点宕机后,哨兵会记录该节点的宕机状态,当该节点重写启动,原来的宕机事件的记录就被去掉

2.2.2 主节点宕机

redis之所以引入哨兵进程就是为了监听主从,实现一个主从结构的故障替换逻辑。
当哨兵发现master主节点宕机,epoch逻辑时终值,主节点宕机,会在时终值上自增1.然后哨兵开始进行投票,投票2个从节点到底选择谁来当新的主节点(哨兵通过调用节点命令slaveof 重新挂接新的主节点),产生了新的主节点后,原来的主节点就不在是主节点,恢复后可以重新挂接到新的主节点

2.3原理

  • 在哨兵中需要配置监听管理的主节点 
  • 哨兵会连接主节点,从而获取所有集群节点信息,调用主节点的info replication,记录 
  • 每隔一段时间(3秒) 向所有节点发送心跳检测(RPC心跳),判断节点是否宕机 

宕机处理 
1.从节点宕机,哨兵只负责记录,从节点恢复之后,记录修改 
2.主节点宕机,哨兵心跳检测发现宕机,询问其他哨兵,确定宕机.开始执行顶替选举 

  • 从节点中选择一个顶替的节点作为新的主 
  • 将其他存活的从节点重新挂接到新的节点 
  • 记录原来主节点宕机,原有主节点恢复,哨兵修改宕机记录,将原有主节点挂接新节点

哨兵中的执行任务--事件,故障转移,替换就是一个时间,都要经过投票逻辑,只有最终某一个结果是过半票数支持,才通过

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值