Redis 哨兵機制

雖然如今使用哨兵+主從的方式比較少了,但經過理解 Redis 哨兵,咱們能得到更深刻的分佈式的知識。redis

sentinel基本配置

file
sentinel的做用:shell

  • 一、監控
  • 二、通知
  • 三、自動故障轉移 (1.投票決策master是否掛了,若是投票決策master掛了,2.則進一步決策選出執行故障轉移的leader, 去執行故障轉移)
  • 四、充當client的受權和master查詢服務
sentinel monitor <master-group-name> <ip> <port> <quorum>

quorum 的含義:
(1)表示 sentinel 集羣中 quorum 個節點認爲 master掛了,那麼就可能觸發自動故障轉移進程。
(2)quorum 僅用於故障檢測,不涉及sentinel 集羣的其餘投票決策。編程

sentinel <option_name> <master_name> <option_value>

(1)判斷主master掛機的時間 down-after-milliseconds
master沒有回覆PING或回覆錯誤,這個持續多久了,sentinel節點就能夠認爲master掛了服務器

(2)在故障轉移後從新配置爲使用新Master的副本數 parallel-syncs
此數越小,故障轉移速度越快
但須要注意的是當副本也提供服務的時候,可能存在不一致數據微信

(3)失敗的超時時間 failover-timeout
failover過時時間,當failover開始後,在此時間內仍然沒有觸發任何failover操做,當前sentinel將會認爲這次failoer失敗。分佈式

sentinel和其副本的自動發現

file
sentinel和其副本的自動發現,採用了 Pub/Sub發佈訂閱機制實現3d

  • 1.每一個sentinel每2秒往其監視的Redis Master及其副本中發佈頻道 __sentinel__:hello 宣告本身的 ip port runid
  • 2.每一個sentinel都訂閱其監視的Redis Master及其副本中的頻道 __sentinel__:hello

@SvenAugustus(https://www.flysium.xyz/)
更多請關注微信公衆號【編程不離宗】,專一於分享服務器開發與編程相關的技術乾貨:
code

相關文章
相關標籤/搜索