佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 詳解redis集群選舉機(jī)制

詳解redis集群選舉機(jī)制

熱門標(biāo)簽:AI電銷 服務(wù)外包 Linux服務(wù)器 百度競價(jià)排名 網(wǎng)站排名優(yōu)化 鐵路電話系統(tǒng) 地方門戶網(wǎng)站 呼叫中心市場需求

概要

當(dāng)redis集群的主節(jié)點(diǎn)故障時,Sentinel集群將從剩余的從節(jié)點(diǎn)中選舉一個新的主節(jié)點(diǎn),有以下步驟:

  • 故障節(jié)點(diǎn)主觀下線
  • 故障節(jié)點(diǎn)客觀下線
  • Sentinel集群選舉Leader
  • Sentinel Leader決定新主節(jié)點(diǎn)

選舉過程

1、主觀下線

Sentinel集群的每一個Sentinel節(jié)點(diǎn)會定時對redis集群的所有節(jié)點(diǎn)發(fā)心跳包檢測節(jié)點(diǎn)是否正常。如果一個節(jié)點(diǎn)在down-after-milliseconds時間內(nèi)沒有回復(fù)Sentinel節(jié)點(diǎn)的心跳包,則該redis節(jié)點(diǎn)被該Sentinel節(jié)點(diǎn)主觀下線。

2、客觀下線

當(dāng)節(jié)點(diǎn)被一個Sentinel節(jié)點(diǎn)記為主觀下線時,并不意味著該節(jié)點(diǎn)肯定故障了,還需要Sentinel集群的其他Sentinel節(jié)點(diǎn)共同判斷為主觀下線才行。

該Sentinel節(jié)點(diǎn)會詢問其他Sentinel節(jié)點(diǎn),如果Sentinel集群中超過quorum數(shù)量的Sentinel節(jié)點(diǎn)認(rèn)為該redis節(jié)點(diǎn)主觀下線,則該redis客觀下線。

如果客觀下線的redis節(jié)點(diǎn)是從節(jié)點(diǎn)或者是Sentinel節(jié)點(diǎn),則操作到此為止,沒有后續(xù)的操作了;如果客觀下線的redis節(jié)點(diǎn)為主節(jié)點(diǎn),則開始故障轉(zhuǎn)移,從從節(jié)點(diǎn)中選舉一個節(jié)點(diǎn)升級為主節(jié)點(diǎn)。

3、Sentinel集群選舉Leader

如果需要從redis集群選舉一個節(jié)點(diǎn)為主節(jié)點(diǎn),首先需要從Sentinel集群中選舉一個Sentinel節(jié)點(diǎn)作為Leader。

每一個Sentinel節(jié)點(diǎn)都可以成為Leader,當(dāng)一個Sentinel節(jié)點(diǎn)確認(rèn)redis集群的主節(jié)點(diǎn)主觀下線后,會請求其他Sentinel節(jié)點(diǎn)要求將自己選舉為Leader。被請求的Sentinel節(jié)點(diǎn)如果沒有同意過其他Sentinel節(jié)點(diǎn)的選舉請求,則同意該請求(選舉票數(shù)+1),否則不同意。

如果一個Sentinel節(jié)點(diǎn)獲得的選舉票數(shù)達(dá)到Leader最低票數(shù)(quorumSentinel節(jié)點(diǎn)數(shù)/2+1的最大值),則該Sentinel節(jié)點(diǎn)選舉為Leader;否則重新進(jìn)行選舉。

4、Sentinel Leader決定新主節(jié)點(diǎn)

當(dāng)Sentinel集群選舉出Sentinel Leader后,由Sentinel Leader從redis從節(jié)點(diǎn)中選擇一個redis節(jié)點(diǎn)作為主節(jié)點(diǎn):

  • 過濾故障的節(jié)點(diǎn)
  • 選擇優(yōu)先級slave-priority最大的從節(jié)點(diǎn)作為主節(jié)點(diǎn),如不存在則繼續(xù)
  • 選擇復(fù)制偏移量(數(shù)據(jù)寫入量的字節(jié),記錄寫了多少數(shù)據(jù)。主服務(wù)器會把偏移量同步給從服務(wù)器,當(dāng)主從的偏移量一致,則數(shù)據(jù)是完全同步)最大的從節(jié)點(diǎn)作為主節(jié)點(diǎn),如不存在則繼續(xù)
  • 選擇runid(redis每次啟動的時候生成隨機(jī)的runid作為redis的標(biāo)識)最小的從節(jié)點(diǎn)作為主節(jié)點(diǎn)

為什么Sentinel集群至少3節(jié)點(diǎn)

一個Sentinel節(jié)選舉成為Leader的最低票數(shù)為quorumSentinel節(jié)點(diǎn)數(shù)/2+1的最大值,如果Sentinel集群只有2個Sentinel節(jié)點(diǎn),則

Sentinel節(jié)點(diǎn)數(shù)/2 + 1
= 2/2 + 1
= 2

即Leader最低票數(shù)至少為2,當(dāng)該Sentinel集群中由一個Sentinel節(jié)點(diǎn)故障后,僅剩的一個Sentinel節(jié)點(diǎn)是永遠(yuǎn)無法成為Leader。

也可以由此公式可以推導(dǎo)出,Sentinel集群允許1個Sentinel節(jié)點(diǎn)故障則需要3個節(jié)點(diǎn)的集群;允許2個節(jié)點(diǎn)故障則需要5個節(jié)點(diǎn)集群。

到此這篇關(guān)于詳解redis集群選舉機(jī)制的文章就介紹到這了,更多相關(guān)redis集群選舉機(jī)制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳細(xì)分析Redis集群故障
  • Redis集群下過期key監(jiān)聽的實(shí)現(xiàn)代碼
  • Redis集群搭建全記錄
  • Windows環(huán)境部署Redis集群
  • redis集群搭建教程及遇到的問題處理
  • Redis cluster集群的介紹
  • Redis集群與SSM整合使用方法

標(biāo)簽:黃山 崇左 仙桃 湖南 湘潭 銅川 衡水 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解redis集群選舉機(jī)制》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    诏安县| 获嘉县| 迁安市| 凌源市| 齐齐哈尔市| 勃利县| 涿州市| 小金县| 崇仁县| 新巴尔虎左旗| 集安市| 高安市| 横山县| 信宜市| 张北县| 峡江县| 建始县| 潼南县| 南郑县| 乌鲁木齐市| 甘孜县| 潞城市| 涿鹿县| 化德县| 巢湖市| 鄂尔多斯市| 泗洪县| 确山县| 六安市| 伊宁县| 平果县| 句容市| 拉孜县| 锦屏县| 遂溪县| 大埔县| 囊谦县| 科尔| 金门县| 永泰县| 淳安县|