哨兵机制:主库挂了,如何不间断服务?

哨兵机制是Redis高可用性的一种解决方案,通过监控、判断主库状态并选择新的主库来实现故障转移。当主库被标记为主观下线后,多个哨兵通过共识确认其为客观下线,然后从库中选取最优者晋升为主库。选取条件包括从库的在线状态、复制进度和优先级。新主库确定后,哨兵会通知其他从库进行角色切换,确保服务的连续性。
摘要由CSDN通过智能技术生成

哨兵机制解决问题

  • 主库是不是真的挂了
  • 用哪个从库做为主库
  • 新主库怎么通知给其他从库

哨兵机制流程

  • 哨兵就是一个运行在特殊模式下的Redis进程,主要负责:监控、选择主库和通知
  • 监控:哨兵进程在运行时,周期性地给所有的主从库发送 PING 命令,检测它们是否仍然在线运行

主管下线和客观下线

  • 主观下线:哨兵进程会使用 PING 命令检测它自己和主、从库的网络连接情况,用来判断实例的状态。如果哨兵发现主库或从库对 PING 命令的响应超时了,那么,哨兵就会先把它标记为“主观下线”。检查从库使用主管下线
  • 检查主库需要检查是否误判。通过哨兵集群,相当于多个哨兵同时判断,商量一下主库是否下线, 少数服从多数,减少误判
  • “客观下线”的标准就是,当有 N 个哨兵实例时,最好要有 N/2 + 1 个实例判断主库为“主观下线”,才能最终判定主库为“客观下线”

怎么选择主库

  • 按照一定的条件筛选掉不符合条件的从库
  • 按照一定的规则,对剩下的从库进行打分,选取分数最高的成为新主库

筛选条件

  • 要检查从库的当前在线状态,还要判断它之前的网络连接状态
  • down-after-milliseconds * 10 配置时间内从库没有链接主库次数超过10次,就会认为从库网络链接不好

打分方式,只要在某一轮中,有从库得分最高,那么它就是主库了,选主过程到此结束,评分进入下一轮

  • 从库优先级: 通过 slave-priority 配置项,给不同的从库设置不同优先级。比如,你有两个从库,它们的内存大小不一样,你可以手动给内存大的实例设置一个高优先级
  • 从库复制进度,选择和旧主库同步最接近的那个从库作为主库,slave_repl_offset 最接近 master_repl_offset,实际上是直接比较个各个从库的offset,数据最新,丢失就会少一些
  • 从库id号:从库的编号。目前,Redis 在选主库时,有一个默认的规定:在优先级和复制进度都相同的情况下,ID 号最小的从库得分最高,会被选为新主库。Redis server启动时,会生成一个40字节长的随机字符串作为runID,具体算法用的是SHA-1算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值