新聞中心
背景
在生產(chǎn)環(huán)境中,為了保證redis服務(wù)的高可用,通常都會搭建主從。我們知道主從的原理是從服務(wù)器獲取rdb文件的全量復(fù)制+寫操作的增量復(fù)制來共同保證數(shù)據(jù)的一致性,所以在配置從服務(wù)器的時候,一個很重要的配置項就是標明主服務(wù)器的ip和端口號,總得知道哪一臺服務(wù)器是我的主子不是,像下圖中的replicaof配置。

創(chuàng)新互聯(lián)建站提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計,品牌網(wǎng)站制作,1元廣告等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,十多年的網(wǎng)站開發(fā)和建站經(jīng)驗,助力企業(yè)信息化建設(shè),成功案例突破數(shù)千家,是您實現(xiàn)網(wǎng)站建設(shè)的好選擇.
對于圖中的部署方案,如果主服務(wù)器宕機了,我們只能進行手動干預(yù),選擇一臺從服務(wù)器重新作為主服務(wù)器,然后將另外的兩臺從服務(wù)器的配置文件修改一下,將replicaof的配置重新改成新的主服務(wù)器地址。人工干預(yù)費時費力不說,更重要的是,這樣會造成一段時間內(nèi)服務(wù)是不可用的。在這種場景下,哨兵模式應(yīng)運而生了。
什么是哨兵模式Sentinel
redis的哨兵模式,就是用于在一主多從的集群環(huán)境下,如果主服務(wù)器宕機了,它會自動的將從服務(wù)器中的一臺設(shè)為新的master,并且將其余的slave的配置文件自動修改,這樣就切換出一套新的主從服務(wù),不需要人工干預(yù),且不會影響服務(wù)的使用。
那么它具體是怎么工作的呢?首先看下面這張圖:
哨兵模式結(jié)構(gòu)圖
首先哨兵是一個獨立于主從服務(wù)之外的服務(wù),它也是一個集群服務(wù)。哨兵實例會不斷給主服務(wù)器發(fā)送Ping命令,主服務(wù)器在收到命令后,返回一個有效回復(fù),這樣哨兵實例認為服務(wù)器是正常的。
主觀下線
假設(shè)主服務(wù)器宕機,哨兵1在指定時間內(nèi)(可配置)沒有收到主服務(wù)器的有效回復(fù),那么這個哨兵會把服務(wù)器標記為下線,叫做主觀下線SDOWN。
注意此時只有一個哨兵標記為下線,實際上哨兵沒有收到回復(fù)原因可能有很多,可能是服務(wù)器確實掛了,也有可能是服務(wù)器并沒有掛,由于網(wǎng)絡(luò)原因沒有收到回復(fù),總之,一個哨兵沒有收到回復(fù)并不能證明主服務(wù)器宕機。
客觀下線
哨兵2也發(fā)送了Ping命令,同樣也沒有收到回復(fù),哨兵2也會將主服務(wù)器標記為SDOWN。這個時候,3個哨兵中有2個哨兵上報了SDOWN,哨兵們在彼此交流之后,認為已經(jīng)有足夠數(shù)量的實例證明該服務(wù)已經(jīng)不可用,因此,哨兵實例會將該服務(wù)器標記為客觀下線ODOWN。
這里的足夠數(shù)量是可配置的,一般是哨兵個數(shù)的一半加1,比如3個哨兵則就設(shè)置為2。
投票選舉,故障轉(zhuǎn)移
當(dāng)哨兵實例將服務(wù)標記為客觀下線時,會進行一次選舉。在剩下的從服務(wù)器實例中,選出一個作為主節(jié)點,并同時修改其余從服務(wù)器的配置文件,將新的主節(jié)點作為數(shù)據(jù)同步的來源,然后重新啟動服務(wù),完成切換。
至此,一個完整的哨兵自動進行故障轉(zhuǎn)移的過程就完成了。
springboot配置一主多從+哨兵
如果我們的環(huán)境由主從換成了主從+哨兵,修改配置也比較簡單,先注釋掉原來的host和port的配置,替換成哨兵的配置,如下圖:
需要注意的是,這里nodes里配置的是哨兵集群的IP+端口,而不是主從節(jié)點,一定不要配錯了。
文章名稱:通俗易懂講解Redis的哨兵模式
瀏覽地址:http://m.5511xx.com/article/cdooide.html


咨詢
建站咨詢
