Redis哨兵模式,一主二仆反客為主,論故障轉移和恢復能力還得是它呀
實際場景分析:為了解決主從模式的無法自動容錯及恢復的問題,Redis引入了一種哨兵模式的集群架構。哨兵模式是在主從復制的基礎上加入了哨兵節點。哨兵節點是一種特殊的Redis節點,用于監控主節點和從節點的狀態。當主節點發生故障時,哨兵節點可以自動進行故障轉移,選擇一個合適的從節點升級為主節點,并通知其他從節點和應用程序進行更新。
圖片
在原來的主從架構中,引入哨兵節點,其作用是監控Redis主節點和從節點的狀態。每個Redis實例都可以作為哨兵節點,通常需要部署多個哨兵節點,以確保故障轉移的可靠性。
好啦,話不多說,接下來就讓我們一起實操吧!
看重點
看到最后:免費領取詳細的Word文檔?
圖片
01哨兵模式原理
哨兵節點定期向所有主節點和從節點發送PING命令,如果在指定的時間內未收到PONG響應,哨兵節點會將該節點標記為主觀下線。如果一個主節點被多數哨兵節點標記為主觀下線,那么它將被標記為客觀下線。
當主節點被標記為客觀下線時,哨兵節點會觸發故障轉移過程?!彼鼤乃薪】档膹墓濣c中選舉一個新的主節點,并將所有從節點切換到新的主節點,實現自動故障轉移。同時,哨兵節點會更新所有客戶端的配置,指向新的主節點。
哨兵節點通過發布訂閱功能來通知客戶端有關主節點狀態變化的消息??蛻舳耸盏较⒑螅瑫屡渲?,將新的主節點信息應用于連接池,從而使客戶端可以繼續與新的主節點進行交互。
這個集群模式的優點就是為整個集群系統了一種故障轉移和恢復的能力。
02搭建Redis哨兵模式步驟
2.1 安裝Redis主從模式(一主二仆)
Redis主從模式具體步驟請參考詳文《不要只會玩兒Redis單機版,如果是讀多寫少的情況,請選擇Redis主從模式吧》
PS:如果都是一臺服務器測試哨兵模式,請將slave-6380.conf和slave-6381.conf中slaveof 127.0.01 6379
2.2 配置Redis哨兵模式(sentinel)具體步驟如下
2.2.1 啟動好一主二仆模式,6379帶著6380、6381
查看詳細信息:info replication
圖片
圖片
圖片
2.2.2 自定義的config目錄下新建sentinel.conf文件
新建sentinel文件命令:touch sentinel.conf
配置哨兵,填寫內容:vi sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 1
#其中mymaster為監控對象起的服務器名稱,1為至少有多少個哨兵同意遷移的數量
sentinel down-after-milliseconds mymaster 30000
#判定服務器down掉的時間周期,默認30000毫秒(30秒)
2.2.3 啟動哨兵
退回上級目錄:cd ../
執行命令:./redis-sentinel config/sentinel.conf
圖片
2.2.4 當主機掛掉,從機選舉中產生新的主機
(大概10秒左右可以看到哨兵窗口日志,切換了新的主機)
哪個從機會被選舉為主機呢?根據優先級別:slave-priority
原主機重啟后會變為從機。
圖片
圖片
PS:如果都是一臺服務器測試哨兵模式,發現6379宕機后并沒有實現選舉從機過程,請務必將6380和6381的slaveof后的IP地址修改為127.0.0.1,將sentinel.conf中sentinel monitor mymaster 127.0.0.1 6379 1的IP地址也統一設置為127.0.0.1
03哨兵模式應用總結
哨兵模式的優勢主要在于當主節點發生故障時,哨兵節點可以自動進行故障轉移與自動恢復,選擇一個合適的從節點升級為主節點,并通知其他從節點和應用程序進行更新。
但是哨兵模式最大的缺點,就是不適用于大規模應用的解決方案,它無法提供了更好的橫向擴展和容錯能力。