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