哨兵模式--哨兵节点的功能?

news2024/10/7 16:25:07

哨兵节点的主要功能有:

  1. 集群监控:监控 主、从节点的健康状况;
  2. 自动切换主节点:当 Master 运行故障,哨兵启动自动故障恢复流程:从 slave 中选择一台作为新 master。
  3. 通知:让 slave 执行 replicaof,与新的 master 同步;并且通知客户端与新 master 建立连接。

集群监控

哨兵(Sentinel)会给 主、从节点 发送PING 命令:

  • 对于 主节点:如果当前哨兵 发送给主节点的PING命令,但主节点并未回复,就会被当前哨兵视为主观下线。如果哨兵集群中的多数哨兵(一般是超过一半)都认为主节点是 主观下线,则 主节点 会被视为客观下线
  • 对于 从节点:如果当前哨兵 发送给主节点的PING命令,但主节点并未回复,就会被当前哨兵视为主观下线

自动切换主节点(故障转移)

在集群监控中,如果 主节点 被视为 客观下线。就会触发 自动切换主节点。选举新的主节点 的条件是(按照如下顺序进行筛选):

  1. 健康状况:那些经常被标记为 主观下线的从节点,会被视为不健康,会被过滤掉;
  2. slave 优先级:每一个节点都会在配置文件中有一个优先级设置(slave-prority),优先级高的从节点 胜出;
  3. 比较 slave 与旧 master 复制进度的差距 offsetoffset值越大,表示从节点和主节点的数据越接近。(如 slave2 的 offset 为90, slave1 偏移量 为100。那么哨兵就会认为slave2的网络不佳,优先选择slave1为新的主节点)、
  4. runIDrunID是每个redis节点启动时随机生成的(按照其字典序比较大小),ID 号最小的从库得分最高,会被选为新主节点。

通知

选举完新主节点之后,还需要:

  1. 哨兵 将 新主节点的信息,发送给其他 从节点,让 slave 执行 replacaof 命令,和新「master 节点」建立连接,并进行数据复制;
  2. 哨兵 还需要将 新主节点信息 通知到所有的客户端,让客户端将读、写请求转移到 新的 master 节点。

补充

如何建立 哨兵 与 master节点、slave节点的通信?

  1. 配置哨兵节点的配置文件:首先,需要配置哨兵的配置文件(通常为sentinel.conf),指定主节点的IP地址、端口以及主节点的名称。
  2. 向master节点发送INFO指令:Sentinel启动后根据配置向Master发送 INFO 指令,获取并保存所有哨兵(Sentinel)状态,主节点(Master)和从节点(Slave)信息。此时,就建立了 哨兵 与 master节点、slave节点的通信信息了。

如何建立 哨兵 与 哨兵 之间的通信?

哨兵之间可以相互通信,主要归功于 Redis 的 pub/sub (发布/订阅)机制。具体步骤:

  1. 哨兵 与 master 节点 建立通信;
  2. 然后,就可以利用 Master 提供的发布/订阅机制,通过订阅Master的__sentinel__:hello频道,当自身节点启动或更新其状态时,重新发布自己的当前状态和信息(Name、IP、Port消息),同时订阅其他哨兵发布的Name、IP、Port消息。
  • 互相发现之后建立起了连接,后续的消息通信就可以直接进行交互

image

主从动态切换(故障转移)的具体流程

参考:详解Redis哨兵模式下,主节点掉线而重新选取主节点的流程 -阿里云开发者社区 (aliyun.com)

主要分为两部分:

  1. 哨兵集群中,选出一个节点作为leader;
  2. 由哨兵leader负责挑选出新的master节点;

哨兵集群选择leader

步骤:

  1. 哨兵集群中的每一个哨兵都会发起一个“拉票请求”。
  2. 收到这个拉票请求的 哨兵节点会 回复一个“投票响应”,有两种结果:投、不投;
  3. 一轮投票完成之后,得票数超过半数的哨兵节点将成为leader;
  4. 如果出现平票的情况,则重新再投一次票。【这也是建议哨兵节点数量设置为 奇数的原因:不容易产生平票的情况。】

img

注意:这里的投票逻辑是:Raft 算法的核心是 “先下手为强”,谁率先发出了拉票请求,谁就有更大的概率成为 leader。

img

哨兵leader挑选出新master节点

前 步是检测 当前主节点是否客观下线的。

  1. 检测当前主节点是否 主观下线:哨兵会定期向主节点和从节点发送PING命令进行心跳检测,以确保这些节点正常运行。如果哨兵在指定的时间内没有收到主节点或从节点的回复,它就会认为该节点主观下线(SDOWN)。

    具体:发送的内容:publish sentinel :hello,如果超时不响应则标记 主观下线(sdown)。超时时间配置 down-after-milliseconds

  2. 检测当前主节点是否 客观下线:当一个哨兵认为主节点主观下线后,它会询问其他哨兵节点,以确定这是否是一个共识。如果足够多的哨兵(一般为超过半数)认为主节点不可达,那么主节点将被标记为客观下线(ODOWN),并开始故障转移流程。

    询问其他哨兵节点时,发送的指令sentinel is-master-down-by-address-port

  3. 哨兵集群选择leader:当确定需要故障转移时,会先选举出一个 哨兵leader,来负责后续的新master节点选举的工作。

  4. 哨兵leader开始选举 新master节点:筛选条件依次如下

    1. 健康状况:那些经常被标记为 主观下线的从节点,会被视为不健康,会被过滤掉;
    2. slave 优先级:每一个节点都会在配置文件中有一个优先级设置(slave-prority),优先级高的从节点 胜出;
    3. 比较 slave 与旧 master 复制进度的差距 offsetoffset值越大,表示从节点和主节点的数据越接近。(如 slave2 的 offset 为90, slave1 偏移量 为100。那么哨兵就会认为slave2的网络不佳,优先选择slave1为新的主节点)、
    4. runIDrunID是每个redis节点启动时随机生成的(按照其字典序比较大小),ID 号最小的从库得分最高,会被选为新主节点。
  5. 信息通知:当选举出新master节点后,哨兵leader会将 ①新主节点 发送给 从节点;②将新主节点信息发送给客户端。

参考

Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理 - Redis - SegmentFault 思否

高可用之战:Redis Sentinal(哨兵模式) - Hello-Brand - 博客园 (cnblogs.com)

redis哨兵模式的原理及部署 - misakivv - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1874745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重磅!UOSDN焕新,开启创新之旅!

亲爱的开发者们 经过精心打磨和优化 全新改版的UOSDN(统信开发者支持网络) 已经正式上线啦! 我们致力于为您打造一个更加便捷、高效、富有创意和互动性的开发平台,详情👉https://uosdn.uniontech.com/ 以UOSDN作为载…

双向长短期记忆神经网络BiLSTM

先说一下LSTM LSTM 是一种特殊的 RNN,它通过引入门控机制来解决传统 RNN 的长期依赖问题。 LSTM 的结构包含以下几个关键组件: 输入门(input gate):决定当前时间步的输入信息对细胞状态的影响程度。遗忘门&#xff…

【深度学习】服务器炼丹代码配置、Python使用指定gpu显卡运行代码

【显卡】服务器炼丹代码配置 写在最前面一、查看哪几块显卡能用二、使用指定gpu运行代码1、指定使用GPU0运行脚本(默认是第一张显卡, 0代表第一张显卡的id,其他的以此类推)2、指定使用多张显卡运行脚本 三、如何使用1、单块显卡使用2、多GPU训练使用Data…

加固三防平板如何提高轨道交通系统的运营效率?

在当今快节奏的社会中,轨道交通系统作为城市交通的重要组成部分,其运营效率的提升对于缓解交通拥堵、满足人们的出行需求以及促进城市的发展具有至关重要的意义。而加固三防平板作为一种先进的技术设备,正逐渐在轨道交通领域发挥着关键作用&a…

Java对象类辨识指南:Object与Objects类的区别详解

今天在写lambda表达式时,用filter来做过滤判断我的结果是否为null时使用到了Objects.nonNull,但是敲着敲着发现不对劲,怎么没有nonNull方法?? 其实时我少敲了一个s,当时自己并没有很清楚Object和Objects两者之前的区别&#xf…

【数字基础设施1007】探索数字基础设施的影响:宽带政策变量数据集来了!

今天给大家分享的是国内顶级期刊2023年发表论文《数字基础设施与代际收入向上流动性——基于“宽带中国”战略的准自然实验》使用到的重要数据集——“宽带中国”政策变量数据、互联网发展指数以及工具变量(所在城市到杭州市的球面距离和到“八纵八横”政策节点城市…

分享6个安卓手机上比较小众冷门还没烂大街的应用

简单分享6个比较小众冷门还没烂大街的应用。 1.GIF工具箱 一款功能全面的GIF动图编辑工具,支持视频转GIF、GIF透明背景、GIF转视频,还能合成动图,输出效果没有水印,唯一不足的一点是页面有广告,不过并不密集。 2.一键…

在Mac上恢复丢失或未保存的Word文档的5种有效方法

“救命!我想在Mac上恢复丢失的Word文档。就在 1 小时前,我错误地删除了它们,并清空了垃圾桶。这些Word文档对我来说非常重要。我不知道如何恢复它们,谁能帮我?提前致谢! 没有什么比忘记保存 Word 文档或在…

富唯智能推出的AMR复合机器人铝板CNC上下料方案

随着科技的不断进步,CNC加工行业正面临着前所未有的变革。传统的CNC上下料方式已无法满足现代生产对效率、精度和安全性的高要求。在这样的背景下,富唯智能推出的AMR复合机器人铝板CNC上下料方案,以其智能化、自动化的特点,引领了…

技术学习的奥秘与乐趣

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 在当今快速发展的科技时代,学习技术已经成为了许多人追求的重要目标之一。无论是为了个人发展&#…

极限竞速地平线4卡顿?这样做快速解决地平线4卡顿问题

极限竞速地平线4全新开放式剧情的设计让玩家的每一次行动都能推动游戏的进程。时间、天气和四季的变化,都将在极限竞速地平线4这里得到真实的呈现。玩家将有机会在壮丽的原生4K和HDR画质下,欣赏到英国那湖泊、山谷、城堡和无数美景,体验一段从…

无需向量量化的自回归图像生成

摘要 https://arxiv.org/pdf/2406.11838 传统观点认为,用于图像生成的自回归模型通常伴随着向量量化的标记。我们观察到,尽管离散值空间可以方便地表示分类分布,但它对于自回归建模来说并不是必需的。在这项工作中,我们提出使用扩…

数据恢复篇:适用于Windows 的顶级数据恢复软件

适用于Windows的免费和付费的最佳数据恢复软件 **嘿,我要和大家一起泄露所有的测试工具。在评论中留下您的想法和最喜欢的选择! 适用于 Windows 的最佳数据恢复软件 1.奇客数据恢复 奇客数据恢复版是Microsoft操作系统的顶级数据恢复软件应用程序之一&a…

第四节:如何使用注解方式从IOC中获取bean(自学Spring boot 3.x的第一天)

大家好,我是网创有方,上一节学习了如何理解Spring的两个特性IOC和AOP,这一节来基于上节的内容进行一个简单实践。这节要实现的效果是通过IOC容器获取到Bean,并且将Bean的属性显示打印出来。 第一步:创建pojo实体类stu…

怎么加快音频播放速度?加快音频播放器的四种方法介绍

怎么加快音频播放速度?许多音乐爱好者对各种类型的歌曲充满了热情,这些歌曲节奏轻快或者缓慢不一,但通常默认的播放速度都是一倍速。有时候,一些旋律悠扬的曲子可能听起来有些慢,这时候一些朋友可能想要尝试加快节奏&a…

若依项目实战之代码生成功能

1.楠哥版 在已有大菜单下新建一小菜单 重新构建后台项目 他的 我的 包路径:com.ruoyi.test …

vue3 动态配置element 的table

需求 合并行、合并标题、列宽可调整、列顺序可调整、可以控制列是否显示、列布局可保存、导出excel… 参考效果 代码 引入 npm i xlsx npm install element-plus --savetable组件 <template><div><div class"table-btn"><el-tooltip conte…

Java学习笔记(一)Java内容介绍、程序举例、DOS命令、Java跨平台特性的本质、课后练习

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍Java内容介绍、程序举例、DOS命令、Java跨平台特性的本质还有几道课后练习详细介绍以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言 …

互联网信任危机:Perplexity搜索引擎如何破坏内容创作者的权益

前段时间&#xff0c;Perplexity搜索引擎还是一颗冉冉升起的明日之星&#xff0c;手握巨额投资&#xff0c;有很美好的未来前景&#xff0c;这时&#xff0c;如果不出意外的话&#xff0c;要出意外。 喜好儿网 Perplexity这家公司&#xff0c;它正试图通过创建一个新型的“答…

使用python基于经纬度获取高德地图定位地址【逆地址解析】

一、高德地图api申请 1. 高德开放平台注册&#xff0c;登录 进入网址&#xff1a;高德开放平台 | 高德地图API 注册 -- 支付宝扫码认证 -- 完善个人信息 -- 登录 2. 申请API &#xff08;1&#xff09;点击头像 -- 应用管理 -- 我的应用 -- 创建新应用 &#xff08;2&…