首頁 > 軟體

redis 哨兵叢集搭建的實現

2022-08-10 14:00:19

前言

上一篇,我們瞭解了redis 複製叢集的完整的搭建流程,本篇來分享一下如何搭建 redis 哨兵叢集。

為什麼需要哨兵叢集

redis哨兵叢集要解決的問題是什麼呢?搞清楚這個問題之後,就知道為什麼需要哨兵叢集了。我們知道,redis複製叢集解決的是,高並行情況下,單節點的讀效能瓶頸以及單節點問題;

但是複製叢集的很明顯的問題就是,當主節點掛掉後,叢集將無法提供寫業務,如果要恢復叢集,則需要人工介入,這個必定會丟失資料不說,而且需要一定的時間;

而在哨兵模式下,叢集的狀態通過哨兵可以得到實時監控,一旦主節點宕機,哨兵會立即感知,然後選舉出新的主節點,繼續對外提供服務;

搭建前準備

1、基於centos7 的虛擬機器器(或雲伺服器);

2、redis 安裝包(本篇基於6.X版本);

搭建步驟

本篇的叢集將在同一臺機器上搭建演示,通過不同的埠進行區分

1、準備(規劃)三個sentinel範例

節點IPPORT
s110.34.33.8027001
s210.34.33.8027002
s310.34.33.8027003

2、建立3個檔案目錄

要在同一臺虛擬機器器開啟3個範例,必須準備三份不同的組態檔和目錄,組態檔所在目錄也就是工作目錄。我們建立三個資料夾,名字分別叫s1、s2、s3;

mkdir s1 s2 s3

3、在s1目錄下建立一個sentinel.conf檔案

新增下面的內容:

port 27001
sentinel announce-ip IP
sentinel monitor mymaster IP 7001 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
dir "/tmp/s1"

組態檔解讀:

  • port 27001:是當前sentinel範例的埠;
  • sentinel monitor mymaster 192.168.150.101 7001 2:指定主節點資訊

mymaster:主節點名稱,自定義,任意寫;

IP 7001:主節點的ip和埠;

2:選舉master時的quorum值

4、將s1/sentinel.conf檔案拷貝到s2、s3兩個目錄中

在/tmp目錄執行下列命令

cp s1/sentinel.conf s2
cp s1/sentinel.conf s3

5、修改s2,s3目錄下的組態檔埠分別為27002、27003

在tmp目錄下執行下面的命令

sed -i -e 's/27001/27002/g' -e 's/s1/s2/g' s2/sentinel.conf
sed -i -e 's/27001/27003/g' -e 's/s1/s3/g' s3/sentinel.conf

隨機開啟一個s2或s3目錄下的檔案,可以發現,組態檔已調整;

6、啟動3個sentinel範例

在啟動sentinel叢集之前,先把上一篇的redis叢集啟動起來

進入到tmp目錄,分別執行下面的命令進行啟動

# 第1個
redis-sentinel s1/sentinel.conf
# 第2個
redis-sentinel s2/sentinel.conf
# 第3個
redis-sentinel s3/sentinel.conf

啟動過程

通過輸出紀錄檔,也可以看到,三個sentinel範例已經正常啟動,並探測到 7001,7002,7003這三個redis範例,以及這三個redis範例的主從關係,即redis叢集已經成功被sentinel叢集監控起來;

到這裡為止,整改哨兵叢集大搭建過程就完成了,接下來,做一下叢集的異常測試

叢集測試

將redis 7001這個服務範例強制下線

在下線的時候,注意分別觀察sentinel的3個範例控制檯的輸出紀錄檔變化

 從sentinel範例控制檯的輸出紀錄檔來看,主要經歷了3個階段:

  • 認為7001這個redis範例主觀下線;
  • 當sentinel叢集超過半數以上的範例認為7001這個節點下線時,變成客觀下線;
  • 發起投票,在剩下的2個redis範例中進行新的redis master的選舉;

再次啟動7001這個範例

通過sentinel控制檯輸出紀錄檔,可以看到,7001服務範例資訊再次被sentinel叢集探測到,即監控起來

需要注意的是,再次啟動7001服務之後,7001這個redis範例不一定會再次成為master

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


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