Redis 哨兵机制的原理(十一)

Redis使用主从复制模式后可以使Redis的读并发量提高,但是主节点挂掉以后,Redis的主从复制模式就只能提供读的功能,无法提供写的功能,因为从节点是开启了只读模式,这种时候可以说Redis的一主多从模式已经不可用了,为了解决这种情况,Redis引入了哨兵模式。

一、Redis哨兵模式(sentinel)

Redis哨兵可以是一个也可以是多个,但是为了保证哨兵的高可用性,一般都会吧Redis哨兵部署成集群(有几个Redis,就部署就几个哨兵),Redis哨兵对整个Redis的主从进行监控。集群中的每一个哨兵都会单独的对master和slave进行监控。

 

下面的故障转移、主观下线与客观下线介绍的背景是一台master、2台slave、3台sentinel、quorum等于2(法定人数)。

故障转移:在Redis的主从模式中,一旦我们的master出现故障,哨兵就会监控到,哨兵就会将一台slave切换成master,继续为用户提供写服务,提高了主从模式的可用性。

假设有一台哨兵检测到master出现故障(无法ping通),那么这个哨兵就会认为master是不可用的,但是这个时候,这个哨兵是不能对master做故障转移的,因为在生产环境中,我们的分布式系统会有很多个节点(网络环境复杂),在某些时刻确实会出现网络抖动,导致当前这个哨兵检测到master不可用(ping不通),但是其他的哨兵检测到master是可用的,这个时候,检测到master不可用的这个哨兵是没有发言权的(不可以进行故障转移),这就是一种主观下线。

主观下线:当有一台哨兵或者少量(没有达到quorum指定的值)的哨兵检测到master不可用的时候,这种情况其实是一种主管判断,这时是不进行故障转移的。我们当前背景是3台哨兵,quorum的值是2,一台哨兵检测到master不可用,就属于主观下线。

客观下线:哨兵集群中,有大多数哨兵检测到master不可用(等于或大于quorum指定的值),就属于客观下线,这种时候就会执行故障转移。我们当前背景是3台哨兵,quorum的值是2,两台或两台以上台哨兵检测到master不可用,就属于客观下线。

所以哨兵集群一般都会部署奇数个,这样才能做到少数服从多数的情况(一半以上的哨兵决定master是否可用),而不会出现对半分的情况(一半哨兵检测到master是可用的,另一半哨兵检测到master是不可用的),这样才能更好的做到一个主观下线的操作,所以哨兵可以是3台、5台、7台······。

选举leader:故障转移是由某一个哨兵去完成的,在哨兵集群中会有一个leader,转移工作有这个leader去完成,这个leader是由选举得出的,选举也是一个少数服从多数的情况,我们现在有3台哨兵,只要有一台获得2票(或者2票以上)的支持,那么这个哨兵就是leader。leader在故障转移时,会从多个slave中挑选一个作为新的master,整个过程都由哨兵leader去完成。

 

挂掉的master重新恢复后,会成为slave节点,注意这时候这个slave节点可能是无法同步数据的,原因与情况在https://blog.csdn.net/b15735105314/article/details/108552847中有具体描述。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值