当前位置: 首页 > news >正文

尚硅谷redis7 70-72 redis哨兵监控之案例实操7

70 redis哨兵监控之案例实操7

问题:若3个哨兵都宕机了,那谁做转换?

        这种情况很少出现,因为哨兵的任务就是监控,不存在高并发数据的读取,运行压力不大。实际生产都是不同机房不同服务,很少会出现三个哨兵全挂掉的情况。

        哨兵可以同时监控多个master,一行一个。在 sentinel.conf 配置文件中,你可以添加多个 sentinel monitor 指令,例如:

sentinel monitor master1 192.168.1.10 6379 2
sentinel monitor master2 192.168.1.11 6379 2
sentinel monitor master3 192.168.1.12 6379 2

sentinel auth-pass master1 yourpassword1
sentinel auth-pass master2 yourpassword2
sentinel auth-pass master3 yourpassword3

每个 master 节点都可以是一个独立的 Redis 主从结构,哨兵会分别对它们进行:

  • 存活检查

  • 故障判断

  • 主从切换(failover)

71 redis哨兵监控之哨兵的运行流程

哨兵的运行流程和选举原理

当一个主从配置中的master失效之后,sentinel可以选举出一个新的master用于自动接替原master的工作,主从配置中的其他redis服务器自动指向新的master同步数据。
一般建议sentinel采取奇数台,防止某台sentinel无法连接到master导致误切换。比如部署 2 个哨兵,然后 quorum 也设为 2:

  • 只要有 1 台哨兵误判 master 宕机,另外 1 台没问题,就永远无法达成 quorum,既不能判定故障,也不能完成切换。

运行流程,故障切换

三个哨兵监控一主二从,正常运行中


SDown主观下线(Subjectively Down)

SDOWN(主观不可用)是单个sentinel自己主观上检测到的关于master的状态,从sentinel的角度来看,
如果发送了PING心跳后,在一定时间内没有收到合法的回复,就达到了SDOWN的条件。
sentinel配置文件中的down-after-milliseconds设置了判断主观下线的时间长度【默认30s】

所谓主观下线(Subjectively Down,简称SDOWN)指的是单个Sentinel实例对服务器做出的下线判断,即单个sentinel认为某个服务下线(有可能是接收不到订阅,之问的网络不通等等原因)。主观下线就是说如果服务器在[sentinel down-after-milliseconds]给定的毫秒数之内没有回应
PING命令或者返回一个错误消息,那么这个Sentinel会主观的(单方面的)认为这个master不可以用

ODown客观下线(Objectively Down)

ODOWN需要一定数量的sentinel,多个哨兵达成一致意见才能认为一个master客观上已经宕掉

说明

        quorum这个参数是进行客观下线的一个依据,法定人数/法定票数
        意思是至少有quorum个sentinel认为这个master有故障才会对这个master进行下线以及故障转移。因为有的时候,某个sentinel节点可能因为自身网络原因导致无法连接master,而此时master并没有出现故障,所以这就需要多个sentinel都一致认为该master有问题,才可以进行下一步操作,这就保证了公平性和高可用。

选举出领导者哨兵(哨兵中选出兵王)

当主节点被判断客观下线以后,各个哨兵节点会进行协商,先选举出一个领导者哨兵节点(兵王)并由该领导者节点,也即被选举出的兵王进行failover(故障迁移)

“兵王”可能就是指其中一个 Sentinel 实例被选为 Leader,负责发起故障切换。

兵王如何选择出来?raft算法

由兵王开始推动故障切换流程并选出一个新master

        

72 redis哨兵监控之新master选举算法【面试重点】

由兵王开始推动故障切换流程并选出一个新master

选出新master

前提:剩余从机结点健康

首先看从机的权限,谁高选择谁。

        redis.conf文件中,优先级slave-priority或者replica-priority最高的从节点(数字越小优先级越高)□

        Redis 从节点配置中可以设置 slave-priority,数值越小优先级越低,为 0 的永远不会被选为 master。

复制偏移位置offset最大的从节点

        Sentinel 会选择数据最完整、复制进度最前的从节点,避免数据丢失。

最小Run ID的从节点

        字典顺序,ASCII码

主从角色的切换

  1. 执行slaveof no one命令让选出来的从节点成为新的主节点,并通过slaveof命令让其他节点成为其从节点
  2. Sentinel leader会对选举出的新master执行slaveof no one操作,将其提升为master节点
  3. Sentinel leader向其它slave发送命令,让剩余的slave成为新的master节点的slave

故障切换后老 master 节点重启上线

将之前已下线的老master设置为新选出的新master的从节点,当老master重新上线后,它会成为新master的从节点
Sentinel leader会让原来的master降级为slave并恢复正常工作。

总结:上述的failover【故障切换】操作均由sentinel自己独立完成,完全无需人工干预

http://www.xdnf.cn/news/691759.html

相关文章:

  • go实现定时任务
  • QT 5.15.2 程序中文乱码
  • Linux基础 -- Linux 启动调试之深入理解 `initcall_debug` 与 `ignore_loglevel`
  • JavaScript核心总结与现代化应用指南
  • 弥散制氧机工作机制:高原低氧环境的氧浓度重构技术
  • Laravel单元测试使用示例
  • linux安装ffmpeg7.0.2全过程
  • es6 函数解构
  • 【系统架构设计师】2025年上半年真题论文回忆版: 论事件驱动架构及应用(包括解题思路和参考素材)
  • nova14 ultra,是如何防住80°C热水和10000KPa水压冲击的?
  • pytorch部分函数理解
  • 【网络通信】详解网络通信、实现 CS / BS架构 通信
  • xxl-job快速创建复制任务
  • IACEES 2025:创新材料与能源模式,迎接未来的挑战
  • 27、请求处理-【源码分析】-怎么改变默认的_method
  • 【周输入】517周阅读推荐-3
  • Spring Boot 启动流程深度解析:从源码到实践
  • 【烧脑算法】定长滑动窗口:算法题中的“窗口”智慧
  • MySQL OCP 与 Oracle OCP 认证,怎么选?
  • 怎样将win11+ubuntu双系统的ubuntu从机械硬盘迁移至固态硬盘(1)
  • 【Elasticsearch】track_total_hits
  • CAD图纸中的文字看不到,这是什么原因?
  • 传输线的特性阻抗和传播延迟
  • DL00916-基于深度学习的金枪鱼各类别目标检测含完整数据集
  • 131.在 Vue3 中使用 OpenLayers 测量长度和面积,并支持 modifyend 动态更新数值
  • 不打架的协议互通,modbus转profibus网关的总线的高效互通方案
  • C53-字符串引入和注意事项.
  • JavaScript 中 this 指向全解析:从基础到 Vue 应用
  • 【加密算法】
  • Qt/C++开发监控GB28181系统/sip协议/同时支持udp和tcp模式/底层协议解析