Redis Sentinel實現原理

chenfeng發表於2020-12-03

Sentinel叢集對自身和Redis主從複製進行監控。當發現Master節點出現故障時,會經過如下步驟:


1)Sentinel之間進行選舉,選舉出一個leader,由選舉出的leader進行failover


2)Sentinel leader選取slave節點中的一個slave作為新的Master節點。對slave選舉需要對slave進行選舉的方法如下:


a) 與master斷開時間

 如果與master斷開的時間超過down-after-milliseconds(sentinel配置) * 10秒加上從sentinel判定master不可用到sentinel開始執行故障轉移之間的時間,就認為該slave不適合提升為master。


b) slave優先順序

每個slave都有優先順序,儲存在redis.conf配置檔案裡。如果優先順序相同,則繼續進行。


c) 複製偏移位置

複製偏移紀錄著從master複製資料複製到哪裡,複製偏移越大表明從master接受的資料越多,如果複製偏移量也一樣,繼續進行選舉


d) Run ID

選舉具有最小Run ID的Slave作為新的Master

流程圖如下:

Redis Sentinel實現原理


3) Sentinel leader會在上一步選舉的新master上執行slaveof no one操作,將其提升為master節點


4)Sentinel leader向其它slave傳送命令,讓剩餘的slave成為新的master節點的slave


5)Sentinel leader會讓原來的master降級為slave,當恢復正常工作,Sentinel leader會傳送命令讓其從新的master進行復制

以上failover操作均有sentinel自己獨自完成,完全無需人工干預。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2739079/,如需轉載,請註明出處,否則將追究法律責任。

相關文章