当前位置: 首页 > 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自己独立完成,完全无需人工干预

相关文章:

  • 【C++】string类的使用(万字详解)
  • C语言循环结构实战:while和for到底用哪个?
  • JavaSE核心知识点04工具
  • 微信小程序关于截图、录屏拦截
  • MySQL问题:MVCC是什么?
  • 芯科科技推出首批第三代无线开发平台SoC,高度集成的解决方案推动下一波物联网实现突破
  • CS144 - Lecture 1 记录
  • EasyRTC嵌入式音视频实时通话SDK助力AI与IoT智能硬件打造音视频交互多场景应用
  • 初识 Pytest:测试世界的智能助手
  • ASP.NET MVC添加新控制器示例
  • 【网络通信】网络通信全解
  • 国产化Excel处理组件Spire.XLS教程:如何使用 C# 将 Excel(XLS 或 XLSX)文件转换为 PDF
  • Google Play的最新安全变更可能会让一些高级用户无法使用App
  • leetcode hot100刷题日记——23.数组中的第K个最大元素
  • day12 leetcode-hot100-21(矩阵4)
  • Docker容器启动失败的常见原因分析
  • Git使用手册保姆级教程
  • GC1267F:单相全波风扇电机预驱动芯片解析
  • ubuntu20.04安装NVIDIA显卡驱动(驱动官网下载安装包,解决开机启动黑屏问题,终极保姆式方案教程)
  • 【Android笔记】记一次 CMake 构建 Filament Android 库的完整排错过程(安卓交叉编译、CMake、Ninja)
  • 企业网站 留言板/品牌推广活动有哪些
  • 广西企业响应式网站建设设计/网站诊断分析
  • 邯郸个人做网站/最近新闻报道
  • 网站的滚动字幕怎么做/seo搜索引擎优化是做什么的
  • 产品推广的网站怎么做/南宁 百度网盘
  • 南平企业网站建设/win7优化大师官方免费下载