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

Redis的哨兵机制

哨兵

为什么需要哨兵呢?在Redis的主从架构中,由于主从模式是读写分离的,如果主节点挂了,那么就没有主节点来服务客户端的写操作请求,也没有主节点给从节点进行数据同步。

在这个场景下,我们会尝试进行恢复,假设需要人工介入,选择一个从节点切换为主节点,然后让其他节点指向新的主节点,同时还需要通知上游那些连接Redis主节点的客户端,将配置的主节点IP地址更新为新节点的IP地址。

这听起来是不是很麻烦,一点也不智能?这个时候Redis在2.8版本以后提供的哨兵机制,他的作用是实现主从节点故障转移。他会监测主节点是否存活,如果发现主节点挂了,它就会选举一个从节点切换为主节点,并把新节点的相关信息通知给从节点和客户端。

哨兵节点也是一个节点。

哨兵节点主要负责三件事:监控选主通知

步骤

1.监控与心跳检测

通常部署 3 个或更多 哨兵节点(奇数个,避免脑裂),它们分布在不同的服务器上。

每个哨兵每隔 1 秒 向所有已知的 Master、Slave 和其他 Sentinel 发送 PING 命令。

如果在规定时间内(由 down-after-milliseconds 配置,默认 30 秒)没有收到回复,或者回复了错误信息(如 +DOWN),哨兵就会认为该节点“有问题”。

2.故障节点主观下线

单个哨兵根据自己的心跳检测结果,认为某个节点(通常是 Master)已经下线。就像是“我觉得它挂了”,其他哨兵可能还觉得它是好的。当哨兵在 down-after-milliseconds 时间内无法连通 Master,标记为 SDOWN。

3.故障节点客观下线

大多数哨兵都认为该 Master 下线了,才确认为真正的下线。就像是选举投票一样。

当一个哨兵发现 Master SDOWN 后,它会向其他哨兵发送 ASK-MASTER-DOWN 询问:“你觉得 Master 挂了吗?”

其他哨兵回复自己的判断。

如果同意 Master 下线的哨兵数量 >= 配置的法定人数(Quorum),则该 Master 被标记为 ODOWN

为什么要这样子呢?因为避免了因单个哨兵网络抖动而误判导致不必要的故障转移。

4.Sentinel集群选举Leader

如果要选一个节点为主节点,需要从集群中选一个为Leader

毕竟哨兵节点有很多,每个节点选一个主节点肯定会乱套。

但是也会产生一个新的问题,谁来成为Leader?所有发现 ODOWN 的哨兵都会发起选举,每个节点都可以成为Leader。每个哨兵给自己投一票。哨兵向其他哨兵发送 IS-MASTER-DOWN-BY-ADDR 请求投票。如果一个哨兵收到的票数 > 哨兵总数的一半,它就当选为 Leader。

5.Sentinel Leader决定新主节点

1.过滤故障节点

2.选择优先级slave-priority最大(这里优先级最大,数值越小,也就是选择小的数值)的从节点作为主节点,不存在则继续

3.选择复制偏移量,最大的从节点作为主节点,不存在则继续

4.选择runid(redis每次启动的时候生成随机的runid作为redis的标识)最小的节点作为主节点

http://www.jsqmd.com/news/473443/

相关文章:

  • N_m3u8DL-CLI-SimpleG:图形化M3U8下载工具全攻略
  • 9. GD32VW553外部中断实战:PA0按键触发LED翻转详解
  • 衡山派开发板看门狗(WDT)驱动测试指南:从复位到喂狗的完整功能验证
  • 基于ZCU104的Petalinux定制:从XSA到启动镜像的完整构建流程
  • 【ADC延迟剖析】从数字滤波器到系统响应:SAR与ΔΣ ADC的延迟本质与应用抉择
  • 深入剖析Antd Table固定列布局:从空白间隙到完美适配
  • WinCC 条形图详细使用说明
  • LaTeX技巧:高效绘制带自定义符号的学术统计表格
  • 从拉格朗日插值到门限秘密:Shamir方案核心原理解析
  • 基于GD32E230的雨滴传感器模块驱动移植与ADC/GPIO双模式数据采集实战
  • 你知道普通产品经理和AI产品经理有什么区别吗?
  • HY-MT1.5实时翻译场景测试:边缘设备上的低延迟表现
  • 2026最新野草助手下载安装教程(附官网安装包+图文详解) - xiema
  • 51单片机实战:IIC协议驱动24C02实现LED动态控制
  • 一图看懂LangChain、LangGraph、LangSmith全家桶
  • 基于SpringBoot Actuator与Kubernetes的优雅停机策略优化实践
  • 广州市瑞道化工有限公司核心产品 :尼龙成核剂 - 妙妙水侠
  • Cadence Allegro实战:从零到一构建专业PCB设计流程
  • 转行AI产品经理,90%的人第一步就走错了!
  • 高性能图像处理库
  • AutoDL实战指南:1)平台核心优势解析 2)实例创建与配置 3)Trae远程开发环境搭建
  • 【MCP实战】利用端口转发实现Claude Desktop跨平台访问远程Linux服务器
  • 从双目交汇到三维感知:立体视觉中的深度估计实战
  • Gemma-3-12B-IT WebUI开箱即用:一键部署与参数调节指南
  • STA 静态时序分析 第三章——标准单元库中的高级功耗建模与优化
  • nnUNet v2 进阶指南:从UKAN模型集成到3D数据实战
  • 38K红外遥控电路设计实战:从发射管选型到接收电路优化
  • 【WinForm实战指南】DataGridView控件:从数据绑定到界面交互的完整实践
  • LN-DETR:多尺度特征融合与通道Transformer在肺结节检测中的协同优化
  • 提升研发效能:用快马一键生成阿里P10推崇的工程化基础框架