十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇內(nèi)容介紹了“redis哨兵架構(gòu)的基礎(chǔ)知識整理”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
1. 哨兵的介紹
sentinel , 中文是哨兵。
哨兵是redis 集群架構(gòu)中非常重要的一個組件,主要功能如下:
(1)集群監(jiān)控:負(fù)責(zé)監(jiān)控reidis master 和slave 進(jìn)程是否正常工作;
(2)消息通知:如果某個redis實(shí)例有故障,那么哨兵負(fù)責(zé)發(fā)送消息作為報(bào)警通知給管理員;
(3)故障轉(zhuǎn)移:如果master node掛掉了,會自動轉(zhuǎn)移到slave node上;
(4)配置中心:如果故障轉(zhuǎn)移發(fā)生了,通知client 客戶端新的master 地址;
哨兵本身也是分布式的作為一個哨兵集群去運(yùn)行,互相協(xié)同工作;
(1)故障轉(zhuǎn)移時, 判斷一個master node宕機(jī)了,需要大部分的哨兵都同意才行,涉及到了分布式選舉的問題;
(2)即使部分哨兵節(jié)點(diǎn)掛了,哨兵集群還是能正常工作的,因?yàn)槿绻?一個作為高可用機(jī)制重要組成部分的故障轉(zhuǎn)移系統(tǒng)本身是單點(diǎn)的,那就坑爹了;目前采用的是sentinel 2 版本,sentinel2 相對于 sentinel 1 來說,重寫了很多代碼,主要是讓故障轉(zhuǎn)移的機(jī)制和算法變得更加健壯和簡單。
2. 哨兵的核心知識
(1)哨兵至少需要3個實(shí)例,來保證自己的健壯性;
(2)哨兵+redis 主從的部署架構(gòu),是不會保證數(shù)據(jù)0丟失的,只能保證redis 集群的高可用性;
(3)對于哨兵+redis主從這種負(fù)責(zé)的部署架構(gòu),盡量在測試環(huán)境和生產(chǎn)環(huán)境,都進(jìn)行充足的測試和演練;
3. 為什么redis 哨兵集群只有2個節(jié)點(diǎn)無法正常工作?
哨兵集群必須部署2個以上節(jié)點(diǎn),如果哨兵集群僅僅部署了2個哨兵實(shí)例,quorum=1
M1 R1
S1 S2
Configuration:quorum = 1 (哨兵節(jié)點(diǎn)只要1個認(rèn)為宕機(jī)就可以進(jìn)行切換了)
master 宕機(jī),s1 和 s2 中只要有一個哨兵認(rèn)為宕機(jī)就可以進(jìn)行切換,同時s1和s2中會選舉出一個哨兵來進(jìn)行故障轉(zhuǎn)移,同時這個時候,需要majority,也就是大多數(shù)哨兵都是運(yùn)行的,2個哨兵的majority就是2,2個哨兵都運(yùn)行這,就可以允許執(zhí)行故障轉(zhuǎn)移,但是整個M1和S2運(yùn)行的機(jī)器宕機(jī)了,那么哨兵只有1個了,此時就沒有majority來允許執(zhí)行故障轉(zhuǎn)移,雖然另外一臺機(jī)器還有一個R1,但是故障轉(zhuǎn)移不會執(zhí)行;
4. 經(jīng)典的3節(jié)點(diǎn)哨兵集群
M1
S1
R2 R3
S2 S3
Configuration:quorum = 2 majoiry
如果M1所在機(jī)器宕機(jī)了,那么3個哨兵還剩下2個,S2和S3可以一致認(rèn)為master 宕機(jī),然后選舉一個來執(zhí)行故障轉(zhuǎn)移;同時3個哨兵的majoiry = 2 , 所以還剩下2個哨兵運(yùn)行著,就可以進(jìn)行故障轉(zhuǎn)移。
“redis哨兵架構(gòu)的基礎(chǔ)知識整理”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!