首頁 > 軟體

redis哨兵模式說明與搭建詳解

2023-01-28 18:03:55

哨兵模式是redis高可用的一種解決方案。

哨兵必須用三個範例取保證自己的高可用,但是哨兵+主從模式是不能保證訊息不丟失的。

為什麼用三個來保證呢?

假設現在有兩個伺服器,第一臺有redis主節點M1,和哨兵S1,第二臺有redis從節點S2,哨兵S2。

如果M1宕機,S1和S2中只要有1個哨兵認為master宕機就可以還行切換,此時哨兵大多數(我理解的大多數的過半)還在執行,那麼S1,S2能通過選舉,拿出來一個哨兵進行故障轉移。

如果第一個伺服器整個宕機,M1,S1都已經死掉了,此時S2發現M1宕機,但是哨兵只有一個了,不滿足大多數的機器存活,無法選舉,就沒有辦法來執行故障轉移。雖然另外一臺機器還有一個R1,但是故障轉移不會執行。

經典的是三節點的哨兵叢集

如果M1所在機器宕機了,那麼三個哨兵還剩下2個,S2和S3可以一致認為master宕機,然後選舉出一個來執行故障轉移。

同時3個哨兵的大多數是2,所以還剩下的2個哨兵執行著,就可以允許執行故障轉移。

接下來談一談怎麼做哨兵

首先我們需要搭建個一主兩從的redis,單個節點的redis安裝連結如下

redis安裝包下載地址Redis

我們可以將單個redis安裝三次(6381為主機,6380,6379為從機),然後修改組態檔

1.設定redis.conf檔案中的埠號分別為6379,6380,6381,

2.daemonize均為yes

3.6380和6379 均新增slaveof 127.0.0.1 6379  (我是在一臺伺服器上安裝的,若不是一臺伺服器,ip換為redis主機ip)

 分別使用./src/redis-server ./myredis/redis.conf 命令啟動redis。

啟動後使用./src/redis-cli -p 6379 -h 127.0.0.1 連線redis的使用者端  (ip和埠換成自己的)

再執行info Replication,即可看到主從狀態 

三臺狀態如下

 

主從就搭建好了。

接下來設定哨兵

將剛剛的檔案redis-6379 複製三份,分別重新命名為sentinel-26379,sentinel-26380,sentinel-26381

然後分別修改三個檔案的組態檔sentinel.conf 

#埠號 (換成相應sentinel的埠號)
port 26379 
 
#守護行程,後臺啟動
daemonize yes
 
#監測redis叢集的主機
sentinel monitor mymaster 127.0.0.1 6381 1

 修改完畢之後使用./src/sentinel-server ./sentinel.conf啟動,成功後,

使用./src/resic-cli -p 26379 命令連線sentinel(其他兩個也可以使用這個連線),成功後,使用info命令,可以看到監聽的redis叢集狀態

到此這篇關於redis哨兵模式詳解的文章就介紹到這了,更多相關redis哨兵模式詳解內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com