尚硅谷redis7 63-69 redis哨兵監控之理論簡介

63 redis哨兵監控之理論簡介

什么是哨兵

master掛了如何辦?從機原地待命。此時數據只能讀取不能更新。因此需要:

吹哨人巡查監控后臺master主機是否故障,如果故障了根據投票數自動將某一個從庫轉換為新主庫,

哨兵的作用


1、監控redis運行狀態,包括master和slave
2、當master down機,能自動將slave切換成新master

如何使用哨兵

主從監控?監控主從redis庫運行是否正常

????????Sentinel 實時監控 Redis 的主從節點運行狀態,檢測節點是否宕機或失聯。

消息通知?哨兵可以將故障轉移的結果發送給客戶端

????????當發生主從切換后,Sentinel 會將新的主節點信息通知給客戶端或相關服務,確保其連接到正確的主節點。

故障轉移?如果Master異常,則會進行主從切換,將其中一個Slave作為新Master

????????Sentinel 發現主節點(Master)宕機,并經多個 Sentinel 實例協商確認后,會自動將其中一個從節點(Slave)提升為新的主節點,并將其他從節點重新配置為復制新的主節點。

配置中心?客戶端通過連接哨兵來獲得當前Redis服務的主節點地址

????????客戶端可以通過連接 Sentinel 獲取當前可用的主節點地址,而不需要手動修改配置,從而實現動態主節點發現。

64 redis哨兵監控之案例實操1

3個哨兵?自動監控和維護集群,不存放數據,只是吹哨人

1主2從 用于數據讀取和存放

為什么要有 3 個 Sentinel 哨兵?

1.防止一個哨兵掛了,無法實現監控

2.基數好投票

Redis Sentinel 使用一種簡單的共識機制來避免誤判【有時候主機并不是真死了,可能是網絡不好】。哨兵集群通過“投票”來決定主節點是否真的故障。這個過程稱為:

故障主觀判斷(sdown) → 故障客觀判斷(odown)

  • 每個 Sentinel 實例獨立判斷主節點是否故障(sdown

  • 當大多數 Sentinel 都認為主節點不可用時,才會觸發故障轉移(odown)

Redis 集群中通常部署 3 個 Sentinel(哨兵),是為了實現高可用的主從切換機制。哨兵之間通過投票機制達成共識,判斷主節點是否真的故障,并協調自動故障轉移。3 個是最小可容忍 1 個故障的投票集,是安全性與資源使用的最佳平衡。

由于硬件問題,無法用6臺機子去模擬過程,因此6379:master,6390、6381:slave。同時三個哨兵和6379共用一個主機。

先看看/opt目錄下默認的sentinel.conf文件【哨兵配置文件】的內容

將此sentinel.conf文件拷貝到myredis文件夾下

重點參數項說明

bind:服務監聽地址,用于客戶端連接,默認本機地址

daemonize:是否以后臺daemon方式運行

protected-mode:安全保護模式

port:端口

logfile:日志文件路徑

pidfile:pid文件路徑? ? 用于指定 進程 ID 文件(PID 文件) 的保存路徑。
dir:工作目錄

設置要監控的Master服務器

sentinel monitor <master-name> <ip> <redis-port> <quorum>

參數說明
<master-name>主節點的名稱(邏輯標識,可自定義)
<ip>要監控的主節點的 IP 地址
<redis-port>主節點的端口
<quorum>最少有多少個 Sentinel 認為主節點掛了,才會進行故障轉移(投票數量)

sentinel auth-pass <master-name> <password> 配置主節點認證密碼的重要命令,用于確保 Sentinel 在連接主節點時通過密碼驗證。

參數說明
<master-name>sentinel monitor 中配置的主節點名稱保持一致
<password>主節點 Redis 的訪問密碼(即 requirepass 設置的密碼)

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster myRedisPassword
這個配置告訴 Sentinel:
“連接并監控名為 mymaster 的主節點時,需要使用密碼 myRedisPassword。”

61 redis哨兵監控之案例實操2?

我們知道,網絡是不可靠的,有時候一個sentinel會因為網絡堵塞而誤以為一個master redis已經死掉了,在sentinel集群環境下需要多個sentinel互相溝通來確認某個master是否真的死了,quorum這個參數是進行客觀下線的一個依據,意思是至少有quorum個sentinel認為這個master有故障,才會對這個master進行下線以及故障轉移。因為有的時候,某個sentinel節點可能因為自身網絡原因,導致無法連接master,而此時master并沒有出現故障,所以,這就需要多個sentinel都一致認為該master有問題,才可以進行下一步操作,這就保證了公平性和高可用。

其他參數配置

  • sentinel down-after-milliseconds <master-name> <milliseconds>:
    • 指定多少毫秒之后,主節點沒有應答哨兵,此時哨兵主觀上認為主節點下線
  • sentinel parallel-syncs <master-name> <nums>:
    • 表示允許并行同步的slave個數,當Master掛了后,哨兵會選出新的Master,此時,剩余的slave會向新的master發起同步數據
  • sentinel failover-timeout <master-name> <milliseconds>:
    • 故障轉移的超時時間,進行故障轉移時,如果超過設置的毫秒,表示故障轉移失敗
  • sentinel notification-script <master-name> <script-path> :
    • 配置當某一事件發生時所需要執行的腳本
  • sentinel client-reconfig-script <master-name> <script-path>:
    • 客戶端重新配置主節點參數腳本

66 redis哨兵監控之案例實操3

如果你使用的是 redis-sentinel 可執行文件(或者你有一個指向 redis-server 的符號鏈接,名為 redis-sentinel),你可以通過以下命令來以 Sentinel 模式運行:

redis-sentinel /path/to/sentinel.conf

否則,你也可以直接使用 redis-server 可執行文件,并通過 Sentinel 模式啟動,如下所示:

redis-server /path/to/sentinel.conf -- sentinel

哨兵默認監聽 TCP 端口 26379,因此要讓哨兵正常工作,你的服務器必須開放 26379 端口,以接收來自其他哨兵實例 IP 地址的連接。否則,哨兵之間將無法通信,也無法就該執行什么操作達成一致,故障轉移也將無法進行。

本案例sentinel文件通用配置

由于機器硬件關系,我們的3個哨兵都同時配置進一臺虛擬機中【例如:192.168.111.169】
sentinel26379.conf

bind 0.0.0.0? ?
daemonize yes
protected-mode no
port 26379
logfile "/myredis/sentinel26379.log"
pidfile /var/run/redis-sentinel26379.pid
dir /myredis
sentinel monitor mymaster 192. 168. 111. 169?6379 2
sentinel auth-pass mymaster 111111

配置項含義
bind 0.0.0.0監聽所有網卡(對外可訪問)
daemonize yes以守護進程方式運行(后臺運行)
protected-mode no關閉保護模式(確保你已配置防火墻,否則不安全)
port 26379Sentinel 的監聽端口,默認就是這個
logfile日志文件路徑(建議確保 /myredis 目錄存在)
pidfilePID 文件路徑(注意你原來寫的是 redis-sentine126379. pid,有空格和拼寫錯)
dirSentinel 持久化信息的工作目錄
sentinel monitor配置要監控的主節點(名稱、IP、端口、投票數)
sentinel auth-passSentinel 連接主節點使用的認證密碼

sentinel26380.conf


sentinel26381.conf
請看一眼sentinel26379.conf、sentinel26380.conf、sentinel26381.conf我們自己填寫的內容
master主機配置文件說明

67 redis哨兵監控之案例實操4

哨兵內容部分

啟動3個哨兵,完成監控

redis-sentinel sentinel26379.conf -- sentinel
redis-sentinel sentinel26380.conf -- sentinel
redis-sentinel sentinel26381.conf -- sentinel

啟動3個哨兵后再測試一次主從復制

原有的master掛了

????????兩臺從機數據是否OK???????? ok
????????是否會從剩下的2臺機器上選出新的master ????????是,master變為6381
????????之前down機的master機器重啟回來,誰將會是新老大?會不會雙master沖突?? ? ? ? 重啟回來會變為從機。

69 reids哨兵監控之案例實操6

broken pipe

6379突然斷開后會報兩種錯誤:

6379斷開后,6380先是會報錯,但過一會又能正常使用

這兩種錯誤幾乎是一樣的原因

認識broken pipe

????????pipe是管道的意思,管道里面是數據流,通常是從文件或網絡套接字讀取的數據。當該管道從另一端突然關閉時,會發生數據突然中斷,即是broken.對于socket來說,可能是網絡被拔出或另一端
的進程崩潰

解決問題

????????其實當該異常產生的時候,對于服務端來說,并沒有多少影響。因為可能是某個客戶端突然中止了進程導致了該錯誤

總結 Broken Pipe
????????這個異常是客戶端讀取超時關閉了連接,這時候服務器端再向客戶端已經斷開的連接寫數據時就發生了broken pipe異常!

誰是master

6381被選為新master,上位成功,以前的6379從master降級變成了slave
6380還是slave,只不過換了個新老大6381(6379變6381),6380還是slave

注意!6379后續可能會變成從機,需要設置訪問新主機的密碼,請設置masterauth項訪問密碼為111111,不然后續可能報錯master_link_status:down

對比配置文件

由于主機從機的位置互換,檢查配置文件會發現里面有關主從機配置的參數也會發生改變:

文件的內容,在運行期間會被sentinel動態進行更改
Master-Slave切換后,master_redis.conf、slave_redis.conf和sentinel.conf的內容都會發生改變,即master_redis.conf中會多一行slaveof的配置,sentinel.conf的監控目標會隨之調換

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82832.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82832.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82832.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

word文檔格式規范(論文格式規范、word格式、論文格式、文章格式、格式prompt)

文章目錄 prompt prompt [格式要求] - 字體&#xff1a;中文宋體小四&#xff1b;英文Times New Roman 12pt&#xff1b;標題黑體 - 行距&#xff1a;1.5倍&#xff08;段前段后0行&#xff09; - 邊距&#xff1a;A4默認&#xff08;上下2.54cm&#xff0c;左右3.17cm&…

SpringBoot+tabula+pdfbox解析pdf中的段落和表格數據

一、前言 在日常業務需求中&#xff0c;往往會遇到解析pdf文件中的段落或者表格數據的需求。 常見的做法是使用 pdfbox 來做&#xff0c;但是它只能提取文本數據&#xff0c;沒有我們在文件頁面上面的那種結構化組織&#xff0c;文本通常是散亂的包含各種換行回車空格等格式&a…

【Elasticsearch】stored_fields

在 Elasticsearch 中&#xff0c;stored_fields 是一個非常重要的概念&#xff0c;主要用于控制文檔存儲和檢索時的行為。以下是對 stored_fields 的詳細解釋&#xff1a; 1\. stored_fields 的作用 stored_fields 用于指定在檢索文檔時需要返回的字段。默認情況下&#xff0c;…

計算機網絡 | 1.1 計算機網絡概述思維導圖

附大綱&#xff1a; 計算機網絡的概念 一個通過通信設備與線路把不同計算機系統連接起來&#xff0c;實現資源共享和信息傳遞的系統 計算機網絡的組成 從組成成分上 硬件&#xff1a;主機、通信鏈路、交換設備、通信處理機軟件&#xff1a;網絡操作系統、聊天軟件等協議&…

HOW - 簡歷和求職面試寶典(三)

文章目錄 1. 面試邀約2. 開始面試和自我介紹第一、面試前的準備工作第二、如何全面地介紹自己1. 面試邀約 第一、先認識日常HR 的工作流程 首先,電話溝通是 HR 核心工作內容的一部分。電話溝通分為兩種:一種是電話預約;另外一種是電話確認。 電話預約很清晰,就是確認面試…

Java基礎 Day24

一、進程和線程 1、進程 &#xff08;1&#xff09;概念 進程 (Process) 是計算機中的程序關于某數據集合上的一次運行活動 是系統進行資源分配的基本單位 簡單理解&#xff1a;程序的執行過程&#xff08;正在運行的應用程序&#xff09; &#xff08;2&#xff09;特性…

C#學習:基于LLM的簡歷評估程序

前言 在pocketflow的例子中看到了一個基于LLM的簡歷評估程序的例子&#xff0c;感覺還挺好玩的&#xff0c;為了練習一下C#&#xff0c;我最近使用C#重寫了一個。 準備不同的簡歷&#xff1a; 查看效果&#xff1a; 不足之處是現實的簡歷應該是pdf格式的&#xff0c;后面可以…

git怎么合并兩個分支

git怎么合并分支代碼 注意: 第一步你得把當前分支合到遠程分支去才能有下面的操作 另外我是將develop分支代碼合并到release分支去 git 命令 查看本地所有分支 git branch切換分支 例如切換到release分支 git checkout release拉取代碼 git pull up release 合并分支 …

Android-kotlin協程學習總結

Kotlin協程實戰對話? ?真題1&#xff1a;協程與線程的本質區別是什么&#xff1f;為什么說協程是輕量級的&#xff1f;?? ?面試官?&#xff1a; “我看你項目中用協程替代了線程池&#xff0c;能說說協程和線程的核心區別嗎&#xff1f;為什么協程更適合高并發&#xf…

uni-app學習筆記十四-vue3中emit的使用

在組件傳值中&#xff0c;無論是props還是slot都是單向數據流&#xff0c;父組件向子組件傳值&#xff0c;子組件不能直接對父組件傳過來的值進行重新賦值。 下面學習子組件向父組件傳值的工具--emit。 在子組件emit設置傳遞的函數名和值 <template><view>子組件…

Java設計模式從基礎到實際運用

第一部分&#xff1a;設計模式基礎 1. 設計模式概述 設計模式(Design Pattern)是一套被反復使用、多數人知曉的、經過分類編目的代碼設計經驗的總結&#xff0c;它描述了在軟件設計過程中一些不斷重復出現的問題以及該問題的解決方案。設計模式是在特定環境下解決軟件設計問題…

鴻蒙OSUniApp 制作自定義的進度條組件#三方框架 #Uniapp

使用 UniApp 制作自定義的進度條組件 在移動應用開發中&#xff0c;進度條是非常常見的 UI 組件&#xff0c;無論是文件上傳、下載、任務進度還是表單填寫反饋&#xff0c;進度條都能為用戶提供直觀的進度提示。雖然 UniApp 提供了一些基礎的進度條能力&#xff0c;但在實際項…

Python爬蟲實戰:研究Beautiful Soup框架相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網的快速發展,網絡上的數據量呈爆炸式增長。如何從海量的網頁數據中高效提取有價值的信息,成為信息科學領域的重要研究課題。網絡爬蟲作為一種自動獲取網頁內容的技術,能夠按照預設規則遍歷互聯網并采集數據,為信息檢索、輿情分析、商…

【Tips】關于PCI和PCIe的配置空間差異和io/memory io讀寫

最近在看同事2023年講的PCI基礎課&#xff0c;感覺確實是豁然開朗了&#xff0c;贊美同事。 PCIe實際上是PCI的擴展&#xff08;extended&#xff09;&#xff0c;PCIe設備相當于是迭代升級產品。 而PCIe的配置空間基于PCI原有的0xFF&#xff08;256字節&#xff09;配置空間…

桂花網體育運動監測方案:開啟幼兒園運動健康管理新篇章

在幼兒教育領域&#xff0c;運動能力的培養與健康監測始終是備受關注的核心環節。隨著科技的飛速發展&#xff0c;如何科學、有效地監測幼兒的運動狀態&#xff0c;成為了幼兒園教育者面臨的一大挑戰。桂花網體育運動監測方案憑借其高效、精準、智能化的特性&#xff0c;為幼兒…

Perforce P4產品簡介:無限擴展+全球協作+安全管控+工具集成(附下載)

本產品簡介由Perforce中國授權合作伙伴——龍智編輯整理&#xff0c;旨在帶您快速了解Perforce P4版本控制系統的強大之處。 世界級無限可擴展的版本控制系統 Perforce P4&#xff08;原Helix Core&#xff09;是業界領先的版本控制平臺&#xff0c;備受19家全球Top20 AAA級游…

pikachu靶場通關筆記08 XSS關卡04-DOM型XSS

目錄 一、XSS原理 二、DOM型XSS 三、源碼分析 1、進入靶場 2、XSS探測 3、源碼分析 四、滲透實戰 1、Payload1 2、Payload2 3、Payload3 本系列為通過《pikachu靶場通關筆記》的XSS關卡(共10關&#xff09;滲透集合&#xff0c;通過對XSS關卡源碼的代碼審計找到XSS風…

安全訪問 std::tuple 的容錯方法及氣象領域應用

安全訪問 std::tuple 的容錯方法及氣象領域應用 1. std::tuple 安全訪問的核心問題 1.1 元組結構性問題&#xff08;編譯時錯誤&#xff09; 當元組元素數量為空時&#xff08;std::tuple<>&#xff09;&#xff0c;任何訪問元素的嘗試都會導致編譯錯誤?&#xff1a;…

Webug4.0靶場通關筆記03- 第3關SQL注入之時間盲注(手注法+腳本法 兩種方法)

目錄 一、源碼分析 1.分析閉合 2.分析輸出 &#xff08;1&#xff09;查詢成功 &#xff08;2&#xff09;查詢失敗 &#xff08;3&#xff09;SQL語句執行報錯 二、第03關 延時注入 1.打開靶場 2.SQL手注 &#xff08;1&#xff09;盲注分析 &#xff08;2&#xf…

【大模型學習網絡互聯】Memory-Mapped I/O MMIO語義與MEM語義

MMIO語義和MEM語義的區別 嗯&#xff0c;用戶要求更詳細地區分MMIO和MEM語義&#xff0c;看來之前的中文對比雖然系統但還不夠深入。用戶可能是嵌入式開發者或OS內核學習者&#xff0c;需要從硬件行為層面理解差異。 用戶連續追問MMIO相關概念&#xff0c;說明ta在接觸底層開發…