Redis學習筆記(十四)Sentinel(哨兵)(上)

最近談到Redis就會聽到哨兵模式,工作期間同事也分享過關於哨兵模式的知識,但由於工作忙(給自己找個借口)沒有沒認真看,現在惡補下,老樣子還是分上篇應用,下篇看實現過程,下面我們來看下哨兵到底是啥?

哨兵模式(Sentinel)是Redis的高可用解決方案。由一個或多個Sentinel實例組成的Sentinel系統,可以監控任意多個主伺服器,以及這些主伺服器下的所有從伺服器,當某個主伺服器下線時,自動將這個主伺服器下的某個從伺服器升級為新的主伺服器,代替下線的主伺服器繼續處理命令。另外Sentinel系統還會繼續監視已下線的主伺服器,當主伺服器恢復時,它將被降級成該主伺服器的從伺服器。

在看哨兵模式的實現過程之前,我們先看一下哨兵的用法:

1、我們將redis.windows.conf配置文件拷貝3份出來,改下名字便於識別:6379.conf,6380,conf,6381.conf。(這裡我們模擬使用經典的三節點搭建)

6379.conf我們使用默認配置的6379埠,分別改下 6380,conf與6381.conf的埠號

 

 

 

 上一章我們使用slaveof <masterip> <masterport>命令設置從節點,現在我們修改6380.conf與6391.conf,將複製命令配置在文件中,將6379作為主節點:

 

 

2、下面我們執行命令,啟動三個節點:

redis-server.exe 6379.conf 

redis-server.exe 6380.conf 

redis-server.exe 6381.conf

 

 

 

 

 

 

 

 

 好了,現在三個節點都已經啟動,並且從控台上看出,從節點已經在複製主節點的數據。

3、分別創建三個Sentinel配置文件:sentinel6379.conf ,sentinel6380.conf ,sentinel3381.conf

內容分別是:

 sentinel6379.conf

port 26379
#當前Sentinel服務運行的埠
port 26379  
# 哨兵監聽的主伺服器
sentinel monitor mymaster 127.0.0.1 6379 2
#如果在3秒內無相應,則認為主站點宕機
sentinel down-after-milliseconds mymaster 3000
#如果10秒後,mysater仍沒啟動過來,則啟動failover 
sentinel failover-timeout mymaster 10000  
#執行故障轉移時,最多有一台對新的主伺服器進行同
sentinel parallel-syncs mymaster 1

sentinel6380.conf

#當前Sentinel服務運行的埠
port 26380
# 哨兵監聽的主伺服器
sentinel monitor mymaster 127.0.0.1 6379 2
#如果在3秒內無相應,則認為主站點宕機
sentinel down-after-milliseconds mymaster 3000
#如果10秒後,mysater仍沒啟動過來,則啟動failover 
sentinel failover-timeout mymaster 10000  
#執行故障轉移時,最多有一台對新的主伺服器進行同
sentinel parallel-syncs mymaster 1

sentinel3381.conf

port 26381
# 哨兵監聽的主伺服器
sentinel monitor mymaster 127.0.0.1 6379 2
#如果在3秒內無相應,則認為主站點宕機
sentinel down-after-milliseconds mymaster 3000
#如果10秒後,mysater仍沒啟動過來,則啟動failover 
sentinel failover-timeout mymaster 10000  
#執行故障轉移時,最多有一台對新的主伺服器進行同步
sentinel parallel-syncs mymaster 1

3、執行命令啟動:

redis-server.exe sentinel6379.conf --sentinel

 

 

 redis-server.exe sentinel6380.conf --sentinel

 

 

 redis-server.exe sentinel6381.conf --sentinel

 

 

 4、校驗:

先看下主伺服器6379的資訊:

 

 

 切換到6380與6381我們看下:

 

 

 

 

 

 現在我們模擬主伺服器6379宕機(關閉掉6379的服務端),觀察6380與6381的反應。

 

 

 

 

 

 從以上資訊來看,6381被選舉為主伺服器,那麼現在我們分別看下6380與6381的資訊:

 

 

 此時監聽資訊為:

 

 

 下一步我們恢復6379看看會發生什麼:

 

 

 

 現在看下監聽資訊:

 

此時發現6379被設置為從伺服器。

 

 

現在我們redis-cli 連接到6379看下:

 

 

OK完工,暫時只模擬這一種宕機情況。

 

篇幅有些長,不知道有多少同學能看到這裡。

 


 

 

每天學一點,總會有收穫。

 

下一步我們看下Redis的Sentinel(哨兵)的實現過程

 

 

 

 

 

Tags: