Redis sentinel搭建

z毛毛蟲_cc發表於2020-10-01

Redis sentinel介紹

Redis 的 Sentinel 系統用於管理多個 Redis 伺服器(instance), 該系統執行以下三個任務:


·監控(Monitoring): Sentinel 會不斷地檢查你的主伺服器和從伺服器是否運作正常。


·提醒(Notification): 當被監控的某個 Redis 伺服器出現問題時, Sentinel 可以通過 API 向管理員或者其他應用程式傳送通知。


·自動故障遷移(Automatic failover): 當一個主伺服器不能正常工作時, Sentinel 會開始一次自動故障遷移操作, 它會將失效主伺服器的其中一個從伺服器升級為新的主伺服器, 並讓失效主伺服器的其他從伺服器改為複製新的主伺服器; 當客戶端試圖連線失效的主伺服器時, 叢集也會向客戶端返回新主伺服器的地址, 使得叢集可以使用新主伺服器代替失效伺服器。

Redis Sentinel 是一個分散式系統, 你可以在一個架構中執行多個 Sentinel 程式(progress), 這些程式使用流言協議(gossip protocols)來接收關於主伺服器是否下線的資訊, 並使用投票協議(agreement protocols)來決定是否執行自動故障遷移, 以及選擇哪個從伺服器作為新的主伺服器。
雖然 Redis Sentinel 釋出為一個單獨的可執行檔案 redis-sentinel , 但實際上它只是一個執行在特殊模式下的 Redis 伺服器, 你可以在啟動一個普通 Redis 伺服器時通過給定 –sentinel 選項來啟動 Redis Sentinel 

 

  • redis sentinel的搭建

一,redis master-slave的搭建

1,搭建環境:

Redis:192.168.136.136(master)

Redis:192.168.136.137(slave)

Redis:192.168.136.138(slave)

Reidis架構一主兩從,搭建方法這裡不做介紹:

如下截圖,證明redis結構已經複製成功:

 

2,開始搭建sentinel

修改sentinel.conf配置檔案:

sentinel monitor mymaster 192.168.136.136 6379 2

每個節點需要監控192.168.225.128:6379這個主節點,2代表判斷主節點失敗至少需要2個sentinel節點同意,mymaster是主節點別名。
2這個值定義為幾的標準:一般建議將其設定為sentinel節點的一半加1

 

啟動sentinel:

redis-sentinel sentinel.conf &

##啟動介面可以看到sentinel版本號,程式號等等資訊。

uploading.4e448015.gif轉存失敗重新上傳取消

 

二;sentinel監控redis主從故障轉移測試

##sentinel故障轉移測試,建議用2.8版本,之前用3.2版本測試不成功,可能這也說明sentinel後來沒有得到重視,畢竟現在主流在用 redis cluster

  1. redis master異常故障

 Kill redis master 節點:

uploading.4e448015.gif轉存失敗重新上傳取消

螢幕上會列印出相關日誌:

可以看出來redis master 已經切換的192.168.136.137節點了

 

uploading.4e448015.gif轉存失敗重新上傳取消

恢復redis 192.168.136.136,同時主節點上會列印日誌,告訴說192.168.136.136加入到叢集:

uploading.4e448015.gif轉存失敗重新上傳取消

 

檢查:如圖:

192.168.136.136:slave

192.168.136.137:master

192.168.136.138:slave

uploading.4e448015.gif轉存失敗重新上傳取消

 

  • 粗談sentinul.conf配置檔案

1、Port和dir

Port和dir分別代表sentinel節點的埠和工作目錄

2、Sentinel monitor

Sentinel monitor <master-name> <ip><port> <quorum>
sentinel節點會定期監控主節點,
<master-name> sentinel要監控的主節點的名稱
IP地址和埠為<ip><port>的主節點
<quorum>代表要判定主節點最終不可達所需要的票數

3、sentinel down-after-milliseconds

每個sentinel節點都要通過定期傳送ping命令來判斷redis資料節點和其餘sentinel節點是否可達,如果超過了該時間,則判定節點不可達。單位:毫秒

4、sentinel parallel-syncs <master-name> <numslaves>

Sentinel領導者節點做故障轉移操作,選出新的主節點,原來的從節點會向新的主節點發起復制操作,parallel-syncs就是用來限制在一次故障轉移之後,每次向新的主節點發起復制操作的從節點的個數。
parallel-syncs=3 3個從節點同時發起複製
parallel-syncs=1 一次只有一個從節點複製,從節點會輪詢發起複製

5、Sentinel failover-timeout

故障轉移超時時間,作用於各個階段。
A) 選出合適從節點
B) 晉升選出的從節點為主節點
C) 命令其餘從節點複製新的主節點
D) 等待原主節點恢復後命令它去複製新的主節點

6、Sentinel auth-pass <master-name> <password>

如果sentinel監控的主節點設定了密碼,sentinel通過以上命令新增主節點的密碼

 

相關文章