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

哨兵节点的主要功能有:

  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.mzph.cn/bicheng/37217.shtml

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

相关文章

社交风潮塑造者:探索用户在Facebook的影响力

在当今数字化社会中,Facebook不仅是人们社交互动的主要平台,更是塑造社交风潮和文化趋势的重要力量。本文将从另一个角度深入探讨用户在Facebook上的影响力,探索其如何通过个人行为和互动,影响和改变社会的各个方面。 个人表达和内…

Cryptographic algorithms—(Green-Book)加密算法

Cryptographic algorithms—加密算法 9.2.3 加密算法9.2.3.1 概述9.2.3.2 哈希函数9.2.3.3 对称密钥算法9.2.3.3.1 概述9.2.3.3.2 加密和解密9.2.3.3.3 高级加密标准9.2.3.3.4 加密操作模式9.2.3.3.5 消息认证码9.2.3.3.6 密钥包装9.2.3.3.7 Galois/Counter Mode9.2.3.3.7.1 概…

Python中相关软件安装

1. python安装 1.下载地址 https://www.python.org/downloads/2.选择安装版本 1. Anaconda安装 安装地址 -- 清华大学镜像站点 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/查看anaconda是否安装成功 2.conda安装好后,将镜像源修改为清华大学的镜像…

音频Balance源码总结

音频Balance源码总结 何为音频Balance? 顾名思义,Balance及平衡,平衡也就是涉及多方,音频左右甚至四通道,调节所有通道的音量比,使用户在空间内听到各个通道的音频大小不一,好似置身于真实环境…

vue 组件批量删除

element ui table表格中前面这个勾选框 对应 type"selection" 属性,绑定事件时selection-change,当你勾选全面的框时就会触发selection-change 对应的事件 绑定事件里面这样定义方法时,这个val 就是选中的时候那一行的数据,如下图…

【数据分享】《中国县城建设统计年鉴》2015-2022

而今天要免费分享的数据就是2015-2022年间出版的《中国县城建设统计年鉴》并以多格式提供免费下载。(无需分享朋友圈即可获取) 数据介绍 在中国快速城镇化的进程中,县城作为连接城市与乡村的重要节点,其建设与发展受到了广泛关注…

高性价比 ESP32 网络收音机:OLED 显示+编码器控制 (源码开源)

摘要: 本文将详细介绍如何使用 ESP32 开发板制作一个功能完备的网络收音机。我们将涵盖硬件选择、软件架构、网络连接、音频流解码、用户界面设计等方面,并提供完整的代码示例和详细的解释,帮助您轻松构建自己的网络收音机。 关键词: ESP32, 网络收音机…

免交互和嵌入执行模式

目录 概念 语法格式 统计行数 赋值变量 修改密码​编辑往文件里添加内容 ​编辑​编辑引入变量 整体赋值​编辑 加引号不赋值变量 expect实现免交互 免交互设置密码 免交互切换用户 嵌入执行模式 添加用户并免交互设置密码 免交互登录 传参实现ssh 练习 概念 …

梦想CAD二次开发

1.mxdraw简介 mxdraw是一个HTML5 Canvas JavaScript框架,它在THREE.js的基础上扩展开发,为用户提供了一套在前端绘图更为方便,快捷,高效率的解决方案,mxdraw的实质为一个前端二维绘图平台。你可以使用mxdraw在画布上绘…

复盘|接口自动化测试框架建设的经验与教训

为什么选择这个话题? 一是发现很多“点工”在转型迷茫期都会问一些自动化测试相关的问题,可以说自动化测试是“点工”升级的必经之路;二是Google一下接口自动化测试,你会发现很多自动化测试框架相关的文章,但是大部分…

VBA 批量变换文件名

1. 页面布局 在“main”Sheet中按照下面的格式编辑。 2. 实现代码 Private wsMain As Worksheet Private intIdx As LongPrivate Sub getExcelBookList(strPath As String)Dim fso As ObjectDim objFile As ObjectDim objFolder As ObjectSet fso CreateObject("Script…

CAN和CANFD数据写入.asc文件的dll

因为工作需要,需要做一些硬件不是CANoe的上位机(比如说周立功CAN,NI-CAN),上位机需要有记录数据的功能,所以用Qt制作了一个记录数据的dll,方便重复使用(因为有的客户指定了编程软件,…

Redis主从复制、哨兵以及Cluster集群

1.Redis高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供…

加密教程:pdf怎么加密?7个pdf加密技巧任你选(图文详解)

pdf作为一种便携式文档,是展示内容的首选格式,目前也已广泛应用于交换和分享重要等温,例如内部报告、人力资源文件,以及商业提案等包含敏感信息的文档。然而,在如今的数字化时代,随着越来越多的企业将其文档…

capitalize()方法——字符串首字母转换为大写

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 capitalize()方法用于将字符串的首字母转换为大写,其他字母为小写,例如图1所示的效果。 图1 字符串首字母大写效果…

动手实现一个可发送短信随机密码的高安全性用户密码系统

动手实现一个可发送短信随机密码的高安全性用户密码系统 1、背景2、设计3、代码实现3.1、首先先看一下ThreadSpecificSecureRandom组件代码实现,如图所示3.2、调用nextInt的UserPasswordSystemManager组件的代码实现3.3、UserPasswordSystemManager组件所提供的方法,请看下图…

智慧数据中心可视化:高效管理与直观监控的未来

随着数据中心的规模和复杂性不断增加,传统管理方式难以满足需求。智慧数据中心通过图扑可视化实现实时数据监控和智能分析,将复杂的基础设施直观呈现,极大提升了运维效率、故障排查速度和资源优化能力,为企业提供现代化、智能化的…

农业新质生产力数据(2012-2022年)原始+dofile+测算数据集

数据简介:农业新质生产力是指在现代农业发展中,通过融合尖端科技、信息技术与创新管理模式,实现农业生产效率飞跃、产品质量显著提升及生产可持续性增强的一种革新性生产能力,农业新质生产力代表了从依赖传统资源转向依靠科技创新…

一加Ace3 刷机救砖简化说明

注意:工具使用英文目录,支持救砖和降级。PJE110国行版,CPH2609国际版。目前国行版不能完美转换国际版,每次升级都需要刷oplusstanvbk,不建议使用。跨国转换或ROOT一定先解锁Bootloader,可以使用“一加全能工…

为什么用excel求出的和是错误的?

Excel中求和结果错误的原因可能有几种常见的情况:1. **数据格式问题**:有时候数字可能被错误地视为文本格式。这种情况下,Excel 在求和时会忽略这些单元格。你可以通过将这些单元格的格式改为数值格式来解决。2. **隐藏的行或列**&#xff1a…