Redis之Sentinel(哨兵)机制

news/2025/3/19 21:26:25/

一、Sentinel是什么?

Sentinel(哨岗、哨兵)是Redis的高可用性(high availability)解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。

二、连接

对于每个被Sentinel监视的主服务器来说,Sentinel会创建两个连向主服务器的异步网络连接:
❑一个是命令连接,这个连接专门用于向主服务器发送命令,并接收命令回复。
❑另一个是订阅连接,这个连接专门用于订阅主服务器的__sentinel__:hello频道。
命令连接主要用于sentinel给服务器发送命令,订阅连接可以让各sentinel之间相互感知

三、sentinel检测下线与选举领头sentinel

  • Sentinel配置文件中的down-after-milliseconds选项指定了Sentinel判断实例进入主观下线所需的时间长度:如果一个实例在down-after-milliseconds毫秒内,连续向Sentinel返回无效回复,那么Sentinel会修改这个实例所对应的实例结构,在结构的flags属性中打开SRI_S_DOWN标识,以此来表示这个实例已经进入主观下线状态
  • 当Sentinel将一个主服务器判断为主观下线之后,为了确认这个主服务器是否真的下线了,它会向同样监视这一主服务器的其他Sentinel进行询问,看它们是否也认为主服务器已经进入了下线状态(可以是主观下线或者客观下线)。当Sentinel从其他Sentinel那里接收到足够数量的已下线判断之后,Sentinel就会将从服务器判定为客观下线,并对主服务器执行故障转移操作
    所有在线的Sentinel都有被选为领头Sentinel的资格:最先向目标Sentinel发送设置要求的源Sentinel将成为目标Sentinel的局部领头Sentinel,而之后接收到的所有设置要求都会被目标Sentinel拒绝

四、Redis重新选主

按照以下规则过滤筛选
(1)删除处于下线或断线状态的从服务器
(2)删除列表中最近5秒内没有回复过领头sentinel的从服务器
(3)从服务器启动时,配置文件可配置优先级,按配置的优先级进行排序,找优先级最大
(4)优先级相同的,找复制偏移量最大的从服务器选为主服务器
选好主服务器之后,领头sentinel便可以向新主服务器发送slave of no one命令让其成为新主服务器
接着让其他从服务器执行slave of命令成为新主的从服务器


http://www.ppmy.cn/news/1070377.html

相关文章

RT_Thread内核机制学习(六)信号量

要传输较大数据时,使用队列。 传输较小数值时,使用邮箱。 队列、邮箱用来传递数据。 如果只是用来传递资源的个数,可以使用信号量。 A车与B车只需要传递信号量(代表资源)。 信号量 获取信号量 如果value>0&…

Pyecharts教程(九):使用Pyecharts绘制K线图的基本示例

Pyecharts教程(九):使用Pyecharts绘制K线图的基本示例 作者:安静到无声 个人主页 目录 Pyecharts教程(九):使用Pyecharts绘制K线图的基本示例完整代码推荐专栏引言: K线图是用于展示股票、期货等金融市场价格变动的一种图表形式。在Python中,可以使用Pyecharts库来绘制K线…

如何在YouTube平台成功开展联盟营销?详细攻略

在当今数字化时代,联盟营销已成为企业实现品牌曝光、拓展市场的重要策略之一。而YouTube作为全球最大的视频分享平台,拥有庞大的用户群体和广告资源,成为许多企业开展联盟营销的理想平台。本文将为您介绍如何在YouTube平台上开展联盟营销并获…

VMware虚拟机---Ubuntu无法连接网络该怎么解决?

在学习使用Linux系统时,由于多数同学们的PC上多是Windows系统,故会选择使用VMware创建一个虚拟机来安装Linux系统进行学习。 安装完成之后,在使用时总是会遇到各种各样的问题。本片随笔就主要针对可能出现的网络问题进行一个总结,…

配置uniapp调试环境

目录 uni-app介绍 uni-app开发工具HBuilderX 创建项目前提条件 uni-app项目结构 配置mumu模拟器 uni-app生命周期 1.应用生命周期 小程序规范 2.页面生命周期-小程序规范 3.组件生命周期 vue规范 uni-app登录按钮方法 uni-app发布安卓app uni-app介绍 uni-app 是一个…

23款奔驰S400商务型升级裸眼3D仪表盘,体验高配乐趣

3D驾驶员显示屏能帮助您密切留意该显示屏中的重要信息。驾驶辅助系统的警告图标和功能图标都有醒目的3D效果,能够立即引起驾驶员的注意。不仅如此,显示屏还能以出色的 3D 影像来显示车辆前方的汽车、卡车、客车和摩托车等车辆。

Kratos源码-日志-目录

文章目录 前言一、Java中的日志门面二、源码分析总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、Java中的日志门面 Kratos源码-Java中的日志框架 二、源码分析 Kratos源码-Logging 总结

Arduino RGBLED灯 模块学习与使用

Arduino RGBLED灯模块学习与使用 硬件原理制作衍生连接线Mixly程序Arduino程序演示视频 人生如逆旅,我亦是行人。 —— 苏轼江客:时荒 硬件原理 RGBLED灯三个引脚分别控制三个LED灯的亮度,RGB分别是red,green,blue的英文缩写&…