尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Redis sentinal模式,master挂了的 选举过程

Redis sentinal模式,master挂了的 选举过程
📅 发布时间:2026/6/20 6:56:45

目录
    • 🛑 Redis Sentinel 集群故障转移和选举流程
      • 1. 故障判定与仲裁 (Quorum)
      • 2. 选举领头 Sentinel(Leader Sentinel)
      • 3. 执行新的 Master 选举(Slave 选举)
      • 4. 重新配置其余节点
  • 为什么需要选举 Leader Sentinel
    • 1. 避免“脑裂”(Split-Brain)与数据冲突
      • 设想没有 Leader Sentinel 的情况:
      • 选举 Leader Sentinel 的作用:
    • 2. 保证操作的一致性(多数原则)
    • 3. 简化和集中协调配置

这是一个关于 Redis Sentinel(哨兵)模式 下的主节点(Master)故障转移和选举过程的问题。


🛑 Redis Sentinel 集群故障转移和选举流程

首先需要澄清一点:您描述的“Redis 5 节点集群,使用哨兵模式”是一个常见的误解。

  • Redis Cluster(原生集群) 自身具备去中心化的故障转移和数据分片能力,通常不需要 Sentinel。
  • Redis Sentinel 模式是用于管理一个 Master-Slave 架构 的高可用方案。

根据您的描述,这是一个 1 Master + 4 Slave 的 Redis 实例,由 N 个 Sentinel 进程 组成的监控系统进行管理。

在 Master 挂掉后,新的 Master 选举和故障转移 流程完全由 Sentinel 进程 控制,Redis 数据节点(Master/Slave)本身不参与选举投票。

1. 故障判定与仲裁 (Quorum)

  1. 客观下线(ODOWN)判定:
    • 当 Master 挂掉时,每一个 Sentinel 都会发现 Master 无法访问,并将其标记为主观下线(SDOWN)。
    • 为了确认 Master 确实挂了,Sentinel 需要达到一个仲裁票数(Quorum)。假设您配置了 $N$ 个 Sentinel,且 Quorum 设置为 $Q$。
    • 当 $Q$ 个或更多 Sentinel 确认 Master 确实下线时,Master 才会被标记为客观下线(ODOWN)。
    • 只有当 Master 被标记为 ODOWN 后,Sentinel 集群才会启动故障转移程序。

2. 选举领头 Sentinel(Leader Sentinel)

一旦 Master 被标记为 ODOWN,所有的 Sentinel 进程会开始竞争,选举出一个 领头 Sentinel(Leader Sentinel) 来负责执行故障转移操作。

  • 选举算法: Sentinel 使用 Raft 算法 的子集来选举 Leader。
    • 每个 Sentinel 都会向其他 Sentinel 发送 SENTINEL is-master-down-for-service 命令,并附带一个请求投票。
    • 收到投票请求的 Sentinel,如果还没有投给其他人,就会回复同意。
    • 第一个获得多数票($\lfloor N/2 \rfloor + 1$ 票,其中 $N$ 是 Sentinel 进程总数)的 Sentinel,将成为 Leader Sentinel。

3. 执行新的 Master 选举(Slave 选举)

Leader Sentinel 诞生后,它会负责从剩余的 4 个 Slave 节点中选举出一个新的 Master:

  1. 过滤不合格的 Slave:
    • 首先,Leader Sentinel 会排除掉那些状态不佳或通信不正常的 Slave。
    • 然后,会排除掉那些最近与原 Master 断开时间过长的 Slave(防止数据丢失过多)。
  2. Slave 优先级排序: Leader Sentinel 会根据以下几个标准对合格的 Slave 进行排序:
    • slave-priority 配置: 优先级数字最小(即最高优先级)的 Slave 会排在最前面。
    • 复制偏移量(Replication Offset): 拥有最大复制偏移量(即数据最完整、与原 Master 同步程度最高)的 Slave 会被优先选中。
    • Run ID: 最后,如果复制偏移量也相同,则会按照 Run ID 进行字典排序。
  3. 选定新 Master:
    • 排名最高的 Slave 节点 将被选中,Leader Sentinel 会向它发送 SLAVEOF NO ONE 命令,使其晋升为新的 Master。

4. 重新配置其余节点

  • 剩下的 3 个 Slave 节点会被重新配置,让它们复制(Replicate)新选举出来的 Master。
  • 如果原 Master 重新上线,它将以新的 Slave 身份加入集群,复制当前 Master 的数据。

总结您的场景中的选举核心:

  • 谁来选: Sentinel 进程 投票选举 Leader Sentinel(使用 Raft 多数票原则)。
  • 选谁当 Master: Leader Sentinel 在剩余的 4 个 Slave 中,根据优先级和数据完整度(复制偏移量)选出最好的一个来晋升。

为什么需要选举 Leader Sentinel

这是一个非常关键的问题。在 Redis Sentinel 模式中,选举 Leader Sentinel 是为了确保故障转移的原子性和一致性,防止“脑裂”(Split-Brain)等灾难性问题发生。

如果不需要选举 Leader Sentinel,而是让所有 Sentinel 都自行执行故障转移,就会出现以下严重问题:


1. 避免“脑裂”(Split-Brain)与数据冲突

这是最主要的原因。

设想没有 Leader Sentinel 的情况:

  • 假设您有 3 个 Sentinel(S1, S2, S3)。
  • 它们同时发现 Master 挂了,并决定启动故障转移。
  • S1 可能选了 Slave A 当新 Master。
  • S2 可能选了 Slave B 当新 Master。

结果:

  • 集群中同时存在两个 Master(A 和 B),这就是脑裂。
  • 客户端可能连接到 A,写入数据;其他客户端可能连接到 B,写入另一部分数据。
  • 当网络恢复后,这些数据将无法合并,导致严重的数据不一致和数据丢失。

选举 Leader Sentinel 的作用:

  • 单一决策者: 只有通过选举产生的 Leader Sentinel 拥有执行 SLAVEOF NO ONE(晋升 Slave)和重新配置其他节点(发送 SLAVEOF <New Master>)的权力。
  • 保证原子性: Leader Sentinel 保证了在同一时间段内,只有一个新的 Master 会被选出和配置。所有节点最终都会同步到这个唯一的 Master 上,从而避免了脑裂和数据冲突。

2. 保证操作的一致性(多数原则)

Sentinel 的故障转移必须基于集群的共识,而不是单个节点的判断。

  • 客观下线(ODOWN) 机制确保了 Master 的故障是多数 Sentinel 认可的。
  • Leader 选举 机制确保了执行转移操作的权力也获得了多数 Sentinel 的认可。

如果 Master 节点只是暂时网络抖动,少数 Sentinel 错误地启动了故障转移,可能会导致不必要的切换。通过 Leader 选举(基于 Raft 多数原则),可以确保只有在多数派认可的情况下,才能进行高风险的系统变更操作。


3. 简化和集中协调配置

故障转移不仅仅是选一个新的 Master,还包括后续的一系列配置任务:

  1. 向新 Master 发送 SLAVEOF NO ONE。
  2. 向所有旧 Slave 发送 SLAVEOF <New Master IP:Port>。
  3. 更新自己的配置,记录新的 Master 信息。
  4. 如果旧 Master 重新上线,要通知它作为新 Master 的 Slave 启动。

如果没有一个 Leader 来集中协调这些步骤,所有 Sentinel 独立执行这些操作,很容易产生命令冲突、重复操作或遗漏步骤,使故障转移流程变得复杂且不可靠。

总结:

选举 Leader Sentinel 的根本目的,就是将执行故障转移这一关键且高风险的任务的权力,集中到集群多数 Sentinel 共同认可的唯一节点身上,以确保系统的高可用性和数据一致性。

相关新闻

  • CSP-S模拟28
  • 利用linux系统自带的cron 定时备份数据库,不需要写代码了
  • python本地生成验证码图片

最新新闻

  • 软件测试基础:黑盒、白盒、灰盒测试
  • 2026年工业工厂吸尘器Top3:Shiwosi史沃斯凭什么第一? - 工业清洁测评社
  • 多智能体系统中的向量化声誉传播机制TrustFlow解析
  • Qwen3vl多模态后训练实战:LLamaFactory深度适配指南
  • 国产MLU算网+LLaMA-Factory:零代码微调百余大模型实战指南
  • 猫抓插件:3步搞定浏览器资源嗅探的终极指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号