今天就跟大家聊聊有關(guān)怎么解析redis中的哨兵模式原理,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
定海ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
本篇文章帶大家深入理解下Redis哨兵模式原理,聊聊sentinel能干什么,啟動(dòng)sentinel方法和Sentinel工作流程,希望對(duì)大家有所幫助!
Redis Sentinel是Redis的官方高可用性解決方案。Redis Sentinel為Redis提供高可用性。實(shí)際上,這意味著使用Sentinel可以創(chuàng)建一個(gè)Redis集群,在沒有人為干預(yù)的情況下抵抗某些類型的失敗,自動(dòng)實(shí)現(xiàn)故障轉(zhuǎn)移?!鞠嚓P(guān)推薦:Redis視頻教程】
1、監(jiān)控redis集群節(jié)點(diǎn)(master+replica)和sentinel節(jié)點(diǎn)健康狀態(tài)
2、自動(dòng)故障轉(zhuǎn)移:如果master出現(xiàn)故障,sentinel可以實(shí)現(xiàn)故障轉(zhuǎn)移,并且通知客戶端連接新的master。
3、通知:通過(guò)api,可以發(fā)送通知到管理員,開發(fā)人員,監(jiān)控的redis實(shí)例出現(xiàn)了故障
4、配置中心:客戶端連接到sentinel,sentinel可以訪問(wèn)master將節(jié)點(diǎn)信息返回給客戶端
1、redis-sentinel /path/to/sentinel.conf
2、redis-server /path/to/sentinel.conf --sentinel
sentinel.conf配置說(shuō)明如下
# 配置需要監(jiān)控的master節(jié)點(diǎn)信息 2代表法定人數(shù) 作用是表示需要最少需要多少個(gè)sentinel節(jié)點(diǎn)同意 #master節(jié)點(diǎn)不可達(dá)才標(biāo)記為客觀下線 #舉例 5個(gè)sentinel實(shí)例 quorum設(shè)置成2 那么有2個(gè)sentinel節(jié)點(diǎn)認(rèn)為master不可達(dá), #則其中一個(gè)會(huì)啟動(dòng)故障轉(zhuǎn)移#如果至少有三個(gè)哨兵可到達(dá),故障轉(zhuǎn)移將被授權(quán)并實(shí)際啟動(dòng)。 sentinel monitor mymaster 127.0.0.1 6379 2 #只需要配置master sentinel會(huì)自動(dòng)檢測(cè)slave信息 sentinel down-after-milliseconds mymaster 60000 #如果master在指定時(shí)間內(nèi)沒有響應(yīng)ping命令/或報(bào)錯(cuò),則認(rèn)為主觀下線了。 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1 #指定故障轉(zhuǎn)移的時(shí)候,同時(shí)支持多少個(gè)replica并行的與master同步數(shù)據(jù),越小故障轉(zhuǎn)移越久 #以上配置可以通過(guò)SENTINEL SET command.來(lái)實(shí)時(shí)修改。 sentinel monitor resque 192.168.1.3 6380 4 sentinel down-after-milliseconds resque 10000 sentinel failover-timeout resque 180000 sentinel parallel-syncs resque 5
注意點(diǎn):
Redis-sentinel必須使用配置文件啟動(dòng),重啟需要根據(jù)配置文件恢復(fù),默認(rèn)打開26379端口,sentinel之間必須開放端口訪問(wèn),方便相互訪問(wèn)。
1、首先sentinel之間是通過(guò)redis的pub/subscribe機(jī)制實(shí)現(xiàn)動(dòng)態(tài)感知。
客觀下線:
當(dāng)主觀下線的節(jié)點(diǎn)是主節(jié)點(diǎn)時(shí),哨兵節(jié)點(diǎn)會(huì)通過(guò)指令sentinel is-masterdown-by-addr
尋求其它哨兵節(jié)點(diǎn)對(duì)主節(jié)點(diǎn)的判斷,當(dāng)超過(guò)quorum(在sentinel配置中配置的法定人數(shù))個(gè)數(shù),此時(shí)哨兵節(jié)點(diǎn)則認(rèn)為該主節(jié)點(diǎn)確實(shí)有問(wèn)題,這樣就客觀下線了,大部分哨兵節(jié)點(diǎn)都同意下線操作,也就說(shuō)是客觀下線。
注意客觀下線只針對(duì)master節(jié)點(diǎn)生效,它會(huì)觸發(fā)故障轉(zhuǎn)移
3,master下線了,需要進(jìn)行故障轉(zhuǎn)移
這里又分為兩步,首先需要選擇sentinel哨兵主節(jié)點(diǎn),通過(guò)sentinel主節(jié)點(diǎn)來(lái)進(jìn)行redis的故障轉(zhuǎn)移。
首先是sentinel選舉領(lǐng)導(dǎo)者。使用raft算法(狀態(tài)共識(shí)算法)。
每一個(gè)Sentinel節(jié)點(diǎn)都可以成為L(zhǎng)eader,當(dāng)一個(gè)Sentinel節(jié)點(diǎn)確認(rèn)redis集群的主節(jié)點(diǎn)主觀下線后,會(huì)請(qǐng)求其他Sentinel節(jié)點(diǎn)要求將自己選舉為L(zhǎng)eader。被請(qǐng)求的Sentinel節(jié)點(diǎn)如果沒有同意過(guò)其他Sentinel節(jié)點(diǎn)的選舉請(qǐng)求,則同意該請(qǐng)求(選舉票數(shù)+1),否則不同意。
如果一個(gè)Sentinel節(jié)點(diǎn)獲得的選舉票數(shù)達(dá)到Leader最低票數(shù)(quorum和Sentinel節(jié)點(diǎn)數(shù)/2+1的最大值),則該Sentinel節(jié)點(diǎn)選舉為L(zhǎng)eader;否則重新進(jìn)行選舉。
Raft核心思想:先到先得,少數(shù)服從多數(shù)。
sentinel選舉出主節(jié)點(diǎn)后,sentinel主節(jié)點(diǎn)需要選舉出redis集群主節(jié)點(diǎn),構(gòu)建新的集群關(guān)系。
選舉新redis主節(jié)點(diǎn)的依據(jù)是:
1、與sentinel斷開連接的時(shí)間。過(guò)濾發(fā)現(xiàn)與主sentinel服務(wù)器斷開連接的時(shí)間超過(guò)配置的主機(jī)超時(shí)時(shí)間down-after-milliseconds的副本slaves
2、副本優(yōu)先級(jí)。 優(yōu)先選擇replica-priority低的。
3、如果優(yōu)先級(jí)相同,已處理復(fù)制偏移量。越大越優(yōu)先,這個(gè)更符合業(yè)務(wù)場(chǎng)景功能。
4、如果復(fù)制offset相同,就看運(yùn)行ID。優(yōu)先選擇小的。
選擇出master節(jié)點(diǎn)后,開始維護(hù)集群關(guān)系。
1、sentinel節(jié)點(diǎn),向新主節(jié)點(diǎn)發(fā)送,slave no one命令,讓它成為獨(dú)立節(jié)點(diǎn)
2、sentinel節(jié)點(diǎn),向其他節(jié)點(diǎn)發(fā)送 slaveof ip port,跟隨到主節(jié)點(diǎn)
通過(guò)上面的分析,sentinel通過(guò)定時(shí)監(jiān)控手段,可以實(shí)現(xiàn)自動(dòng)故障轉(zhuǎn)移,不過(guò)sentinel還是有一些問(wèn)題,比如單個(gè)master節(jié)點(diǎn)情況下,數(shù)據(jù)存在丟失的可能,并且如果單機(jī)性能有限,也沒有橫向擴(kuò)展的能力。
看完上述內(nèi)容,你們對(duì)怎么解析Redis中的哨兵模式原理有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
當(dāng)前題目:怎么解析Redis中的哨兵模式原理
URL分享:http://jinyejixie.com/article26/iicgcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站、網(wǎng)站改版、、網(wǎng)站導(dǎo)航、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)