数据库-Redis(15)

本文详细介绍了Redis哨兵如何监控Redis集群,包括主观下线和客观下线的概念,哨兵的选举机制,以及在不同情况下如何判断主库下线并自动切换新主库的过程。重点讨论了quorum配置对判断和切换主库的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

71.Redis哨兵是如何监控Redis集群的?

72.Redis哨兵如何判断主库已经下线了呢?

73.Redis哨兵的选举机制是什么样的?

74.Redis 1主4从5哨兵,哨兵配置 quronum为2,如果3个哨兵故障,当主库宕机,哨兵能否判断主库“客观下线”?能否自动切换?

75.主库判定客观下线了,那么如何从剩余的从库中选择一个新的主库呢?


71.Redis哨兵是如何监控Redis集群的?

这是由哨兵向主库发送INFO命令来完成的。就像下图所示,哨兵2给主库发送INFO命令,主库接收到这个命令后,就会把从库列表返回给哨兵。接着,哨兵就可以根据从库列表中的连接信息,和每个从库建立连接,并在这个连接上持续地对从库进行监控。哨兵1和3可以通过相同的方法和从库建立连接。

72.Redis哨兵如何判断主库已经下线了呢?

首先要理解两个概念:主观下线和客观下线

主观下线:任何一个哨兵都可以监控探测,并作出Redis节点下线的判断。

客观下线:有哨兵集群共同决定Redis节点是否下线;

 当某个哨兵(如下图中的哨兵2)判断主库“主观下线”后,就会给其他手柄发送is-master-down-by-addr命令。接着,其他哨兵会根据自己和主库的连接情况,作出Y或者N的响应,Y相当于赞成票,N相当于反对票。

如果赞成票数(这里是2)是大于等于哨兵配置文件中的quorum配置项(比如这里如果是qurorum=2),则可以判定主库客观下线了。

73.Redis哨兵的选举机制是什么样的?

为什么必然会出现选举/共识机制?

为了避免哨兵的单点情况发生,所以需要一个哨兵的分布式集群。作为分布式集群,必然设计共识问题(即选举问题);同时故障的转移和通知都只需要一个主的哨兵节点就可以了。

哨兵的选举机制是什么样的?

哨兵的选举机制其实很简单,就是一个raft选举算法:选举的票数大于等于Num(sentinel)/2+1将成为领导者,如果没有超过,继续选举。

任何一个香橙味Loader的哨兵,要满足两个条件:

第一,拿到半数以上的赞成票;

第二,拿到票数同时还需要大于等于哨兵配置文件中的quronum值。

以3个哨兵为例,假设此时的quorum设置为2,那么任何一个想成为Leader的哨兵只要拿到2张赞成票,就可以了。

74.Redis 1主4从5哨兵,哨兵配置 quronum为2,如果3个哨兵故障,当主库宕机,哨兵能否判断主库“客观下线”?能否自动切换?

经过实际测试:

1.当哨兵集群可以判定主库“主观下线”。由于quronum=2,所以当一个哨兵判断主库“主管下线”后,询问另外一个哨兵后也会得到同样的结果,2个哨兵都判定“主观下线”,达到了quorum的值,因此,哨兵集群可以判定主库为“客观下线”。

2.但哨兵不能完成主从切换。哨兵标记主库“客观下线”后,在选举“哨兵领导者”时,一个哨兵必须拿到超过多数的选票(5/2+1=3票)。但目前只有2个哨兵活着,无论怎么投票,一个哨兵最多只能拿到2票,永远无法达到N/2+1选票的结果。

75.主库判定客观下线了,那么如何从剩余的从库中选择一个新的主库呢?

过滤掉不健康的(下线或者断线),没有回复过哨兵ping响应的从节点。

选择slave-priority从节点优先级最高(redis.conf)的

选择复制偏移量最大,只复制最完整的从节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值