Redis哨兵机制(重点)

一、哨兵机制:

    问:为什么要使用哨兵机制?

    答:redis主从复制存在缺陷,如果主节点出现宕机等问题不能再提供服务,需要人工重新把从节点设置为主节点,还需要通知应用程序更新了主节点的地址;这样处理重复并且时间效率低;因此在redis2.8正式提供哨兵架构

    问: 哨兵是什么?

    答:entinel(哨兵)进程是用于监控redis集群中Master主服务器工作的状态;在Master主服务器发生故障的时候,可以实现Master 和Slave服务器的切换,保证系统的高可用(HA)

    


    redis哨兵(sentinel)系统用于管理多个redis服务器,主要执行一下三个任务:

           监控(Monitoring): 哨兵(Sentinel ) 会不断地检查你的Master和Slave是否运作正常

           提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(Sentinel ) 可以通过 API 向管理员或者其他应用程序发送通知

           自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(Sentinel ) 会开始一次自动故障迁移操作,它会                          将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端                              试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master

 

  执行流程:

         哨兵是一个分布式系统,可以在一个架构中运行多个哨兵进程;哨兵使用流言协议(gossipprotocols)来接受Master是否下线,使用投票协议(agreement protocols)来确定是否需要执行自动故障迁移,选择那个Slave来代替Master

      1、每个哨兵(Sentinel )每秒一次的频率向它所管理的Master、Slave以及其他哨兵(Sentinel )发送PING命令

      2、所管理的Master、Slave以及其他哨兵(Sentinel )应在规定时间内回应PANG;如果发现对象未在指定的相应时间(时间可进行配置down-after-milliseconds)内进行响应,则暂时认为对方已经宕机(主观认为宕机);

      3、如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态(大于等于配置文件指定的值),系统认为该Master确实宕机(客观宕机),通过一定的vote算法,从Slave中选出一台成为Master,然后自动修改相关配置

     4、在一般情况下,每个 Sentinel 以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令;但是当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次

    5、若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除;

         若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除

 

-----------------------------------------------------------------------------------------------------

                      如有错误,请及时指出,让我们一同进步!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值