redis的高可用(哨兵)

Redis 的主從復制模式下,一旦主節點由于故障不能提供服務,需要人工進

行主從切換,同時大量的客戶端需要被通知切換到新的主節點上,對于上了一定規模的應用來說,這種方案是無法接受的,于是Redis從2.8開始提供了RedisSentinel(哨兵)來解決這個問題。

哨兵模式的作用

哨兵也叫 sentinel,它的作用是能夠在后臺監控主機是否故障,如果故障了根據投票數自動將從庫轉換為主庫。

如果master宕機了,sential會從剩下的從服務器節點中選擇一臺提升為master,然后自動修改相關配置,選舉策略如下:

  1. 選擇優先級靠前的服務器。優先級的配置在 redis.conf 文件中的 replica-priority 配置,默認為 100,值越小優先級越高。

  2. 選擇偏移量最大的。偏移量是指獲得原主機數據最全的。

  3. 選擇 runid 最小的從服務器。每個redis實例啟動后都會隨機生成一個40位的runid。

Redis Sentinel中的Sentinel節點個數應該為大于等于3且最好為奇數

哨兵集群為什么建議部署 “奇數個節點”?比如 3 個、5 個,而不是 2 個、4 個?

核心原因:避免 “投票腦裂”,確保故障轉移時能選出 “領頭哨兵” 和新主庫。

哨兵的關鍵投票場景需要 “超過半數節點同意”:

配置哨兵模式

  • 首先配置好三臺主機的/etc/reids/redis.cnf文件

vim /etc/redis/redis.conf
bind 0.0.0.0
protected-mode no
daemonize no ?

  • 重新啟動redis服務
systemctl start redis
  • 配置好redis的主從同步
  • 查看master主從情況---------- 兩個從都是在線的狀態下


  • 接著配置三臺主機的哨兵配置文件
port 26379  #監聽端口
daemonize no  #后臺運行
pidfile /var/run/redis-sentinel.pid
logfile /var/log/redis/sentinel.log
sentinel monitor mymaster 192.168.1.20 6379 2  
#monitor:監控
#mymaster為監控對象起的服務名稱
#2表示只有2個或2個以上的哨兵認為主節點不可用的時候,才會把 master 設置為客觀下線狀態,然后進行 failover 操作。
sentinel down-after-milliseconds mymaster 30000   #master中斷時長, 30秒連不上視為master下線
sentinel parallel-syncs mymaster 1  #發生故障轉移后,同時開始同步新master數據的slave數量
sentinel failover-timeout mymaster 180000 #整個故障切換的超時時間為3分鐘
  • 現在master上配置好哨兵配置文件---再將配置好的哨兵文件傳到slave1.slave2上對他們原來的哨兵文件進行覆蓋
scp /etc/redis/sentinel.conf root@192.168.1.21:/etc/redis
scp /etc/redis/sentinel.conf root@192.168.1.22:/etc/redis 

重新啟動哨兵服務

systemctl restart redis-sentinel.service

測試---模擬master故障

  • 首先將master的redis服務關閉
shutdown

  • 然后查看slave1的狀態----查看master是否成功轉移slave1上

  • 查看slave2的主從狀態

master成功轉移到slave1上并,salve2的主庫也成功變成slave1

  • 查看slave2的redis配置文件--查看哨兵是否檢測到故障并且更改slave2文件的主

哨兵自動更改了master的IP為slave1的ip

注意

/etc/redis/sentinel.conf 文件在用哨兵程序調用后會被更改,如果需要重新做要刪掉文件重新編輯。

  1. 由于所有的寫操作都是先在Master上操作,然后同步更新到Slave上,所以從Master同步到Slave機器有定的延遲,當系統很繁忙的時候,延遲問題會更加嚴重,Slave機器數量的增加也會使這個問題更加嚴重。
  2. 在生產環境中如果master和slave中的網絡出現故障,由于哨兵的存在會把master提出去當網絡恢復谷master發現環境發生改變,master就會把自己的身份轉換成slave。master變成slave后會把網絡故障那段時間寫入自己中的數據清掉,這樣數據就丟失了。
  3. 解決辦法:master在被寫入數據時會持續連接slave, mater確保有2slave可以寫入我才允許寫入,如果slave數量少于2個便拒絕寫入

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

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

相關文章

安徽某能源企業積極推進運維智能化轉型,引入高壓配電房機器人巡檢系統

在工業自動化與智能化深度融合的當下,機器人技術已成為能源行業提質增效的關鍵支撐。特別是在配電房這類高壓電力核心區域的運維工作中,傳統人工巡檢不僅面臨效率低下、巡檢周期長的困境,更因人員直接接觸高壓設備而存在極高的安全風險。此&a…

數據結構_二叉平衡樹

#include <stdio.h> #include <stdlib.h> #define max(a,b) ((a > b)? (a):(b))//平衡二叉樹的節點結構 typedef struct AVL_TreeNode{int data; //數據域struct AVL_TreeNode* l;struct AVL_TreeNode* r;int h;//記錄樹的高度&#xff0c;用于計算平衡因子 }…

掃描件、PDF、圖片都能比對!讓文檔差異無所遁形

智能文檔比對系統可精準識別文檔差異&#xff0c;解決金融、法律等多方協作場景下的版本混亂、審核低效和合規風險問題&#xff0c;將一份百頁文檔的人工核對從數小時縮短至3分鐘以內。 文檔差異比對常見場景有哪些&#xff1f; 每一次文檔的修改都可能帶來潛在風險&#xff0c…

excel里面店鋪這一列的數據結構是2C【uniteasone17】這種,我想只保留前面的2C部分,后面的【uniteasone17】不要

這個結構是&#xff1a; 2C【uniteasone17】只要取前面的 2C 部分&#xff0c;可以用 Excel 的 公式 或者 文本函數 來實現。 方法 1&#xff1a;使用公式提取 假設店鋪數據在 A2 單元格&#xff1a; LEFT(A2,FIND("【",A2)-1)&#x1f449; 解釋&#xff1a; FIND(“…

四、神經網絡的學習(中)

4.3 數值微分梯度法使用梯度的信息決定前進的方向。本節將介紹梯度是什么、有什么性質等內容。4.3.1 導數假如你是全程馬拉松選手&#xff0c;在開始的10分鐘內跑了2千米。如果要計算此時的奔跑速度&#xff0c;則為2/10 0.2&#xff3b;千米/分&#xff3d;。也就是說&#x…

Jenkins 監控方案:Prometheus + Grafana 實踐

這兩天在運維群里面看到有人說 Jenkins 節點也可以監控&#xff0c;以前沒想過搞這個&#xff0c;現在就對公司 Jenkins 搞搞順便記錄下唄。 一、使用 Jenkins Prometheus 插件&#xff08;推薦方式&#xff09; 1. 安裝插件 在 Jenkins 插件管理里搜索并安裝 Prometheus Me…

用博圖FB類比c#中sdk的api

我有一個大膽的想法我準備自己做個簡單的視覺軟件來鍛煉自己的c#編程能力&#xff0c;我準備用到海康工業機器人官網下載的mvs軟件的sdk,聽說sdk的主要作用就是api提供了開放的接口給第三方免費調用。按照我的理解&#xff0c;api接口就像西門子博圖的FB塊&#xff0c;所謂api接…

【Leetcode】高頻SQL基礎題--1164.指定日期的產品價格

【Leetcode】高頻SQL基礎題–1164.指定日期的產品價格 要求&#xff1a;一開始&#xff0c;所有產品價格都為 10。編寫一個解決方案&#xff0c;找出在 2019-08-16 所有產品的價格。 以 任意順序 返回結果表。解題思路&#xff1a; 找到 2019-08-16 前所有有改動的產品及其最新…

Django全局異常處理全攻略

在 Django 中處理全局異常&#xff0c;有幾種常見的方式&#xff0c;通常目標是&#xff1a; 捕獲項目中未被單獨處理的錯誤統一返回給前端&#xff08;如 JSON 響應 / 自定義錯誤頁&#xff09;方便記錄日志1. 使用 Django 自帶的全局異常處理機制 Django 有一些內置的全局錯誤…

【開題答辯全過程】以電商數據可視化系統為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

MyBatis入門到精通:CRUD實戰指南

1. MyBatisORM&#xff1a;對象關系映射O&#xff08;Object&#xff09;&#xff1a;Java虛擬機中的Java對象R&#xff08;Relational&#xff09;&#xff1a;關系型數據庫M&#xff08;Mapping&#xff09;&#xff1a;將Java虛擬機中的Java對象映射到數據庫表中一行記錄&am…

WebRTC開啟實時通信新時代

摘要&#xff1a;WebRTC&#xff08;Web實時通信&#xff09;是一項開源技術&#xff0c;支持瀏覽器直接進行低延遲音視頻通信和數據傳輸&#xff0c;無需安裝插件。其核心技術包括RTCPeerConnection&#xff08;建立點對點連接&#xff09;、MediaStream&#xff08;媒體流處理…

【51單片機8*8點陣顯示箭頭動畫詳細注釋】2022-12-1

緣由51單片機實現8*8滾動箭頭的程序,運行時什么圖案都沒有,甚至根本不亮 - 24小時必答區 #include<reg52.h> unsigned char code M[]{0xff,0xff,0xfe,0xfd,0xf8,0xfd,0xfe,0xff,0xff,0xff,0xfd,0xfb,0xf0,0xfb,0xfd,0xff,0xff,0xff,0xfb,0xf7,0xe0,0xf7,0xfb,0xff,0xff,0…

手撕Redis底層3-持久化機制與集群化方案

1.Redis持久化機制Redis設計了兩種持久化落盤機制&#xff1a;RDB和AOF1.1 RDB持久化RDB持久化是Redis的數據快照&#xff0c;簡單來說就是把內存中的所有數據都記錄到磁盤中&#xff0c;當Redis實例故障重啟后&#xff0c;從磁盤中讀取快照文件來恢復數據。快照文件稱為RDB文件…

mysql中null值對in子查詢的影響

1、場景 有這樣一個查詢&#xff0c;有些時候是正確的&#xff0c;有些時候沒報錯但是又查詢不到數據&#xff0c;分析數據排查后發現當user_id字段存在null值的時候查詢不到數據。select * from table1 where id in (select user_id from talbe2 where status1);2、問題 為什么…

如何在 tortoise-orm 內使用 JSON_EXTRACT

先說結論&#xff1a; # 假設 JsonField 名稱為 data&#xff0c;內容為 {"info": {"path": "我的資源創建"}} qs qs.filter(data__filter{"info.path": "我的資源創建"})我查看了 tortoise-orm 官方文檔&#xff0c;沒有這…

西門子S7-200 SMART PLC:編寫最基礎的“起保停”程序

一、什么是“起保停”電路&#xff1f;“起保停”是“啟動-保持-停止”的簡稱&#xff0c;也稱為“自鎖電路”。它是繼電器控制系統和PLC程序中最基本、最核心的控制邏輯。啟動 (Start): 由一個點動按鈕&#xff08;常開觸點&#xff09;觸發&#xff0c;使設備運行。保持 (H…

漏洞修復 Nginx SSL/TLS 弱密碼套件

掃描結果 [rootlocalhost nmap]# docker run --rm -v $(pwd)/results:/results securecodebox/nmap nmap --script ssl-enum-ciphers -p 443 xxx.cn -oX /results/output_0904.xml Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-04 05:02 UTC Nmap scan report for xxx.…

ChartGPT深度體驗:AI圖表生成工具如何高效實現數據可視化與圖表美化?

最近幫運營同事做季度數據報告時&#xff0c;我差點在圖表樣式上栽跟頭 —— 明明數據都算好了&#xff0c;用 Excel 調柱狀圖的顏色、字體、坐標軸標簽&#xff0c;來回改了快半小時&#xff0c;要么字體太大擠在一起&#xff0c;要么顏色搭配顯臟&#xff0c;運營催得急&…

深入理解 JVM 字節碼文件:從組成結構到 Arthas 工具實踐

在 Java 技術體系中&#xff0c;JVM&#xff08;Java 虛擬機&#xff09;是實現 “一次編寫&#xff0c;到處運行” 的核心。而字節碼文件作為 Java 代碼編譯后的產物&#xff0c;是 JVM 執行的 “原材料”。今天&#xff0c;我們就從字節碼文件的組成結構講起&#xff0c;再結…