Redis_哨兵模式

哨兵模式解决的问题

主节点宕机时,若人工选择新主节点,并将其余从节点修改为新主节点的从节点,将会十分繁琐;哨兵模式的出现就是为了解决该情况

哨兵模式概述

哨兵模式Redis提供的一种特殊模式,通过开启哨兵进程监视主节点的运行情况(判断是否宕机)

哨兵通过间歇性向主节点发送消息,以主节点是否(在指定时间内)回应作为依据,判断主节点是否宕机

哨兵会在主节点宕机后自行投票选举新主节点,并修改自身的配置文件、通过发布订阅模式通知其余从节点修改配置文件,成为新主节点的从节点

哨兵模式图解

让哨兵进行单兵作战,可能会发生问题,所以通常会建立哨兵集群,哨兵集群间也会相互监控

判断主节点是否宕机

主观下线:仅一个哨兵检测到主节点宕机时,并不会马上发起failover(故障转移),因为此时仅是该哨兵主观认为服务器宕机

客观下线:该哨兵主观认为主节点宕机后,会向其余哨兵发送is-master-down-by-addr命令,其余哨兵会立即判断主节点是否宕机,并做出回应:肯定或否定;若最终认为主节点宕机的哨兵数大于quorum参数值(配置文件中指定),则该节点判断主节点客观下线

判断主节点客观下线后,哨兵们会进行哨兵领袖选举(故障转移的工作一个哨兵就能完成)

Leader(领袖)选举

领袖选举:哨兵们对候选者进行投票

候选者:判断主节点客观下线的哨兵

候选者会向其余哨兵发送投票命令,表明希望成为领袖,并要求其余哨兵为自己投票;哨兵们均有一次投票机会,候选者会将票投给自己

成为领袖的条件:

  1. 获得半数以上的赞成票
  2. 赞成票数大于quorum参数值

存在多个候选者时:

哨兵们会为最先收到的投票命令的发送者投票,再次收到投票命令后将拒绝投票

为什么哨兵集群的最少哨兵数为3

哨兵集群下quorum参数最小值为2,毕竟若quorum参数值为1,则会产生"独裁":主观下线与客观下线等价,此时集群就失去了意义

哨兵仅有一位时不能被称为集群,所以在此讨论哨兵有两位时的情况:

此时quorum参数值只能为2,为1会产生"独裁",大于2则哨兵失去作用:无法判断客观下线

此时是否能成功进行领袖选举?

回顾上文所说的当选领袖条件,显然赞成票数大于quorum参数值是无法实现的,故无法成功进行领袖选举

同样的思路,可验证当quorum参数值为2时、哨兵有三位时可成功进行领袖选举,故哨兵集群的最少哨兵数为3(当然,若将quorum参数设置为3,此时依旧无法成功进行领袖选举)

创建哨兵进程的命令

redis-server sentinel配置文件路径 --sentinel 或 redis-sentinel sentinel配置文件路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值