Redis哨兵(sentinel)

文章目錄

  • 簡介
  • 搭建框架
  • 具體步驟
    • 主要文件參數
    • 開始配置
  • 案例分析
    • 原有的master掛了
  • 哨兵運行流程和選舉原理
    • 主觀下線
    • 客觀下線(Objectively Down)
    • 選舉出領導者哨兵(哨兵中選出兵王)
  • 選新的master
  • 使用建議

簡介

將某一個從庫轉換為新主庫,繼續對外服務將某一個從庫轉換為新主庫,繼續對外服務
官網理論:https://redis.io/docs/manual/sentinel/

搭建框架

請添加圖片描述

具體步驟

主要文件參數

sentinel.conf文件 是哨兵的主要文件
先介紹一下具體的參數

bin:服務監聽地址,用于客戶端連接,默認本機地址
daemonize:是否以后臺daemon方式運行
protected-mode:安全保護模式
port:端口
logfile:日志文件路徑
pidfile:pid文件路徑
dir:工作目錄
sentinel monitor <master-name> <ip> <redis-port> <quorum> :設置要監控的master服務器,quorum表示最少有幾個哨兵認可客觀下線,同意故障遷移的法定票數。
sentinel auth-pass <master-name> <password>:master設置了密碼,連接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>:客戶端重新配置主節點參數腳本

開始配置

可以 在redis根路徑下配置 一個sentinel文件裝接下來的配置文件
我們的3個哨兵都同時配置進192.168.111.169同一臺機器

注意:myredis文件要在根目錄存在
運行接下來的命令:

cd ~
mkdir myredis

vim 建立3個文件:

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

sentinel26380.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26380
logfile "/myredis/sentinel26380.log"
pidfile /var/run/redis-sentinel26380.pid
dir "/myredis"
sentinel monitor mymaster 192.168.111.169 6379 2
sentinel auth-pass mymaster 111111

sentinel26381.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26381
logfile "/myredis/sentinel26381.log"
pidfile /var/run/redis-sentinel26381.pid
dir "/myredis"
sentinel monitor mymaster 192.168.111.169 6379 2
sentinel auth-pass mymaster 111111

在這里插入圖片描述

首先要滿足主從設置(要正常啟動)

  1. 169機器上新建redis6379.conf配置文件,由于要配合本次案例,請設置masterauth項訪問密碼為111111,不然后續可能報錯master_link_status:down
  2. 172機器上新建redis6380.conf配置文件,設置好replicaof
  3. 173機器上新建redis6381.conf配置文件,設置好replicaof

啟動sentinel

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

在這里插入圖片描述
在這里插入圖片描述

案例分析

原有的master掛了

我們自己手動關閉6379服務器,模擬master掛了
在這里插入圖片描述
問題思考:
1.兩臺從機數據是否OK ok
2.是否會從剩下的2臺機器上選出新的master 會的

并且自己回修改相關的配置文件 填寫
執行slaveof no one命令讓選出來的從節點成為新的主節點,并通過slaveof命令讓其他節點成為其從節點 等等命令

3.之前down機的master機器重啟回來,誰將會是新老大?會不會雙master沖突? 不會沖突 ,它會變成從機

哨兵運行流程和選舉原理

當一個主從配置中的master失效之后,sentinel可以選舉出一個新的master用于自動接替原master的工作,主從配置中的其他redis服務器自動指向新的master同步數據。一般建議sentinel采取奇數臺,防止某一臺sentinel無法連接到master導致誤切換

1.判斷是否下線
2.多個哨兵判斷master是否下線
3.選出兵王
4.兵王去處理master問題,選擇slave當master

主觀下線

所謂主觀下線(Subjectively Down, 簡稱 SDOWN)指的是單個Sentinel實例對服務器做出的下線判斷,即單個sentinel認為某個服務下線(有可能是接收不到訂閱,之間的網絡不通等等原因)。主觀下線就是說如果服務器在[sentinel down-after-milliseconds]給定的毫秒數之內沒有回應PING命令或者返回一個錯誤消息, 那么這個Sentinel會主觀的(單方面的)認為這個master不可以用了.

客觀下線(Objectively Down)

ODOWN需要一定數量的sentinel,多個哨兵達成一致意見才能認為一個master客觀上已經宕掉

選舉出領導者哨兵(哨兵中選出兵王)

當主節點被判斷客觀下線以后,各個哨兵節點會進行協商,先選舉出一個領導者哨兵節點(兵王)并由該領導者節點,也即被選舉出的兵王進行failover(故障遷移)

哨兵領導者,兵王如何選出來的?
Raft算法:
請添加圖片描述

選新的master

選出新master的規則,剩余slave節點健康前提下:

1.redis.conf文件中,優先級slave-priority或者replica-priority最高的從節點(數字越小優先級越高 )
2.復制偏移位置offset最大的從節點
3.最小Run ID的從節點

在這里插入圖片描述

使用建議

  1. 哨兵節點的數量應為多個,哨兵本身應該集群,保證高可用
  2. 哨兵節點的數量應該是奇數
  3. 各個哨兵節點的配置應一致
  4. 如果哨兵節點部署在Docker等容器里面,尤其要注意端口的正確映射
  5. 哨兵集群+主從復制,并不能保證數據零丟失

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

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

相關文章

?operator --- 標準運算符替代函數?

源代碼: Lib/operator.py operator 模塊提供了一套與Python的內置運算符對應的高效率函數。例如&#xff0c;operator.add(x, y) 與表達式 xy 相同。 許多函數名與特殊方法名相同&#xff0c;只是沒有雙下劃線。為了向后兼容性&#xff0c;也保留了許多包含雙下劃線的函數。為了…

Java - HashMap

數組和鏈表 數組&#xff1a; 存儲區間是連續&#xff0c;且占用內存嚴重&#xff0c;空間復雜也很大&#xff0c;時間復雜為O&#xff08;1&#xff09; 優點&#xff1a;是隨機讀取效率很高&#xff0c;原因數組是連續&#xff08;隨機訪問性強&#xff0c;查找速度快&#x…

properties配置和讀取

如何配置和讀取屬性文件 1.屬性文件介紹1.1 什么是屬性文件1.2屬性文件規范1.3 屬性文件優缺點 2.屬性文件讀取4.spring和屬性文件4.1利用注解讀取4.2配置文件里直接引用 4.屬性文件寫入5.注意事項5.總結 1.屬性文件介紹 1.1 什么是屬性文件 Java開發中&#xff0c;我們經常需…

Qt6.5類庫實例大全:Qt Creator快速入門

哈嘍大家好&#xff0c;我是20YC編程小二&#xff01;掃碼關注公眾號&#xff0c;現在可免費領取《C程序員》在線視頻教程哦&#xff01;#下面開始今天內容# 1. Qt Creator介紹 Qt Creator是一個輕量級的跨平臺集成開發環境(IDE)&#xff0c;專為使用Qt框架進行應用程序開發而…

華為OD機試真題-攀登者1-2023年OD統一考試(C卷)

題目描述: 攀登者喜歡尋找各種地圖,并且嘗試攀登到最高的山峰。 地圖表示為一維數組,數組的索引代表水平位置,數組的高度代表相對海拔高度。其中數組元素0代表地面。 例如[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0], 代表如下圖所示的地圖,地圖中有兩個山脈位置分別為 1,2,3,4,5和8…

基于深度學習的文本分類研究綜述

摘要 與傳統的機器學習模型相比&#xff0c;深度學習模型試圖模仿人的學習思路&#xff0c;通過計算機自動進行海量數據的特征提取工作。文本分類是自然語言處理中的一個重要應用&#xff0c;在文本信息處理過程中有著關鍵作用。過去幾年&#xff0c;由于深度學習研究的空前成…

NAND閃存市場2023年Q3增長2.9%,Q4有望激增20%

TrendForce報告顯示&#xff0c;NAND閃存市場在2023年第三季度出現了關鍵轉折&#xff0c;主要由三星的戰略性減產決定驅動。最初&#xff0c;市場對終端用戶需求的不確定性以及對平淡旺季的擔憂導致買家采取保守的方法&#xff0c;庫存低、采購慢。然而&#xff0c;隨著三星等…

華為新款筆記本搭載5nm麒麟芯片,來源成謎,可能讓大家失望了~

近日&#xff0c;華為公司悄悄推出了一款基于國產技術打造的全新商用筆記本——華為擎云L540。目前&#xff0c;華為擎云L540在京東平臺悄然上線的&#xff0c;尚未在華為官方渠道公開售賣。華為擎云L540搭載了麒麟9006C處理器&#xff0c;采用先進的5nm制程工藝&#xff0c;8 …

codeforces A. Morning

思路 模擬&#xff0c;按順序移動移動到對應位置貢獻為移動的步數&#xff0c;press的次數。 Think Twice, Code Once #include<bits/stdc.h> #define il inline #define get getchar #define put putchar #define is isdigit #define int long long #define dfor(i,a…

openGauss學習筆記-150 openGauss 數據庫運維-備份與恢復-物理備份與恢復之gs_backup

文章目錄 openGauss學習筆記-150 openGauss 數據庫運維-備份與恢復-物理備份與恢復之gs_backup150.1 背景信息150.2 前提條件150.3 語法150.4 參數說明150.5 示例 openGauss學習筆記-150 openGauss 數據庫運維-備份與恢復-物理備份與恢復之gs_backup 150.1 背景信息 openGaus…

錯題總結(四)

1.【一維數組】輸入10個整數&#xff0c;求平均值 編寫一個程序&#xff0c;從用戶輸入中讀取10個整數并存儲在一個數組中。然后&#xff0c;計算并輸出這些整數的平均值。 int main() {int arr[10];int sum 0;for (int n 0; n < 10; n){scanf("%d", &arr…

[完美解決]Accelerate設置單卡訓練報錯,成功設置單卡訓練

報錯內容 ValueError: Less than two GPU ids were configured and tried to run on on multiple GPUs. Please ensure at least two are specified for --gpu_ids, or use --gpu_idsall. ValueError:配置了少于兩個GPU id&#xff0c;并試圖在多個GPU上運行。請確保為——gpu…

小黑子——springBoot基礎

springBoot簡單學習 一、SpringBoot簡介1.1 springBoot快速入門1.1.1 開發步驟1.1.2 對比1.1.3 官網構建工程1.1.3 SpringBoot工程快速啟動 1.2 springBoot概述1.2.1 起步依賴I. 探索父工程II. 探索依賴III. 小結 1.2.2 程序啟動1.2.3 切換web服務器-jetty 二、配置文件2.1 配置…

C語言精選——選擇題Day43

第一題 1. 使用malloc系統調用分配的內存是在什么上分配的&#xff1f; A&#xff1a;棧 B&#xff1a;堆 答案及解析 B malloc開辟的空間都是在堆上申請的內存空間&#xff0c;但是我們平常定義的定長數組之類的&#xff0c;都是在棧上開辟的空間&#xff1b; 第二題 2. C語言…

scala變量與變量類型

1.6 變量與類型&#xff08;重點&#xff09;1.6.1 變量推斷1.6.2 多變量定義1.6.3 var和val的區別 1.6.3.1 是否可變 1.6.3.2 延遲加載 1.6 變量與類型&#xff08;重點&#xff09; val修飾的變量&#xff0c;相當于Java中final修飾的變量; // 定義常量s1&#xff0c;使用…

[每周一更]-(第76期):Go源碼閱讀與分析的方式

讀源碼可以深層理解Go的編寫方式&#xff0c;理解作者們的思維方式&#xff1b;也有助于對Go語法用法深刻的理解&#xff0c;我們從這一篇說一下如何讀源碼&#xff0c;從哪些源碼著手&#xff0c;從 簡單到深入的方式學習源碼&#xff1b; 學習源碼也是一個修煉過程&#xff0…

「斗破年番」卡點俠蕭炎又卡點救人,四長老毒氣攻心,黑皇城尋寶

Hello,小伙伴們&#xff0c;我是拾荒君。 《斗破蒼穹年番》第74集如約而至&#xff0c;帶給觀眾們更多的驚喜與感動。這一集中&#xff0c;蕭炎的體內魔毒斑暫時被厄難毒體所壓制&#xff0c;他決定回到迦南學院&#xff0c;尋求斗尊強者的幫助解決這個問題。然而&#xff0c;…

深入理解 Flask 中的 Session 和 Cookies

在構建 web 應用時,管理用戶的狀態和數據是至關重要的。Flask,作為一個靈活的微型 web 框架,提供了會話(Session)和 Cookies 管理的能力。本文將深入探討 Flask 中的會話和 Cookies 的概念、工作機制以及應用實例,為讀者提供全面而詳細的理解。 會話和 Cookies 的基本概…

【LeetCode熱題100】【滑動窗口】找到字符串中所有字母異位詞

給定兩個字符串 s 和 p&#xff0c;找到 s 中所有 p 的 異位詞 的子串&#xff0c;返回這些子串的起始索引。不考慮答案輸出的順序。 異位詞 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 輸入: s "cbaebabacd", p "…

611.有效的三角形個數

1.題目解析 給定一個包含非負整數的數組 nums &#xff0c;返回其中可以組成三角形三條邊的三元組個數。 補充&#xff1a; 1.三角形的判斷&#xff1a;假設有三條邊按大小排序&#xff1a; 2.題目示例 示例 1: 輸入: nums [2,2,3,4] 輸出: 3 解釋:有效的組合是: 2,3,4 (使用…