redis高可用實(shí)踐之FAILOVER

服務(wù)的可用性不僅僅是指服務(wù)健康運(yùn)行的時(shí)間,還包括出現(xiàn)故障以后的恢復(fù)速度。保證一個(gè)服務(wù)的高可用记罚,基本可以從 軟件質(zhì)量 故障預(yù)防 故障恢復(fù)三方面著手浅妆。對(duì)于redis望迎,軟件的質(zhì)量本身有很大的保障,因此對(duì)于線上大規(guī)模的redis集群運(yùn)維管理凌外,基本上可以從故障預(yù)防和故障恢復(fù)兩方面著辩尊。雖然redis cluster本身具有自動(dòng)主從容災(zāi)的高可用能力,但是某些場(chǎng)景cluster依然無(wú)法很好地處理康辑。本文將結(jié)合CLUSTER FAILOVER 集群管理命令詳細(xì)介紹如何進(jìn)一步提升redis集群的可用性摄欲。

首先對(duì)CLUSTER FAILOVER命令做個(gè)介紹:

CLUSTER FAILOVER處理流程

  1. 通知master停止處理來(lái)自客戶端的請(qǐng)求
  2. master響應(yīng)當(dāng)前最大的replication offset
  3. 客戶端等待復(fù)制復(fù)制同步完成直到replication offset
  4. 提升epoch并獲取半數(shù)leader的選舉認(rèn)可
  5. 更新configuration并解除客戶端的阻塞請(qǐng)求,返回重定向到新的master

該操作用于正常的主從切換疮薇,但是如果master節(jié)點(diǎn)宕機(jī)了無(wú)法響應(yīng)failover請(qǐng)求胸墙,那么failover將會(huì)失敗,為了處理master宕機(jī)的情況按咒,可以添加FORCE 選項(xiàng)迟隅。

CLUSTER FAILOVER FORCE: 添加FORCE選項(xiàng)時(shí),failover流程直接從上述的第4步開(kāi)始励七,也即跳過(guò)了和舊master通信協(xié)商復(fù)制數(shù)據(jù)的過(guò)程智袭,當(dāng)master宕機(jī)時(shí),force選項(xiàng)可以快速進(jìn)行人工主從切換掠抬。但是該過(guò)程仍然需要獲得半數(shù)master的統(tǒng)=同意才能當(dāng)選為新主吼野。當(dāng)出現(xiàn)半數(shù)master節(jié)點(diǎn)異常時(shí),該流程無(wú)法進(jìn)行主從切換两波。

CLUSTER FAILOVER TAKEOVER: 為了處理半數(shù)master節(jié)點(diǎn)異常的場(chǎng)景瞳步,可以添加****TAKEOVER 選項(xiàng)。通過(guò)TAKEOVER 選項(xiàng)雨女,可以無(wú)需獲得半數(shù)master的認(rèn)同谚攒,而是直接更新?tīng)顟B(tài)為master并向所有可達(dá)的節(jié)點(diǎn)發(fā)送最新配置epoch。****

接下來(lái)將結(jié)合場(chǎng)景介紹如何通過(guò)FAILOVER 提升集群可用性

主從節(jié)點(diǎn)均衡漂移切換氛堕,負(fù)載均衡

防患以未然馏臭,當(dāng)機(jī)器負(fù)載過(guò)高或者出現(xiàn)異常故障時(shí),需要將部署在該機(jī)器的redis實(shí)例遷移出,遷移流程包含:

  1. 在新的機(jī)器部署一個(gè)slave實(shí)例并同步數(shù)據(jù)
  2. 同步完數(shù)據(jù)以后將舊的實(shí)例下線。

如果舊機(jī)器有實(shí)例處于master括儒,則需要先將role改外slave绕沈,然后在進(jìn)行遷移,此時(shí)可以通過(guò)對(duì)slave節(jié)點(diǎn)發(fā)送cluster failover帮寻,將節(jié)點(diǎn)改為slave以后在進(jìn)行刪除乍狐。

FORCE: 主節(jié)點(diǎn)宕機(jī)時(shí)快速選主

最理想的情況是出現(xiàn)故障之前提前解決處理,但是這畢竟只是理想固逗。當(dāng)節(jié)點(diǎn)宕機(jī)或者負(fù)載過(guò)高導(dǎo)致無(wú)法響應(yīng)時(shí)浅蚪,可能出現(xiàn)FAILOVER失敗的情況,此時(shí)則可以通過(guò)添加FORCE選項(xiàng)進(jìn)行強(qiáng)制主從切換烫罩,將健康的slave節(jié)點(diǎn)提升為master從而快速恢復(fù)服務(wù)惜傲。

TAKEOVER: 半數(shù)master故障時(shí),強(qiáng)制更新快速止損恢復(fù)服務(wù)贝攒。

雖然在線上環(huán)境的部署上盗誊,redis的master節(jié)點(diǎn)會(huì)做到盡可能分散,但是在某些場(chǎng)景寫(xiě)隘弊,還是可能出現(xiàn)半數(shù)master節(jié)點(diǎn)故障的情況:

  1. 測(cè)試環(huán)境機(jī)器上哈踱,部分機(jī)器宕機(jī)可能導(dǎo)致超過(guò)半數(shù)master異常,此時(shí)redis集群無(wú)法自動(dòng)恢復(fù)梨熙,雖然是測(cè)試環(huán)境开镣,但是故障快速修復(fù)依然同樣重要,否則會(huì)驗(yàn)證影響研發(fā)測(cè)試進(jìn)度串结。
  2. 多活部署場(chǎng)景哑子,多活場(chǎng)景下舅列,通臣「睿可以將主節(jié)點(diǎn)部署在一個(gè)機(jī)房,從節(jié)點(diǎn)部署在另外一個(gè)機(jī)房提供讀或者容災(zāi)帐要。當(dāng)機(jī)房出現(xiàn)故障時(shí)把敞,此時(shí)則可以通過(guò)添加takeover選項(xiàng)將從機(jī)房的節(jié)點(diǎn)提升為主,快速恢復(fù)集群寫(xiě)能力榨惠。

總結(jié)

雖然redis cluster本身提供了高可用的能力奋早,但是在某些場(chǎng)景下依然需要人為介入進(jìn)行處理,本文介紹了FAILOVER的幾種應(yīng)用實(shí)踐場(chǎng)景赠橙,通過(guò)將該操作和option集成到自動(dòng)運(yùn)維平臺(tái)耽装,進(jìn)一步提升了redis的可用性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末期揪,一起剝皮案震驚了整個(gè)濱河市掉奄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凤薛,老刑警劉巖姓建,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诞仓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡速兔,警方通過(guò)查閱死者的電腦和手機(jī)墅拭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)涣狗,“玉大人谍婉,你說(shuō)我怎么就攤上這事《频觯” “怎么了屡萤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)掸宛。 經(jīng)常有香客問(wèn)我死陆,道長(zhǎng),這世上最難降的妖魔是什么唧瘾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任措译,我火速辦了婚禮,結(jié)果婚禮上饰序,老公的妹妹穿的比我還像新娘领虹。我一直安慰自己,他們只是感情好求豫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布塌衰。 她就那樣靜靜地躺著,像睡著了一般蝠嘉。 火紅的嫁衣襯著肌膚如雪最疆。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天蚤告,我揣著相機(jī)與錄音努酸,去河邊找鬼。 笑死杜恰,一個(gè)胖子當(dāng)著我的面吹牛获诈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播心褐,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舔涎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了逗爹?” 一聲冷哼從身側(cè)響起亡嫌,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后昼伴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體匾旭,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年圃郊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了价涝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡持舆,死狀恐怖色瘩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逸寓,我是刑警寧澤居兆,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站竹伸,受9級(jí)特大地震影響泥栖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜勋篓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一吧享、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧譬嚣,春花似錦钢颂、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至尼桶,卻和暖如春操灿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疯汁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工牲尺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卵酪,地道東北人幌蚊。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像溃卡,于是被迫代替她去往敵國(guó)和親溢豆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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

  • 高可用方案 “高可用性”(High Availability)通常來(lái)描述一個(gè)系統(tǒng)經(jīng)過(guò)專門(mén)的設(shè)計(jì)瘸羡,從而減少停工時(shí)間漩仙,...
    奮斗的蛐蛐閱讀 1,320評(píng)論 0 0
  • Redis Cluster ? Redis Cluster 集群分區(qū)方案采用去中心化的方式,包括:shardi...
    左師兄zuosx閱讀 997評(píng)論 0 2
  • 簡(jiǎn)介 是一種去中心化的集群架構(gòu) 分布式,對(duì)總數(shù)據(jù)進(jìn)行分片队他,每個(gè)節(jié)點(diǎn)存放一部分?jǐn)?shù)據(jù) 提供內(nèi)置的高可用支持卷仑,當(dāng)部分ma...
    double_hi閱讀 232評(píng)論 0 0
  • [TOC] 1. Redis集群介紹 Redis 集群是一個(gè)提供在多個(gè)Redis間節(jié)點(diǎn)間共享數(shù)據(jù)的程序集。 Red...
    為愛(ài)瘋狂_3850閱讀 376評(píng)論 0 0
  • 一麸折、Redis Sentinel 介紹 1锡凝、Sentinel 數(shù)據(jù)庫(kù)環(huán)境搭建,從單機(jī)版到主備垢啼、再到多數(shù)據(jù)庫(kù)集群窜锯,我...
    weide86閱讀 0評(píng)論 0 0