redis高級之集羣---哨兵模式

接下來我們就介紹一下哨兵模式,我們會從以下幾個方面進行介紹:

  1. 哨兵簡介
  2. 啓用哨兵模式
  3. 哨兵工作原理

假如master主機“宕機”了,我們要做的就是把宕機的master幹掉,然後從剩餘的slave中選出一個master

               

下圖是挑選出新的master

                     

在主master宕機到選擇出新的master,中間經歷了什麼。如下:

  • 將宕機的master下線
  • 找一個slave作爲master
  • 通知所有的slave連接新的master
  • 啓動新的master與slave
  • 全量複製*N+部分複製*N(重啓後有可能是N臺slave全量複製+部分複製)

 

那麼問題來了……

誰來確認master宕機了?

找一個主?怎麼找法?

修改配置後,原始的主恢復了怎麼辦?

這個時候哨兵就來了

哨兵

哨兵(sentinel)是一個分佈式系統,用於對主從結構中的每臺服務器進行監控,當出現故障時通過投票機制選擇新的master並將所有slave連接到新的master

 

哨兵的作用

1.監控

     不斷的檢查master和slave是否正常運行

     Master存活檢測、master與slave運行情況檢測

2.通知(提醒)

     當被監控的服務器出現問題時,向其他(哨兵間,客戶端)發送通知

3.自動故障轉移

     斷開master與slave連接,選取一個slave作爲master,將其他slave連接到新的master,並告知客戶端新的服務器地址

注意:哨兵也是一臺redis服務器,只是不提供數據服務

    通常哨兵配置數量爲單數

配置哨兵

  • 配置一拖二主從結構
  • 配置三個哨兵(配置相同,端口不同)

參看sentinel.conf

  • 啓動哨兵

redis-sentinel sentinel-端口號.conf

查看配置文件

cat sentinel.conf |grep -v “#” |grep -v “^$” > ./conf/sentinel-26379.conf

上面的的命令是過濾掉#的註釋和換行,然後將這個文件中過濾後的內容複製到後面的文件中

哨兵工作原理

階段一:監控階段

用於同步各個節點的狀態信息

獲取各個sentinel的狀態(是否在線)

獲取master的狀態

Master屬性

runid

role:master

各個slave的詳細信息

獲取所有slave的狀態(根據master中的slave信息)

Slave屬性

runid

role:slave

master_host、master_port

offset

……

 

階段二:通知階段

 

階段三:故障轉移階段

主觀下線:一臺sentinel認爲掛了

客觀下線:超過半數sentinel認爲掛了

sentinel1認爲master掛了,然後標誌主觀下線,然後它在sentinel圈內傳播,然後sentinel2、sentinel3向master發起呼叫,如果超過半數沒有迴應,則標誌其爲客觀下線。

 

然後清理隊伍,清理隊伍之前先選擇一個領頭的master

首先會把掛掉的ip、端口發到內部羣裏,然後說一下自己參與過的競選次數,然後告訴別人自己的runid,讓大家選自己,比如1和4同時將信息發到內部羣裏,2先接到誰的就把這一票投給誰。按照這個機制,最後會得到一個投票的結果。如果沒有得到一個好的結果,然後競選次數增加一,繼續競選

發送:SENTINEL is-master-down-by-addr ……

            掛掉的ip

            掛掉的端口

            競選次數

            自己的runid

 

下面我們來看整個過程圖

sentinel1和sentinel4同時向sentinel2發送信息,讓選自己

sentinel2很尷尬,都是好哥們,它會根據接收的先後順序去選擇

其他哨兵也同樣投票

最終sentinel1以絕對的優勢勝出,當選皇帝

 

最後sentinel1成功當選處置人選。

然後開始處置

服務器列表中挑選備選master

不在線的(OUT)

響應慢的(OUT)

與原master斷開時間久的(OUT)

優先原則

       優先級

       offset(優先級一樣,看偏移量)

       runid(如果偏移量一樣,則論資排)

發送指令(sentinel)

向新的master發送slaveof no one

向其他slave發送slaveof新masterIP端口

 

總結

  • 監控

             同步信息

  • 通知

       保持聯通

  • 故障轉移

       發現問題

       競選負責人

       優選新master

       新master上任,其他slave切換master,原master作爲slave故障恢復後連接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章