1. 程式人生 > >Redis Sentinel(哨兵)

Redis Sentinel(哨兵)

當主節點出現故障時,Redis Sentinel能自動完成故障發現和故障轉移,並通知應用方,從而實現真正的高可用。Redis Sentinel是一個分散式架構,其中包含若干個Sentinel節點和資料節點,每個Sentinel節點會對資料節點和其餘Sentinel節點進行監控,當它發現節點不可達時,會對節點做下線標識。如果被標識的是主節點,它還會和其他Sentinel節點進行"協商",當大多數Sentinel節點都認為主節點不可達時,它們會選舉出一個Sentinel節點來完成自動故障轉移的工作,同時會把這個變化實時通知給Redis應用方。整個過程完全是自動化的,不需要人工干預,所以此方案有效地解決了Redis的高可用。

Sentinel有以下幾個作用:

1、監控:Sentinel節點會定期檢測Redis資料節點、其餘Sentinel節點是否可達;

2、通知:Sentinel節點會將故障轉移的結果通知給應用方;

3、主節點故障轉移:實現從節點晉升為主節點並維護後續正確的主從關係;

4、配置提供者:在Sentinel架構中,客戶端在初始化的時候連線的是Sentinel節點集合,從中獲取主節點資訊。同時Redis Sentinel 包含了若干個Sentinel節點,其主要作用有:對於節點的故障判斷是由多個Sentinel節點共同完成,這樣可以防止誤判;Sentinel節點集合是有若干個Sentinel節點組成,這樣即使個別Sentinel節點不可用,整個Sentinel節點集合依然是強壯的。

其實Sentinel節點本身就是獨立的Redis節點,只不過它們有一些特殊性,它們不儲存資料,只支援部分命令。Sentinel節點的預設埠為26379,使用redis-sentinel命令啟動。

Redis Sentinel的拓撲架構圖如下: