Redis Sentinel 非集群模式高可用部署指南

1. Sentinel 在非集群模式的定位

一句话:在单主多从架构中,用 Sentinel 替你盯哨——探测故障、选举新主、通知客户端。

核心四职能:

职能作用点
Monitoring定时 PING 主从,自身也互相探测
Notification通过日志/PubSub/外部调用报警
Automatic FailoverODOWN→投票→复位→新主上线
Configuration Provider客户端调用 SENTINEL get-master-addr-by-name 获取实时主节点

2. Sentinel × Redis 的一致性模型

  • SDOWN:单个 Sentinel 主观判断节点挂了
  • ODOWN:≥ quorum 个 Sentinel 一致认定 → 触发选举
  • 选举:需获得 多数派 授权(≥ ⌈N/2⌉),否则不切换(防止脑裂)
  • 配置纪元(epoch):每次切换都会加 1,保证最终只有“最新纪元”版本存活 → 所有 Sentinel 自动收敛

结论:Sentinel 提供 最终一致,写丢失窗口取决于异步复制加上网络分区时长,可用 min-replicas-* 做上限控制。

3. 最小可行部署(MCR = Master / Clone Replica)

3.1 经典“三箱三哨”
┌─────────┐   ┌─────────┐   ┌─────────┐
│ M1 + S1 │───│ R2 + S2 │───│ R3 + S3 │
└─────────┘   └─────────┘   └─────────┘
quorum = 2
  • 容忍 1 台机器或 1 个 Sentinel 宕机
  • 客户端须配置 所有 Sentinel 地址,建议连接池轮询
3.2 五节点增强 & 跨 AZ
  • 3 × Redis(1 主 2 从)+ 5 × Sentinel
  • quorum = 3 -> 允许 2 台 Sentinel 挂掉
  • 建议 “2 主机 + 1 从机” 在不同可用区,提高容灾级别

4. sentinel.conf 常用参数拆解

指令说明 & 推荐
sentinel monitor <name> <ip> <port> <quorum>监控主;名字唯一
sentinel down-after-milliseconds建议 5 ~ 10 s(视网络 RTT)
sentinel failover-timeout默认为 3 min;影响重新选主冷却期
sentinel parallel-syncs建议 1 或 2,避免同步洪峰
sentinel announce-ip / announce-portDocker/NAT 必配,否则自动发现失效
sentinel auth-user / auth-passRedis >= 6 ACL 模式专用
resolve-hostnames / announce-hostnames若需 TLS + SAN 校验,可开启

启动:redis-server sentinel.conf --sentinel(不带 conf 会拒绝启动)

5. 故障检测 & 自动切换流程

quorum 达标
失败
成功
SDOWN
ODOWN
多数派投票
等待重试
选 Leader Sentinel
挑选优先级最高 Replica
REPLICAOF NO ONE
新主广播 epoch++
其它 Replica REPLICAOF 新主
配置收敛完成
  • Replica 选择策略replica-priority 最小 > offset 最大 > runid 字典序
  • TILT 模式:当系统时钟漂移或事件循环堵塞 > 2 s,通过 30 s“冷静期”保护错判

6. 客户端实战

// Lettuce 示例
RedisClient client = RedisClient.create();
StatefulRedisConnection<String, String> conn =client.connect(RedisURI.Builder.sentinel("10.0.0.1", 26379).withSentinel("10.0.0.2", 26379).withSentinel("10.0.0.3", 26379).withSentinelMasterId("mymaster").build());
  • 超时:设置 readTimeoutdown-after-milliseconds
  • 自动刷新:Lettuce/Redisson 有内置监听 +switch-master 事件

7. Docker / NAT 注意事项

症状根因解决
Sentinel 互联失败26379 被映射--net hostannounce-port
Replica 列表 IP 错误内部 IP 暴露replica-announce-ip 指定外部可达地址

8. 安全加固(ACL vs requirepass)

场景Sentinel → Redis客户端 → Sentinel
ACL 推荐sentinel auth-user/-pass 指定 sentinel-user给 Sentinel 创建最小权限用户(只允许 PING/INFO/SENTINEL …)
老版本sentinel auth-pass <mymaster> pwdrequirepass pwd;客户端需先 AUTH

9. 运行时调参 & 扩缩容

# 新增监控
SENTINEL MONITOR orders 10.0.0.8 6379 3# 修改 down-after 毫秒
SENTINEL SET mymaster down-after-milliseconds 8000# 移除异常 Sentinel
SENTINEL RESET *

温馨提示:改动需在 所有 Sentinel 上同步执行,否则纪元不一致会导致短暂混乱。

10. 常见问题速查

现象排查指令解决方案
频繁切主SENTINEL master mymaster 查看 last-ping-reply调大 down-after-milliseconds;排查网络抖动
切主成功客户端依旧连旧 IP检查客户端库是否监听 +switch-master升级/开启 Sentinel 模式
Docker 集群 failover 失败+sentinel 日志缺失announce-ip/port 配置错误
写丢失比对 offset开启 min-replicas-*、业务侧做重试

结语

Redis Sentinel 为单主多从提供了“开箱即用”的 HA 能力,但也引入了一定的复杂度(最终一致、多节点配置同步等)。在 关键业务 场景中,务必:

  1. 三哨起步,跨故障域部署
  2. 加 ACL / TLS / 防火墙 做多层防护
  3. 定期在预生产 演练 failover,验证应用与运维链路可用
  4. min-replicas-to-write 将数据丢失窗口限制在可接受范围

这样才能真正发挥 Sentinel 的价值,而不是在凌晨三点被“惊喜”叫醒。

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

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

相关文章

2025Java面试八股文

文章目录 Java基础JVM多线程SpringSpring Boot数据库与SQL分布式系统其他 Java基础 自动装箱与拆箱&#xff1a;Java中基础数据类型与包装类之间的转换。例如&#xff0c;Integer x 1; 是装箱&#xff0c;int y x; 是拆箱。Object类常用方法&#xff1a;如clone()、getClass…

宝塔安装nginx-rtmp,音视频直播

前置&#xff1a;需要自己开发音视频直播&#xff0c; 注意不是实时音视频&#xff0c;不是一对一视频聊天&#xff0c;不是视频会议 方案有 srs &#xff0c;nginx-rtmp&#xff0c;live555&#xff0c;node-media-server&#xff0c;EasyDarwin等 今天是说 nginx-rtmp 怎么…

基于微信小程序和深度学习的宠物照片拍摄指导平台的设计与实现

文章目录 摘要前言绪论1. 课题背景2. 国内外现状与趋势2.1 国内研究现状2.2 国外研究现状2.3 发展趋势3. 课题内容相关技术与方法介绍1. 微信小程序开发技术2. 深度学习模型选型2.1 MobileNetV22.2 ResNet-503. 系统架构设计4. 关键技术实现4.1 实时拍摄指导4.2 多模态建议生成…

web布局02

Web 发展的每个不同时期都有新的技术为 Web 布局提供支持&#xff0c;但不管是哪个时期&#xff0c;Web 布局相关的概念和术语都是相同的。如果你想彻底或者更好地掌握 Web 布局&#xff0c;那么首先需要对 Web 布局相关的技术术语有所了解。 在这一节中&#xff0c;我们一起来…

Mac电脑 窗口分屏管理 Magnet Pro

Magnet Pro Mac&#xff0c;是一款功能强大的窗口分屏管理工具&#xff0c;具有多种布局模式、窗口布局功能和其他工具&#xff0c;可以帮助您高效地进行多任务处理和管理工作。 拖动窗口到边缘&#xff0c;可将窗口大小调整到屏幕的一半。拖动窗口到角落&#xff0c;可将窗口…

http2与websocket关系

HTTP/2 和 WebSocket 协议本身确实不兼容&#xff0c;不能像在 HTTP/1.1 中那样用标准 WebSocket 协议&#xff08;ws:// / wss://&#xff09;进行升级握手。但这事儿细节比较多&#xff0c;下面详细讲讲&#xff1a; ✅ HTTP/2 与 WebSocket 的关系 HTTP/2 不直接支持 WebSo…

LoRA 与 CoT 冲突吗

对于一个具有CoT 能力的模型来说&#xff0c;采用普通的数据对其进行LoRA 微调可能会使原模型丢失CoT 能力&#xff0c;从而我们进行思考如下 CoT 与 LoRA 的“冲突”理解 目标不完全一致 导致的效果优化方向&#xff1a; CoT 侧重于提高推理能力和可解释性&#xff0c;它鼓励…

Python爬虫-爬取票牛明星演唱会数据,进行数据分析

前言 本文是该专栏的第61篇,后面会持续分享python爬虫干货知识,记得关注。 本文,笔者以“票牛”平台为例。基于Python爬虫,采集“票牛”平台的明星演唱会(包含“演出城市,演出票价,演出时间”等等)的数据。 废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整…

uniapp的video遮盖了popup

video的默认层级太高&#xff0c;导致popup弹出的时候&#xff0c;部分被video遮挡了 可以利用cover-view&#xff0c;将popup以及内部所有的标签&#xff0c;全都换成cover-view&#xff0c;然后用一个变量控制其显隐 比如原始&#xff1a; 现在&#xff1a;

java面试题02访问修饰符有哪些?区别是什么?

访问修饰符是面向对象编程中实现封装的核心机制&#xff0c;用于控制类、属性、方法等成员的可见性&#xff08;可访问范围&#xff09;。不同的访问修饰符决定了其他类或代码在何处可以访问这些成员。 主要的访问修饰符及其区别如下&#xff08;以 Java 和 C# 为代表&#xf…

在小程序中实现上下左右拖动表格

在小程序的开发中&#xff0c;不可避免会出现上下左右拖动表格的类似需求&#xff0c;下面将把这个简单实现一下 其中主要使用到了overflow: scroll;来使得横向和纵向可以滚动&#xff0c;并且使用负边距 父容器截断的方法来同时隐藏横向和纵向滚动条&#xff0c;从而实现该效…

[MSPM0开发]之九 MSPM0G3507的ADC

[MSPM0开发]之九 MSPM0G3507的ADC 一、 MSPM0G3507 ADC概述二、 MSPM0G3507 ADC系统框图2.1 电压基准2.2 分辨率2.3 硬件均值计算2.4 采样触发源和采样模式2.5 转换模式2.6 转换结果数据格式2.7 高级特性2.7.1 非FIFO模式下的ADC操作&#xff08;单次转换和重复单次转换&#x…

门锁开关;与我们生活中紧密联系!

门锁开关作为日常生活的核心安全组件&#xff0c;其设计与应用直接影响家居安全、使用便捷性及设备寿命&#xff0c;以下是其关键价值与技术要点的系统分析&#xff1a; &#x1f512; ‌一、基础功能&#xff1a;安全与便利的平衡‌ ‌物理防护核心‌ ‌锁体结构‌&#xff1…

WRF-Hydro分布式水文模型:洪水预报、水资源管理与规划、生态水文研究、气候变化影响评估、流域综合管理、水电工程规划与运行

目录 第一部分&#xff1a;WRF-Hydro模型功能及运行流程、依赖库准备 第二部分&#xff1a;WRF-Hydro模式编译、离线运行及案例实践 第三部分&#xff1a;结合多案例进行模式数据制备及实践应用 【内容简述】&#xff1a; WRF-Hydro模型是一个分布式水文模型&#xff0c;‌…

OCRBench:评估多模态大模型的OCR能力

论文地址&#xff1a;OCRBench: On The Hidden Mystery of OCR In Large Multimodal Models&#xff1a;2305.07895 OCRBench在10个文本相关任务上测评多模态大模型&#xff08;LMM&#xff09;的OCR能力&#xff0c;包含1000个问题-答案对&#xff0c;每个问题-答案对包含以下…

servlet前后端交互

前后端交互目录 servlet流程servlet请求JSON格式实现表格效果完整代码 servlet流程 流程图&#xff1a; 客户端&#xff08;浏览器&#xff09;&#xff1a; 技术栈&#xff1a;使用 jQuery Ajax 发起异步请求。请求配置&#xff1a; 请求路径&#xff1a;指定目标Servlet的…

4. 时间序列预测的自回归和自动方法(2)

ar_model.AutoReg 模型通过应用以下元素来估计参数 条件最大似然&#xff08;CML&#xff09;估计量&#xff1a;这是一种涉及条件对数似然函数最大化的方法&#xff0c;据此认为已知的参数要么由理论假设固定&#xff0c;要么更常见地由估计值代替&#xff08;LewiseBeck&…

MySQL(84)如何配置MySQL防火墙?

MySQL防火墙&#xff08;MySQL Enterprise Firewall&#xff09;是一种MySQL企业版特性&#xff0c;用于保护数据库免受SQL注入和其他恶意活动的攻击。它通过学习和监控合法SQL语句&#xff0c;创建一个允许列表&#xff0c;从而阻止未在列表中的SQL语句。 1. 启用MySQL防火墙…

优化 Python 爬虫性能:异步爬取新浪财经大数据

一、同步爬虫的瓶颈 传统的同步爬虫&#xff08;如requestsBeautifulSoup&#xff09;在请求网页时&#xff0c;必须等待服务器返回响应后才能继续下一个请求。这种阻塞式I/O操作在面对大量数据时存在以下问题&#xff1a; 速度慢&#xff1a;每个请求必须串行执行&#xff0…

Visual Studio Code (VSCode) Python 开发环境配置完整指南

一、安装准备 1. 安装 VSCode 官网下载: Visual Studio Code - Code Editing. Redefined安装时建议勾选: "添加到PATH" (方便终端调用)"注册为受支持的文件类型编辑器"2. 安装 Python 官网下载: Download Python | Python.org安装时勾选: "Add Pytho…