Redis哨兵模式相关知识

1.简介

哨兵是redis集群架构中非常重要的一个组件,哨兵模式基于主从复制模式,当主从复制模式下的master主节点宕机,通过选举一个master继续提供服务;


2.功能

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


3.特点

哨兵本身也是分布式的,作为一个哨兵集群去运行,相互协调工作

1>.故障转移时,判断一个master node宕机了,需要大部分的哨兵(节点)都同意才行,这就涉及到了分布式选举问题;

2>.即使部分哨兵节点挂掉了,哨兵集群中剩下的节点还是可以正常工作的,因为如果作为高可用机制的一个重要组成部分,故障转移系统本身是单点的,那就太坑了;

3>.目前采用的是sentinel 2版本(对于redis3.0以上版本),相对于sentinel 1版本来说,sentinel 2版本重写了很多代码,主要是让故障转移机制和算法变得更加健壮和简单;


4.核心知识

1>.哨兵至少需要3个实例(/节点)来保证自己的健壮性;
2>.[哨兵 + redis主从]的部署架构,是不能保证数据零丢失的,只能保证redis集群的高可用性;
3>.对于[哨兵+redis主从]这种复杂的部署架构,尽量在测试环境和生产环境都进行充足的测试和演练;


5.为什么redis哨兵集群需要3个节点才能正常工作?

1>.哨兵集群在进行redis故障判断,主备切换的时候需要配置一个参数(qurum),这个参数表示有多少个哨兵节点一致认为master node宕机了(master node状态从sdown变成odown),就可以准备进行主备切换,之后会选出一个新的master node准备故障转移,同时还需要majority数量,也就是集群中大多数哨兵都是运行的,得到majority大多数哨兵的授权,才能正式进行主备切换;


5.1.quorum和majority参数

  • quorum:至少需要多少个哨兵节点一致认为master node宕机(master node状态变成odown),才能允许进行主备切换;
  • majority:至少需要多少个哨兵节点授权(/存活),才能正式进行主备切换;
  • majority=n/2+1; quorum=n-1,(0<quorum<n-1,建议n-1,视情况而定);

1>.每次一个哨兵节点要做主备切换,首先需要quorum数量的哨兵认为master node宕机了,然后选举出一个哨兵来做切换,这个哨兵还得得到majority数量的哨兵的授权,才能正式执行切换

①.如果quorum < majority,比如5个哨兵,majority就是3,quorum设置为2,那么就3个哨兵授权就可以执行切换;

②.如果quorum >= majority,那么必须quorum数量的哨兵都授权,比如5个哨兵,quorum是5,那么必须5个哨兵都同意授权,才能执行切换;

  • 2个哨兵节点的majority=2;

  • 3个哨兵节点的majority=2;

  • 4个哨兵节点的majority=3;

  • 5个哨兵节点的majority=3;

③.假设集群中只有2个节点,quorum=1,majority=2,如果一个节点宕机了,另外一个哨兵准备故障转移/主备切换,但是无法满足majority=2,无法进行真正的故障转移/主备切换;

④.假设集群中只有3个节点,quorum=2,majority=2,如果一个节点宕机了,另外两个哨兵选出一个其中一个哨兵准备故障转移/主备切换,而此时可以满足majority=2,那么就可以进行正式切换;

所以,哨兵集群中至少需要三个实例才能正常工作!!!


6.Redis哨兵主备切换的数据丢失问题

6.1.异步复制导致数据丢失

因为master–>slave的复制是异步的,所以有可能有部分数据还没有复制到slave,master就宕机了,那么这部分还没有复制过去的数据就丢失了;当故障转移/主备切换之后,client所有的写请求,都会基于这个新的master node,那么之前旧的master node内存中那些还没来得及复制到slave node中的数据就丢失了;


6.2.集群脑裂导致数据丢失

1>.脑裂,也就是说,某个master node所在的机器突然脱离了正常的网络,跟其他的slave

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值