Redis多機常用架構-sentinel


哨兵經典架構

image

sentinel結構

imageimage

 

哨兵工作原理

Sentinel 通過配置文件發現Master,如下:

imageimage

Sentinel 通過向Master發送 INFO 命令來自動獲得所有Slave的地址

跟Master一樣,Sentinel 會與每個被發現的Slave創建命令連接和訂閱連接

image

Sentinel 會通過命令連接向被監視的主從服務器發送 HELLO 信息,該消息包含 Sentinel 的 IP、端口號、ID 等內容,以此來向其他 Sentinel 宣告自己的存在。與此同時,Sentinel 會通過訂閱連接接收其他 Sentinel 的HELLO 信息,以此來發現監視同一個Master的其他 Sentinel

image

 

image

image

image

Sentinel 之間會互相創建命令連接,用於進行通信。

因為已經有主從服務器作為發送和接收 HELLO 信息的中介,所以 Sentinel之間不會創建訂閱連接。

image

Sentinel 使用 PING 命令來檢測實例的狀態:如果實例在指定的時間內沒有返回回復,或者返回錯誤的回復,那么該實例會被 Sentinel 判斷為SDOWN(subjectively down,主觀下線)。

注意:只有一台Sentinel將服務器標記為SDOWN不會觸發Failover。只有一定數量的Sentinel都將該服務器標記為SDOWN后,服務器才會被標記為ODOWN(objectively down,客觀下線),這時才會觸發Failover過程。

參數down-after-milliseconds指定了 Sentinel 認為服務器已經斷線所需的毫秒數。

參數quorum用來控制Sentinel投票數

注意:源碼中SDOWN對應PFAIL消息,ODOWN對應FAIL消息

image

Automatic Failover

在下線Master的所有Slave中,選出一個數據狀態最接近Master的Slave,選擇的條件包括:Slave未下線、主從之間的連接斷開時間最短,等等。

Sentinel 向被選中的Slave發送 SLAVEOF NO ONE ,將它升級為Master。

向其他Slave發送 SLAVEOF 命令,讓它們復制新的Master。

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM