Redis哨兵機制Sentinel在windows下的部署

2020-09-24 在南京的碼農小偉

前言

RedisSentinels:主節點,從節點,若干哨兵節點(哨兵節點不一定要等於主節點數量+從節點數量

一.安裝redis並且修改配置文件

1.下載Linux、windows都兼容的redis.zip壓縮包,我這裡以windows環境下為例,解壓後的文件再複製出2個出來做slave從伺服器!

2.分別修改redis.windows.conf、redis.windows-service.conf配置。(具體配置略)

3.我採用一主(Master)二從(slave)三哨兵sentinel的架構模式來做演示。

master:127.0.0.1 6379

slave1:127.0.0.1 6380

slave2:127.0.0.1 6381

4.在哨兵配置

4-1

①每一個redis目錄中都創建一個文sentinel.conf文件。

②主(master-6379)中新建一個文件sentinel.conf文件內容:(兩個從slave也新建sentinel.conf文件,配置參考主配置只需要更改port 26479 , port 26579,port 26679哨兵的埠,其餘不變)

port 26379bind 127.0.0.1--上面埠和ip都是哨兵節點的信息sentinel monitor mymaster 127.0.0.1 6379 2sentinel down-after-milliseconds mymaster 5000sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 10000sentinel auth-pass mymaster thw217335protected-mode yes--守護線程

4-2

①. port :當前Sentinel服務運行的埠;

②.sentinel monitor mymaster 127.0.0.1 6379 2:Sentinel去監視一個名為mymaster的主redis實例,這個主實例的IP位址為本機地址127.0.0.1,埠號為6379,而將這個主實例判斷為失效至少需要2個 Sentinel進程的同意,只要同意Sentinel的數量不達標,自動failover就不會執行;

③.sentinel down-after-milliseconds mymaster 5000:指定了Sentinel認為Redis實例已經失效所需的毫秒數。當 實例超過該時間沒有返回PING,或者直接返回錯誤,那麼Sentinel將這個實例標記為主觀下線。只有一個 Sentinel進程將實例標記為主觀下線並不一定會引起實例的自動故障遷移:只有在足夠數量的Sentinel都將一個實例標記為主觀下線之後,實例才會被標記為客觀下線,這時自動故障遷移才會執行;

④.sentinel parallel-syncs mymaster 1:指定了在執行故障轉移時,最多可以有多少個從Redis實例在同步新的主實例,在從Redis實例較多的情況下這個數字越小,同步的時間越長,完成故障轉移所需的時間就越長;

⑤.sentinel failover-timeout mymaster 15000:如果在該時間(ms)內未能完成failover操作,則認為該failover失敗。

二.啟動

1.進入各自的安裝目錄下,啟動主從的各自的伺服器:

mastet:redis-server redis.windows.conf

slave1:redis-server redis.windows.conf

slave2:redis-server redis.windows.conf

2.啟動各自的客戶端:

mastet:redis-cli -h 127.0.0.1 -p 6379

slave1:redis-cli -h 127.0.0.1 -p 6380

slave2:redis-cli -h 127.0.0.1 -p 6381

如下圖所示:


master slave1


slave2

3.啟動三個sentinels的伺服器:

sentinel1:redis-server sentinel.conf --sentinel ----注意--sentinel不要忘記寫!

sentinel2:redis-server sentinel.conf --sentinel

sentinel3:redis-server sentinel.conf --sentinel

4.啟動三個sentinels的客戶端:並查看狀態如下圖:

sentinel1:redis-cli -h 127.0.0.1 -p 26379

sentinel1:redis-cli -h 127.0.0.1 -p 26479

sentinel1:redis-cli -h 127.0.0.1 -p 26579

在sentinels隨便一臺客戶端中輸入查詢狀態指令「info sentinel」,看到到主從哨兵數量信息。

上圖可以看出3個哨兵監聽主和從節點,並且這3個哨兵還互相監督!

三.當我關掉master主伺服器後,slave1(6380)自動成主伺服器,就是說redis自動的實現了主從切換,我們可以在查看下sentinel的狀態,如下(每個從的redis.windows.conf裡面salveof參數也會自動發生了變化,ip為新晉的主節點的ip port了)


1.原主(6379)宕機,slave1(6380)晉為主節點,注意:這個晉升規則也是隨機的。

2.在sentinel客戶端下,查看主從哨兵信息:



四.Sentinel補充說明:

1):每個Sentinel以每秒鐘一次的頻率向它所知的Master,Slave以及其他 Sentinel 實例發送一個 PING 命令。

2):如果一個實例(instance)距離最後一次有效回復 PING 命令的時間超過 down-after-milliseconds 選項所指定的值, 則這個實例會被 Sentinel 標記為主觀下線。

3):如果一個Master被標記為主觀下線,則正在監視這個Master的所有 Sentinel 要以每秒一次的頻率確認Master的確進入了主觀下線狀態。

4):當有足夠數量的 Sentinel(大於等於配置文件指定的值)在指定的時間範圍內確認Master的確進入了主觀下線狀態, 則Master會被標記為客觀下線 。

5):在一般情況下, 每個 Sentinel 會以每 10 秒一次的頻率向它已知的所有Master,Slave發送 INFO 命令 。

6):當Master被 Sentinel 標記為客觀下線時Sentinel 向下線的 Master 的所有 Slave 發送 INFO 命令的頻率會從 10 秒一次改為每秒一次 。

7):若沒有足夠數量的 Sentinel 同意 Master 已經下線, Master 的客觀下線狀態就會被移除。

若 Master 重新向 Sentinel 的 PING 命令返回有效回復, Master 的主觀下線狀態就會被移除。


(8)哨兵的定時監控

每個哨兵節點每10秒會向主節點和從節點發送info命令獲取最新拓撲結構圖,哨兵配置時只要配置對主節點的監控即可,通過向主節點發送info,獲取從節點的信息,並當有新的從節點加入時可以馬上感知到

9)讓選出來的從節點成為主節點;將已下線的主節點設置成新的主節點的從節點,當其恢復正常時,複製新的主節點,變成新的主節點的從節點

10.哨兵lerder選舉流程

如果主節點被判定為客觀下線之後,就要選取一個哨兵節點來完成後面的故障轉移工作,選舉出一個leader的流程如下:


a)每個在線的哨兵節點都可以成為領導者,當它確認(比如哨兵3)主節點下線時,會向其它哨兵發is-master-down-by-addr命令,徵求判斷並要求將自己設置為領導者,由領導者處理故障轉移;

b)當其它哨兵收到此命令時,可以同意或者拒絕它成為領導者;

c)如果哨兵3發現自己在選舉的票數大於等於num(sentinels)/2+1時,將成為領導者,如果沒有超過,繼續選舉。

相關焦點

  • Redis高可用之哨兵(sentinel)實際部署和分析篇
    我們以一主兩從的複製方式結合案例學習一下哨兵的部署,相關環境如下redis+sentinelredis複製部署redis複製部署請參考另外一篇文章部署完成後效果如下主節點ec2-redis-01> info replication34;master&34;192.168.100.4&34;6379&34;368018&34;192.168.100.3&
  • Redis高可用之哨兵(sentinel)技術原理
    哨兵的基礎概念Redis哨兵(sentinel)為redis提供高可用解決方案,在傳統的主從複製模式中,當主節點宕機後,我們需要手動將從節點切換成主節點,並且客戶端也需要同步修改配置文件中的主節點信息,當哨兵模式啟用後,主從節點的切換是自動化的,客戶端由原來的連接主節點到現在的客戶端連接哨兵節點,主從切換時客戶端幾乎不會感知
  • Redis系列:高可用哨兵方案部署
    Redis提供的sentinel(哨兵)機制,通過sentinel模式啟動redis後,自動監控master/slave的運行狀態,基本原理是:心跳機制+投票裁決如果大家有多臺虛擬主機的話,也可以使用多臺虛擬主機部署。
  • Redis哨兵(Sentinel)模式
    在Redis安裝目錄下有一個sentinel.conf文件,copy一份進行修改# 禁止保護模式protected-mode no# 配置監聽的主伺服器,這裡sentinel monitor代表監控,mymaster代表伺服器的名稱,可以自定義,192.168.11.128代表監控的主伺服器,6379代表埠,2代表只有兩個或兩個以上的哨兵認為主伺服器不可用的時候,才會進行
  • Redis高可用之哨兵(sentinel)客戶端(Python)連接
    ()))在引入哨兵功能後,我們需要使用redis模塊的子模塊sentinel,例如我們查看當前主節點和從節點信息from redis import sentinelsentinel_connection = sentinel.Sentinel([(&39;, 26379), (&39;, 26379), (&39;, 26379)], db
  • Redis哨兵(Sentinel)模式,帶你快速入門
    1.部署主從節點哨兵系統中的主從節點,與普通的主從節點配置是一樣的,並不需要做任何額外配置。下面分別是主節點(port=8000)和2個從節點(port=8001/8002)的配置文件;我們剛才搭建的主從複製就是主從節點2.部署哨兵節點哨兵節點本質上是特殊的Redis節點。
  • Redis哨兵模式搭建及高可用測試
    在工作當中,測試環境或者個人使用 redis 時,由於項目實施時間、部署複雜度、伺服器資源等因素限制,很多時候均為單機部署,但在生產環境,為保證業務連續性,一般是不允許單機部署方式,而是採用集群或哨兵模式。
  • Sentinel(哨兵)是Redis 的高可用性解決方案
    1、Sentinel 哨兵Sentinel(哨兵)是Redis 的高可用性解決方案:由一個或多個Sentinel 實例組成的Sentinel 系統可以監視任意多個主伺服器,以及這些主伺服器屬下的所有從伺服器,並在被監視的主伺服器進入下線狀態時,自動將下線主伺服器屬下的某個從伺服器升級為新的主伺服器。
  • 為什麼需要 Redis 哨兵?
    作者 | 阿文責編 | 郭芮在說哨兵之前,我們先說下主從複製,Redis 的主從複製模式,一旦主節點出現故障無法提供服務,需要人工介入手工將從節點調整為主節點,同時應用端還需要修改新的主節點地址,這種故障轉移的方式對於很多應用場景是不能容忍的。正式由於這個問題,Redis 提供了 Sentinel(哨兵) 架構來解決這個問題。
  • Redis哨兵
    在主從模式下,由主節點負責數據的寫,從節點負責讀,如果主節點(master)宕機了,整個服務將受到很大影響,需要人為的將某一個從節點替換為主節點,服務才可以恢復正常。但是通常情況下,我們很難人為的做到在服務宕機時立刻切換主節點,哨兵就是用來替代人為操作的,它作為一個單獨的服務存在,對所有的主從節點進行監控,在主節點發生故障時,立刻在其他的從幾點中,重新選舉出一個節點作為主節點,來保證服務的可用。
  • CentOS 7安裝Redis集群(哨兵模式)
    // 進入usr目錄cd /usr// 創建redis目錄mkdir redis// 賦755權限chmod 755 redis拷貝redis-4.0.11/src目錄下的redis-server、redis-sentinel、redis-cli、redis-benchmark文件、redis-4.0.11目錄下的redis.conf、sentinel.conf文件到redis
  • Redis哨兵模式下的notification-script參數作用
    Redis在哨兵的配置文件裡提供了notification-script配置參數,該參數起到了通知功能,何為通知功能呢,就是當Redis的哨兵檢測到有warning事件(-sdown,-odown,promotion,election,failover等事件)發生時,便調用該腳本及時通知系統管理員,可以通過郵件通知等.
  • 7、redis 主從節點配置已經哨兵集群搭建
    會複製到每個從節點上為了提高redis的可用性 我們可以啟動哨兵(sentinel)這樣。每個哨兵監控一個節點。當有某個節點斷開連接我們可以接受到通知 做出相應的處理。如果主節點斷開。哨兵會從從節點中選舉一個節點當做主節點。這樣可以保證系統的可用性。
  • ...當將軍的「Sentinel」不是好「Sentinel」」之Redis Sentinel架構
    Sentinel (哨兵)是 Redis的高可用性解決方案:由一個或多個 Sentinel實例組成的 Sentinel系統可以監控任意數量的主伺服器和所有這些主伺服器屬下的從伺服器,當被監控的主伺服器進入下線狀態時,會自動將下線主伺服器屬下的一個從伺服器升級到新的主伺服器。
  • Redis精華所在,一口氣說完Redis的主從複製和哨兵模式
    那麼為了解決這個當主機掛了,需要手動重新設置一個主節點的問題,就需要使用我們的哨兵模式。什麼是哨兵顧名思義,哨兵就是用來巡邏檢查的,哨兵每隔一段時間會向redis發送命令,等待redis響應,如果得不到響應,此時這個哨兵會認為這臺redis服務以掛掉。一般情況會啟動多個哨兵,判斷redis主機是否掛掉,哨兵會進行投票。
  • 你真的懂Redis哨兵技術嗎?
    哨兵節點的啟動有兩種方式,二者作用是完全相同的:redis-sentinel sentinel-26379.confredis-server sentinel在前面部署的哨兵系統中,將哨兵節點的配置文件進行如下修改:sentinel monitor mymaster 192.168.92.128 6379 2改為sentinel monitor mymaster 127.0.0.1 6379 2
  • Redis哨兵模式,面試你被問了嗎
    前言最近面試被問到了,哨兵模式,一聽名詞感覺很陌生,搜索下記憶,還好了解過Redis集群的知識,沒被難倒。哨兵模式是實現Redis集群的一種方案。Redis的集群方案大致有三種:redis cluster集群方案;master/slave主從方案;哨兵模式來進行主從替換以及故障恢復。
  • 「不想當將軍的「Sentinel」不是好「Sentinel」」之Redis...
    Sentinel (哨兵)是 Redis的高可用性解決方案:由一個或多個 Sentinel實例組成的 Sentinel系統可以監控任意數量的主伺服器和所有這些主伺服器屬下的從伺服器,當被監控的主伺服器進入下線狀態時,會自動將下線主伺服器屬下的一個從伺服器升級到新的主伺服器。
  • Spring Boot 如何快速集成 Redis 哨兵?
    看過上篇的都知道 Spring Boot Redis 的默認客戶端是:Lettuce,我們再來看下 LettuceConnectionFactory 的自動配置源碼:org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration
  • Redis高可用sentinel 來龍去脈
    ,需要能安裝REDIS 伺服器,並且配置主從關係, Redis 有兩種高可用, redis cluster 和 redis sentinel , 今天主要說 sentinel。redis sentinel 節點本身安裝靈活,實際上不非要安裝在redis 資料庫本身的節點中,但大部分的習慣還是安裝在和redis的資料庫伺服器中, Redis sentinel 本身是一個分布式架構, 其中包含若干個sentinel節點和 redis 節點, 對於高可用來講, redis 的sentinel 應該至少為 3 節點, 這也符合大多數原理, 但實際當中部分的