Redis設計 - Sentinel哨兵

背景

Redis單獨實現了一個Sentinel模塊,用於監聽主從實例,主動下線問題的主實例,替換從實例,以達到Redis的高可用。

初始化

初始化Sentinel時指定監控的主實例列表masters,向主實例們改起連接,僞裝成它們的一個客戶端。Sentinel每隔十秒發送一條INFO消息給主服務器,獲取主服務器狀態,及對應的從服務器實例並連接。

連接其它結點

Sentinel還以兩秒一次的頻率,向主從實例publish指定頻道的信息,同時也監控這個頻道。通過這種方式不同的Sentinel服務器可以相互感知到對方——Sentinel之間因此知道了彼此的ip,彼此連接起來,僞裝成對方的客戶端。

下線

  • 主觀下線:每秒一次向所有主、從、Sentinel服務器發送PING命令,若不返回說明斷連。一定時間內斷連,Sentinel將此服務器標爲“主觀下線”
  • 客觀下線:足夠多的Sentinel實例認爲一個結點主觀下線,則構成“客觀下線”。
  • 故障轉移:客觀下線後Sentinel通過raft算法選出一個執行者,對下線的主服務器進行故障轉移,挑選其從服務器成爲新的主。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章