Redis Sentinel(哨兵)部署

Redis-sentinel是Redis實(shí)例的監(jiān)控管理鸟蟹、通知和實(shí)例失效備援服務(wù),是Redis集群的管理工具使兔。在一般的分布式中心節(jié)點(diǎn)數(shù)據(jù)庫(kù)中建钥,Redis-sentinel的作用是中心節(jié)點(diǎn)的工作,監(jiān)控各個(gè)其他節(jié)點(diǎn)的工作情況并且進(jìn)行故障恢復(fù)虐沥,來(lái)提高集群的高可用性熊经。

一、Redis Sentinel規(guī)劃

IP 端口號(hào) 角色
192.168.1.51 7000 Redis Master
192.168.1.52 7000 Redis Master
192.168.1.53 7000 Redis Master
192.168.1.51 27000 Sentinel
192.168.1.52 27000 Sentinel
192.168.1.53 27000 Sentinel

一個(gè)一主多從的Redis系統(tǒng)中置蜀,可以使用多個(gè)哨兵進(jìn)行監(jiān)控任務(wù)以保證系統(tǒng)足夠穩(wěn)健奈搜。此時(shí),不僅哨兵會(huì)同時(shí)監(jiān)控主數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)盯荤,哨兵之間也會(huì)相互監(jiān)控馋吗。在這里,建議大家哨兵至少部署3個(gè)秋秤,并且使用奇數(shù)個(gè)哨兵宏粤。

二、RedisSentinel部署

1灼卢、安裝Redis

在3臺(tái)服務(wù)器上分別安裝Redis绍哎。需要注意的是,如果要給Redis設(shè)置密碼鞋真,需要在3個(gè)Redis的配置文件中設(shè)置相同的密碼崇堰。

requirepass"Redis-Password"

2、設(shè)置主從復(fù)制

在2個(gè)SlaveRedis的配置文件中聲明所從屬的主數(shù)據(jù)庫(kù)。

 slaveof192.168.1.51 7000

這里需要注意一點(diǎn)海诲,如果主數(shù)據(jù)庫(kù)設(shè)置了密碼繁莹,需要所有Redis的配置文件中設(shè)置masterauth"Redis-Password",包括主數(shù)據(jù)庫(kù)特幔。Sentinel可以切換主從數(shù)據(jù)庫(kù)咨演,主數(shù)據(jù)庫(kù)可能會(huì)變成從數(shù)據(jù)庫(kù),因此也需要設(shè)置主數(shù)據(jù)庫(kù)密碼蚯斯。

3薄风、配置Sentinel.config

  • 創(chuàng)建配置文件
    創(chuàng)建一個(gè)sentinel目錄,新建sentinel.conf文件(Redis提供了該文件的模版)拍嵌。配置文件內(nèi)容如下:
##sentinel實(shí)例之間的通訊端口

daemonize yes

port 27000

#redis-master

sentinel monitor redis-master 192.168.1.51 7000 2

sentinel down-after-milliseconds redis-master 5000

sentinel failover-timeout redis-master 900000

sentinel parallel-syncs redis-master 2

sentinel auth-pass redis-master 123456

logfile "/data/bd/redis/sentinel/sentinel.log"
  • 配置項(xiàng)說(shuō)明:

1)daemonize yes

– 以后臺(tái)進(jìn)程模式運(yùn)行

2)port 27000

– 哨兵的端口號(hào)遭赂,該端口號(hào)默認(rèn)為26379。

3)logfile"/data/bd/redis/sentinel/sentinel.log"

– log文件所在地

4)sentinel monitor redis-master 192.168.1.517000 2

– redis-master是主數(shù)據(jù)的別名撰茎,考慮到故障恢復(fù)后主數(shù)據(jù)庫(kù)的地址和端口號(hào)會(huì)發(fā)生變化嵌牺,哨兵提供了命令可以通過(guò)別名獲取主數(shù)據(jù)庫(kù)的地址和端口號(hào)打洼。

– 192.168.1.51 7000為初次配置時(shí)主數(shù)據(jù)庫(kù)的地址和端口號(hào)龄糊,當(dāng)主數(shù)據(jù)庫(kù)發(fā)生變化時(shí),哨兵會(huì)自動(dòng)更新這個(gè)配置募疮,不需要我們?nèi)リP(guān)心炫惩。

–2,該參數(shù)用來(lái)表示執(zhí)行故障恢復(fù)操作前至少需要幾個(gè)哨兵節(jié)點(diǎn)同意阿浓,一般設(shè)置為N/2+1(N為哨兵總數(shù))他嚷。

5)sentinel down-after-milliseconds redis-master 1000

– 如果master在多少秒內(nèi)無(wú)反應(yīng)哨兵會(huì)開始進(jìn)行master-slave間的切換,使用“選舉”機(jī)制

6)sentinel failover-timeout redis-master 5000

– 如果在多少秒內(nèi)沒(méi)有把宕掉的那臺(tái)master恢復(fù)芭毙,那哨兵認(rèn)為這是一次真正的宕機(jī)筋蓖,而排除該宕掉的master作為節(jié)點(diǎn)選取時(shí)可用的node然后等待一定的設(shè)定值的毫秒數(shù)后再來(lái)探測(cè)該節(jié)點(diǎn)是否恢復(fù),如果恢復(fù)就把它作為一臺(tái)slave加入哨兵監(jiān)測(cè)節(jié)點(diǎn)群并在下一次切換時(shí)為他分配一個(gè)“選取號(hào)”退敦。

4粘咖、Sentinel運(yùn)行

  • 啟動(dòng)Redis和Sentinel
    配置完Redis和Sentinel之后,按順序啟動(dòng)各個(gè)角色侈百。啟動(dòng)順序如下:
    Master->Slave->Sentinel,要確保按照這個(gè)順序依次啟動(dòng)瓮下。
    Sentinel的啟動(dòng)命令和Redis類似,終端輸入:
redis-sentinel /data/bd/redis/sentinel/sentinel.conf

啟動(dòng)成功后可以通過(guò)redis客戶端工具查看當(dāng)前Sentinel的信息钝域,終端輸入:

redis-cli -p 27000-h 192.168.1.51 INFO Sentinel
# Sentinel

sentinel_masters:1

sentinel_tilt:0

sentinel_running_scripts:0

sentinel_scripts_queue_length:0

master0:name=redis-master,status=ok,address=192.168.1.51:7000,slaves=2,sentinels=3
  • 查看sentinel日志
    日志路徑在配置文件中設(shè)置讽坏,終端輸入:
tail -f/data/bd/redis/sentinel/sentinel.log
3273:X 08 Apr 10:44:14.733 # Sentinel runid is 725b3bc06f18e8db913a44bbbdbc23a3be54c4d1

3273:X 08 Apr 10:44:14.733 # +monitor master redis-master 192.168.1.51 7000 quorum 2

3273:X 08 Apr 10:44:14.735 * +slave slave 192.168.1.52:7000 192.168.1.52 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:44:14.744 * +slave slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:48:12.733 * +sentinel sentinel 192.168.1.52:27000 192.168.1.52:27000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:48:20.533 * +sentinel sentinel 192.168.1.53:27000 192.168.1.53:27000 @ redis-master 192.168.1.51 7000

+slave和+sentinel分別代表成功發(fā)現(xiàn)了從數(shù)據(jù)庫(kù)和其他Sentinel。

  • 查看sentinel.conf
    重新打開sentinel.conf文件例证,發(fā)現(xiàn)sentinel自動(dòng)生成了一些信息路呜,記錄了監(jiān)控過(guò)程中的狀態(tài)變化。
##sentinel實(shí)例之間的通訊端口

daemonize yes

port 27000

#redis-master

sentinel monitor redis-master 192.168.1.51 7000 2

sentinel down-after-milliseconds redis-master 5000

sentinel failover-timeout redis-master 900000

sentinel parallel-syncs redis-master 2

sentinel auth-pass redis-master 123456

logfile "/data/bd/redis/sentinel/sentinel.log"

# Generated by CONFIG REWRITE

dir "/soft/sentinel"

sentinel config-epoch redis-master 0

sentinel leader-epoch redis-master 0

sentinel known-slave redis-master 192.168.1.52 7000

sentinel known-slave redis-master 192.168.1.53 7000

sentinel known-sentinel redis-master 192.168.1.52 27000 ef356da8dadb6a16268d25611942ecf001d5cb2e

sentinel known-sentinel redis-master 192.168.1.53 27000 188fa69f695fd17639ce1ee38592e894d8a14331

sentinel current-epoch 0                         

三、Sentinel驗(yàn)證

按照之前的步驟我們已經(jīng)配置好了3臺(tái)Redisnode和Sentinel集群胀葱,Redis主數(shù)據(jù)庫(kù)為192.168.1.51:7000党涕。

1、模擬主數(shù)據(jù)庫(kù)故障

這里直接關(guān)閉主數(shù)據(jù)庫(kù)巡社,終端輸入:

redis-cli -p 7000 shutdown

經(jīng)過(guò)一段時(shí)間后膛堤,我們可以看到sentinel.log文件中增加了以下內(nèi)容:

3273:X 08 Apr 10:58:08.330 # +sdown master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:08.385 # +odown master redis-master 192.168.1.73 7000 #quorum 2/2

3273:X 08 Apr 10:58:08.385 # +new-epoch 1

3273:X 08 Apr 10:58:08.385 # +try-failover master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:08.388 # +vote-for-leader 725b3bc06f18e8db913a44bbbdbc23a3be54c4d1 1

3273:X 08 Apr 10:58:08.392 # 192.168.1.52:27000 voted for 725b3bc06f18e8db913a44bbbdbc23a3be54c4d1 1

3273:X 08 Apr 10:58:08.393 # 192.168.1.53:27000 voted for 725b3bc06f18e8db913a44bbbdbc23a3be54c4d1 1

3273:X 08 Apr 10:58:08.489 # +elected-leader master redis-master 192.168.1.51 7001

3273:X 08 Apr 10:58:08.489 # +failover-state-select-slave master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:08.580 # +selected-slave slave 192.168.1.52:7000 192.168.1.52 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:08.580 * +failover-state-send-slaveof-noone slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:08.633 * +failover-state-wait-promotion slave 192.168.1.52:7000 192.168.1.52 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:09.561 # +promoted-slave slave 192.168.1.52:7000 192.168.1.52 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:09.561 # +failover-state-reconf-slaves master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:09.612 * +slave-reconf-sent slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:10.517 # -odown master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:10.576 * +slave-reconf-inprog slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:10.576 * +slave-reconf-done slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:10.643 # +failover-end master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:10.643 # +switch-master redis-master 192.168.1.51 7000 192.168.1.52 7000

3273:X 08 Apr 10:58:10.643 * +slave slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.52 7000

3273:X 08 Apr 10:58:10.643 * +slave slave 192.168.1.51:7000 192.168.1.51 7000 @ redis-master 192.168.1.52 7000

3273:X 08 Apr 10:58:15.654 # +sdown slave 192.168.1.51:7000 192.168.1.51 7000 @ redis-master 192.168.1.52 7000

+sdown 表示哨兵主觀認(rèn)為數(shù)據(jù)庫(kù)下線
+odown 表示哨兵客觀認(rèn)為數(shù)據(jù)庫(kù)下線
+try-failover 表示哨兵開始進(jìn)行故障恢復(fù)
+failover-end 表示哨兵完成故障修復(fù),其中包括了領(lǐng)頭哨兵的選舉晌该、備選從數(shù)據(jù)庫(kù)的選擇等等較為復(fù)雜的過(guò)程
+switch-master表示主數(shù)據(jù)庫(kù)從51服務(wù)器遷移到52服務(wù)器
+slave列出了新的主數(shù)據(jù)庫(kù)的2個(gè)從數(shù)據(jù)庫(kù)肥荔,而哨兵并沒(méi)有徹底清除51服務(wù)器的實(shí)力信息,這是因?yàn)橥V沟膶?shí)例有可能會(huì)在將來(lái)恢復(fù)朝群,哨兵會(huì)讓其重新加入進(jìn)來(lái)

2燕耿、恢復(fù)故障數(shù)據(jù)庫(kù)

重新啟動(dòng)192.168.1.51上的Redis數(shù)據(jù)庫(kù),查看sentinel.log文件姜胖,日志中增加了以下的內(nèi)容:

3273:X 08 Apr 11:19:44.847 # -sdown slave 192.168.1.51:7000 192.168.1.51 7000 @ redis-master 192.168.1.52 7000

-sdown 哨兵將下線的Redis實(shí)例重新加入誉帅,并且作為新的主數(shù)據(jù)庫(kù)的從數(shù)據(jù)庫(kù)存在

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市右莱,隨后出現(xiàn)的幾起案子蚜锨,更是在濱河造成了極大的恐慌,老刑警劉巖慢蜓,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亚再,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡晨抡,警方通過(guò)查閱死者的電腦和手機(jī)氛悬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)耘柱,“玉大人如捅,你說(shuō)我怎么就攤上這事〉骷澹” “怎么了镜遣?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)汛蝙。 經(jīng)常有香客問(wèn)我烈涮,道長(zhǎng),這世上最難降的妖魔是什么窖剑? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任坚洽,我火速辦了婚禮,結(jié)果婚禮上西土,老公的妹妹穿的比我還像新娘讶舰。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布跳昼。 她就那樣靜靜地躺著般甲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹅颊。 梳的紋絲不亂的頭發(fā)上敷存,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天,我揣著相機(jī)與錄音堪伍,去河邊找鬼锚烦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛帝雇,可吹牛的內(nèi)容都是我干的涮俄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼尸闸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼彻亲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起吮廉,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苞尝,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后茧痕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體野来,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年踪旷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豁辉。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡令野,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出徽级,到底是詐尸還是另有隱情气破,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布餐抢,位于F島的核電站现使,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏旷痕。R本人自食惡果不足惜碳锈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望欺抗。 院中可真熱鬧售碳,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至艺智,卻和暖如春倘要,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背十拣。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工碗誉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人父晶。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓哮缺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親甲喝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尝苇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

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

  • 1.1 資料 ,最好的入門小冊(cè)子埠胖,可以先于一切文檔之前看糠溜,免費(fèi)。 作者Antirez的博客直撤,Antirez維護(hù)的R...
    JefferyLcm閱讀 17,050評(píng)論 1 51
  • 概述 Redis-Sentinel是Redis官方推薦的高可用性(HA)解決方案非竿,當(dāng)用Redis做Master-s...
    神秘者007閱讀 751評(píng)論 0 3
  • 在朝向你的每一片海里 我?guī)е邢<狡?看太陽(yáng)每天升落 做個(gè)客死他海的人 就是個(gè)詩(shī)意的抉擇 我不想回去 身體充斥...
    鹿春丶閱讀 264評(píng)論 2 3
  • 社會(huì)心理學(xué)家將他們的想法與發(fā)現(xiàn)構(gòu)建成理論。一個(gè)好理論將會(huì)從一長(zhǎng)串事實(shí)中提煉出許多簡(jiǎn)短的預(yù)測(cè)原則谋竖。我們可以利用這些例...
    Johnny_Su閱讀 889評(píng)論 0 0
  • 一路走來(lái)從牙牙學(xué)語(yǔ)的自己到只會(huì)加減法的小學(xué)迷再到藍(lán)色初中校服的我們?cè)俚胶髞?lái)的發(fā)育成熟的高中學(xué)姐再到現(xiàn)在博覽...
    暖心99閱讀 93評(píng)論 0 0