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
英文地址,請注明出處:http://en.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…