雖然現在使用哨兵+主從的方式比較少了,但通過理解 Redis 哨兵,我們能獲得更深入的分散式的知識。 https://redis.io/topics/sentinel sentinel基本配置 sentinel的作用: 1、監控 2、通知 3、自動故障轉移 (1.投票決策master是否掛了,如果投 ...
雖然現在使用哨兵+主從的方式比較少了,但通過理解 Redis 哨兵,我們能獲得更深入的分散式的知識。
sentinel基本配置
sentinel的作用:
- 1、監控
- 2、通知
- 3、自動故障轉移 (1.投票決策master是否掛了,如果投票決策master掛了,2.則進一步決策選出執行故障轉移的leader, 去執行故障轉移)
- 4、充當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和其副本的自動發現
sentinel和其副本的自動發現,採用了 Pub/Sub發佈訂閱機制實現
- 1.每個sentinel每2秒往其監視的Redis Master及其副本中發佈頻道
__sentinel__:hello
宣告自己的 ip port runid - 2.每個sentinel都訂閱其監視的Redis Master及其副本中的頻道
__sentinel__:hello
@SvenAugustus(https://www.flysium.xyz/)
更多請關註微信公眾號【編程不離宗】,專註於分享伺服器開發與編程相關的技術乾貨: