共計(jì) 1847 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。
自動(dòng)寫(xiě)代碼機(jī)器人,免費(fèi)開(kāi)通
這篇文章主要介紹 Redis Sentinel 是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
Redis Sentinel 簡(jiǎn)介
Sentinel(哨兵)進(jìn)程是用于監(jiān)控 redis 集群中 Master 主服務(wù)器工作的狀態(tài),在 Master 主服務(wù)器發(fā)生故障的時(shí)候,可以實(shí)現(xiàn) Master 和 Slave 服務(wù)器的切換,保證系統(tǒng)的高可用,其已經(jīng)被集成在 redis2.6+ 的版本中,Redis 的哨兵模式到了 2.8 版本之后就穩(wěn)定了下來(lái)。一般在生產(chǎn)環(huán)境也建議使用 Redis 的 2.8 版本的以后版本。哨兵 (Sentinel) 是一個(gè)分布式系統(tǒng),你可以在一個(gè)架構(gòu)中運(yùn)行多個(gè)哨兵(sentinel) 進(jìn)程,這些進(jìn)程使用流言協(xié)議(gossipprotocols) 來(lái)接收關(guān)于 Master 主服務(wù)器是否下線的信息,并使用投票協(xié)議 (Agreement Protocols) 來(lái)決定是否執(zhí)行自動(dòng)故障遷移, 以及選擇哪個(gè) Slave 作為新的 Master。每個(gè)哨兵 (Sentinel) 進(jìn)程會(huì)向其它哨兵 (Sentinel)、Master、Slave 定時(shí)發(fā)送消息,以確認(rèn)對(duì)方是否”活”著,如果發(fā)現(xiàn)對(duì)方在指定配置時(shí)間(可配置的) 內(nèi)未得到回應(yīng),則暫時(shí)認(rèn)為對(duì)方已掉線,也就是所謂的”主觀認(rèn)為宕機(jī)”,英文名稱:Subjective Down,簡(jiǎn)稱 SDOWN。有主觀宕機(jī),肯定就有客觀宕機(jī)。當(dāng)“哨兵群”中的多數(shù) Sentinel 進(jìn)程在對(duì) Master 主服務(wù)器做出 SDOWN 的判斷,并且通過(guò) SENTINEL is-master-down-by-addr 命令互相交流之后,得出的 Master Server 下線判斷,這種方式就是“客觀宕機(jī)”,英文名稱是:Objectively Down,簡(jiǎn)稱 ODOWN。通過(guò)一定的 vote 算法,從剩下的 slave 從服務(wù)器節(jié)點(diǎn)中,選一臺(tái)提升為 Master 服務(wù)器節(jié)點(diǎn),然后自動(dòng)修改相關(guān)配置,并開(kāi)啟故障轉(zhuǎn)移(failover)。
哨兵(sentinel) 雖然有一個(gè)單獨(dú)的可執(zhí)行文件 redis-sentinel , 但實(shí)際上它只是一個(gè)運(yùn)行在特殊模式下的 Redis 服務(wù)器,你可以在啟動(dòng)一個(gè)普通 Redis 服務(wù)器時(shí)通過(guò)給定 –sentinel 選項(xiàng)來(lái)啟動(dòng)哨兵(sentinel),哨兵(sentinel) 的一些設(shè)計(jì)思路和 zookeeper 非常類似。
Sentinel 集群之間會(huì)互相通信,溝通交流 redis 節(jié)點(diǎn)的狀態(tài),做出相應(yīng)的判斷并進(jìn)行處理,這里的主觀下線狀態(tài)和客觀下線狀態(tài)是比較重要的狀態(tài),它們決定了是否進(jìn)行故障轉(zhuǎn)移,可以 通過(guò)訂閱指定的頻道信息,當(dāng)服務(wù)器出現(xiàn)故障得時(shí)候通知管理員,客戶端可以將 Sentinel 看作是一個(gè)只提供了訂閱功能的 Redis 服務(wù)器,你不可以使用 PUBLISH 命令向這個(gè)服務(wù)器發(fā)送信息,但你可以用 SUBSCRIBE 命令或者 PSUBSCRIBE 命令,通過(guò)訂閱給定的頻道來(lái)獲取相應(yīng)的事件提醒。一個(gè)頻道能夠接收和這個(gè)頻道的名字相同的事件。比如說(shuō),名為 +sdown 的頻道就可以接收所有實(shí)例進(jìn)入主觀下線(SDOWN)狀態(tài)的事件。
Sentinel(哨兵)進(jìn)程的作用:
1、監(jiān)控(Monitoring): 哨兵(sentinel) 會(huì)不斷地檢查你的 Master 和 Slave 是否運(yùn)作正常。
2、提醒(Notification):當(dāng)被監(jiān)控的某個(gè) Redis 節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí), 哨兵(sentinel) 可以通過(guò) API 向管理員或者其他應(yīng)用程序發(fā)送通知。
3、自動(dòng)故障遷移(Automatic failover):當(dāng)一個(gè) Master 不能正常工作時(shí),哨兵(sentinel) 會(huì)開(kāi)始一次自動(dòng)故障遷移操作,它會(huì)將失效 Master 的其中一個(gè) Slave 升級(jí)為新的 Master, 并讓失效 Master 的其他 Slave 改為復(fù)制新的 Master;當(dāng)客戶端試圖連接失效的 Master 時(shí),集群也會(huì)向客戶端返回新 Master 的地址,使得集群可以使用現(xiàn)在的 Master 替換失效 Master。Master 和 Slave 服務(wù)器切換后,Master 的 redis.conf、Slave 的 redis.conf 和 sentinel.conf 的配置文件的內(nèi)容都會(huì)發(fā)生相應(yīng)的改變,即,Master 主服務(wù)器的 redis.conf 配置文件中會(huì)多一行 slaveof 的配置,sentinel.conf 的監(jiān)控目標(biāo)會(huì)隨之調(diào)換
以上是 Redis Sentinel 是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!
向 AI 問(wèn)一下細(xì)節(jié)
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!