Redis的哨兵模式

Redis的主从复制模式下, 一旦主节点由于故障不能提供服务, 需要人工将从节点晋升为主节点, 同时还要通知应用方更新主节点地址, 对于很多应用场景这种故障处理的方式是无法接受的。 可喜的是Redis从2.8开始正式提供了Redis Sentinel(哨兵) 架构来解决这个问题。
1.哨兵模式介绍
Sentinel(哨兵)进程是用于监控redis集群中Master主服务器工作的状态,在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用(HA),其已经被集成在redis2.6+的版本中,Redis的哨兵模式到了2.8版本之后就稳定了下来。哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。当被监控的某个Redis节点出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作。
哨兵是redis集群架构中非常重要的一个组件,主要功能如下:

  1. 集群监控:负责监控redis master和slave进程是否正常工作
  2. 消息通知:如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
  3. 故障转移:如果master node挂掉了,会自动转移到slave node上 4. 配置中心:如果故障转移发生了,通知client客户端新的master地址
    2.哨兵进程的工作方式

2.1监控过程

  1. 每个Sentinel(哨兵)进程以每秒钟一次的频率向整个集群中的Master主服务器,Slave从服务器以及其他Sentinel(哨兵)进程发送一个 PING 命令。
  2. 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-aftermilliseconds 选项所指定的值,则这个实例会被 Sentinel(哨兵)进程标记为主观下线(SDOWN)。
  3. 如果一个Master主服务器被标记为主观下线(SDOWN),则正在监视这个Master主服务器的所有Sentinel(哨兵)进程要以每秒一次的频率确认Master主服务器的确进入了主观下线状态。
  4. 当有足够数量的 Sentinel(哨兵)进程(大于等于配置文件指定的值)在指定的时间范围内确认Master主服务器进入了主观下线状态(SDOWN), 则Master主服务器会被标记为客观下线(ODOWN)。
  5. 在一般情况下, 每个Sentinel(哨兵)进程会以每 10 秒一次的频率向集群中的所有Master主服务
    器、Slave从服务器发送 INFO 命令。
  6. 当Master主服务器被 Sentinel(哨兵)进程标记为客观下线(ODOWN)时,Sentinel(哨兵)进
    程向下线的 Master主服务器的所有 Slave从服务器发送 INFO 命令的频率会从 10 秒一次改为每秒
    一次。
  7. 若没有足够数量的 Sentinel(哨兵)进程同意 Master主服务器下线, Master主服务器的客观下
    线状态就会被移除。若 Master主服务器重新向 Sentinel(哨兵)进程发送 PING 命令返回有效回复,Master主服务器的主观下线状态就会被移除。
    2.2 sdown和odown
  8. sdown和odown两种失败状态
  9. sdown是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机
  10. odown是客观宕机,如果quorum数量的哨兵都觉得一个master宕机了,那么就是客观宕机
  11. sdown达成的条件:如果一个哨兵ping一个master,超过了is-master-down-after-milliseconds
    指定的毫秒数之后,就主观认为master宕机
  12. odown达成的条件:如果一个哨兵在指定时间内,收到了quorum指定数量的其他哨兵也认为那个
    master是sdown了,那么就认为是odown了,客观认为master宕机
    2.3 quorum和majority
  13. quorum:确认odown的最少的哨兵数量
  14. majority:授权进行主从切换的最少的哨兵数量
  15. 每次一个哨兵要做主备切换,首先需要quorum数量的哨兵认为odown,然后选举出一个哨兵来做
    切换,这个哨兵还得得到majority哨兵的授权,才能正式执行切换
  16. 如果quorum < majority,比如5个哨兵,majority就是3,quorum设置为2,那么就3个哨兵授权
    就可以执行切换,但是如果quorum >= majority,那么必须quorum数量的哨兵都授权,比如5个
    哨兵,quorum是5,那么必须5个哨兵都同意授权,才能执行切换
    2.4为什么哨兵至少3个节点
    经典的是一主多从三哨兵
    redis支持高并发 读 11万次/S 写8.7万次/S 从机多少个 每秒每增加10万并发 就增加一台从机
    哨兵集群必须部署2个以上节点。如果哨兵集群仅仅部署了个2个哨兵实例,那么它的majority就是2(2 的majority=2,3的majority=2,5的majority=3,4的majority=2),如果其中一个哨兵宕机了,就无
    法满足majority>=2这个条件,那么在master发生故障的时候也就无法进行主从切换。
    1个哨兵 宕机了 就不能做主从切换了
    2个哨兵 选举切换者 需要一半以上 2个的一半以上 2个 一个宕机了 做不了主从切换了
    3个哨兵 一半以上是2个
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值