redis哨兵核心底層原理

sdown和odown兩種失敗狀態(tài)

sdown是主觀宕機(jī)卵贱,就一個(gè)哨兵如果自己覺得有一個(gè)master宕機(jī)了抛虫,那么就是主觀宕機(jī)。
odown是客觀宕機(jī)狐榔,如果quorum數(shù)量的哨兵都覺得master宕機(jī)了坛增,那么就是客觀宕機(jī)
sdown達(dá)成條件很簡單,如果一個(gè)哨兵ping一個(gè)master薄腻,超過is-master-down-milliseconds指定的毫秒數(shù)之后收捣,就主觀認(rèn)為master宕機(jī)
sdown到odown轉(zhuǎn)換的條件很簡單,如果一個(gè)哨兵在指定時(shí)間中庵楷,收到quorum指定數(shù)量的其他哨兵也認(rèn)為master是sdown了罢艾,那就認(rèn)為客觀宕機(jī)。


哨兵集群的自動(dòng)發(fā)現(xiàn)機(jī)制

哨兵互相之間的發(fā)現(xiàn)尽纽,是通過redis的pub/sub系統(tǒng)實(shí)現(xiàn)的咐蚯,每個(gè)哨兵會(huì)往sentinel:hello這個(gè)channel里邊發(fā)送一個(gè)消息,這個(gè)時(shí)候所有其他哨兵都可以消費(fèi)到這個(gè)消息弄贿,并感知到其他哨兵的存在春锋。
每個(gè)哨兵也會(huì)去監(jiān)聽自己監(jiān)控的每個(gè)master+slave對(duì)應(yīng)的sentinel:hello channel,然后感知到同樣再監(jiān)聽這個(gè)master+slaves的其他哨兵的存在
每個(gè)哨兵還會(huì)跟其他哨兵交換對(duì)master的監(jiān)控配置差凹,互相進(jìn)行監(jiān)控配置同步期奔。


slave配置的自動(dòng)糾正

哨兵會(huì)負(fù)責(zé)自動(dòng)糾正slave的一些配置,比如slave如果要稱為潛在的master候選人危尿,哨兵會(huì)確保slave再復(fù)制現(xiàn)在master的數(shù)據(jù)呐萌,如果slave連接到一個(gè)錯(cuò)誤的master上,比如故障轉(zhuǎn)移后谊娇,那么哨兵會(huì)確保他們連接到正確的master上肺孤。


slave->master選舉算法

如果一個(gè)master被認(rèn)為odown了,而且majority哨兵都允許了貯備切換,那么某個(gè)哨兵就會(huì)執(zhí)行主備切換操作渠旁,此時(shí)首先選舉一個(gè)slave來
會(huì)考慮slave一些信息

  • 跟master斷開連接時(shí)間
  • slave優(yōu)先級(jí)
  • 復(fù)制offset
  • run id
    如果一個(gè)slave跟master斷開連接已經(jīng)超過down-after-milliseconds的10倍攀例,外加master宕機(jī)時(shí)長船逮,那么slave就認(rèn)定不合適選舉為master
    接下來會(huì)對(duì)slave排序
    (1)按照slave優(yōu)先級(jí)進(jìn)行排序顾腊,slave priority越低,優(yōu)先級(jí)越高
    (2)如果slave priority相同挖胃,那么看replica offset杂靶,哪個(gè)salve復(fù)制了越多數(shù)據(jù),offset越靠后酱鸭,優(yōu)先級(jí)越高
    (3)如果上面兩個(gè)條件都相同吗垮,那么選擇一個(gè)run id比較小的那個(gè)slave

quorum和majority

每次一個(gè)哨兵要做主備切換,首先需要quorum數(shù)量的哨兵認(rèn)為odown凹髓,然后選舉一個(gè)哨兵來做切換烁登,這個(gè)哨兵還得得到majority哨兵的授權(quán),才能正式執(zhí)行切換蔚舀。

configuration epoch

哨兵會(huì)對(duì)一套redis master+slave進(jìn)行監(jiān)控饵沧,有相應(yīng)監(jiān)控的配置
執(zhí)行切換的那個(gè)哨兵,會(huì)從要切換到的新master(slave->master)那里得到一個(gè)configuration epoch赌躺,這就是一個(gè)version號(hào)狼牺,每次切換的version號(hào)必須是唯一的。
如果第一個(gè)選舉出來的哨兵切換失敗了礼患,那么其他哨兵是钥,會(huì)等待failover-timeout時(shí)間,然后接替繼續(xù)執(zhí)行切換缅叠,此時(shí)會(huì)重新獲得一個(gè)新的configuration epoch悄泥,作為新的version號(hào)。


configuration傳播

哨兵完成切換以后肤粱,會(huì)在自己本地更新生成最新的master配置弹囚,然后同步給其他哨兵,就是通過之前所得pub/sub消息機(jī)制
這里version號(hào)就很重要了狼犯,因?yàn)楦鞣N消息都是通過一個(gè)channel去發(fā)布和監(jiān)聽的余寥,所以一個(gè)哨兵完成一次新的切換后,新的master配置是跟著新的version號(hào)的
其他的哨兵都是根據(jù)版本號(hào)的大小來更新自己的master配置的悯森。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宋舷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瓢姻,更是在濱河造成了極大的恐慌祝蝠,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绎狭,居然都是意外死亡细溅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門儡嘶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喇聊,“玉大人,你說我怎么就攤上這事蹦狂∈睦椋” “怎么了?”我有些...
    開封第一講書人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵凯楔,是天一觀的道長窜骄。 經(jīng)常有香客問我,道長摆屯,這世上最難降的妖魔是什么邻遏? 我笑而不...
    開封第一講書人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮虐骑,結(jié)果婚禮上准验,老公的妹妹穿的比我還像新娘。我一直安慰自己富弦,他們只是感情好沟娱,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腕柜,像睡著了一般济似。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盏缤,一...
    開封第一講書人閱讀 52,821評(píng)論 1 314
  • 那天砰蠢,我揣著相機(jī)與錄音,去河邊找鬼唉铜。 笑死台舱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的潭流。 我是一名探鬼主播竞惋,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼灰嫉!你這毒婦竟也來了拆宛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤讼撒,失蹤者是張志新(化名)和其女友劉穎浑厚,沒想到半個(gè)月后股耽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钳幅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年物蝙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敢艰。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诬乞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盖矫,到底是詐尸還是另有隱情丽惭,我是刑警寧澤击奶,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布辈双,位于F島的核電站,受9級(jí)特大地震影響柜砾,放射性物質(zhì)發(fā)生泄漏湃望。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一痰驱、第九天 我趴在偏房一處隱蔽的房頂上張望证芭。 院中可真熱鬧,春花似錦担映、人聲如沸废士。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽官硝。三九已至,卻和暖如春短蜕,著一層夾襖步出監(jiān)牢的瞬間氢架,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來泰國打工朋魔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岖研,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓警检,卻偏偏與公主長得像孙援,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扇雕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容