RedisSentinel哨兵模式的原理及配置-創(chuàng)新互聯(lián)

這篇文章主要介紹“Redis Sentinel哨兵模式的原理及配置”,在日常操作中,相信很多人在Redis Sentinel哨兵模式的原理及配置問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Redis Sentinel哨兵模式的原理及配置”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)建站專注于潮南企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),成都商城網(wǎng)站開(kāi)發(fā)。潮南網(wǎng)站建設(shè)公司,為潮南等地區(qū)提供建站服務(wù)。全流程按需規(guī)劃網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)


一.安裝配置
在1個(gè)master 1個(gè)slave 的環(huán)境中加一個(gè)sentinel,
進(jìn)入redis源碼安裝目錄copy sentinel.conf文件
# cd /u01/packages/redis-3.0.6
# cp sentinel.conf   /usr/local/redis/etc/
# vi /usr/local/redis/etc/sentinel.conf
daemonize yes
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

參數(shù)解釋:
sentinel monitor mymaster 127.0.0.1 6379 1
指示 Sentinel 去監(jiān)視一個(gè)被命名為 mymaster 的master,可指定為任何名字
Master  IP為127.0.0.1 , 端口號(hào)為 6379 ,
這個(gè)master判斷為失效至少需要 1 個(gè) Sentinel 同意 (只要同意 Sentinel 的數(shù)量不達(dá)標(biāo),自動(dòng)故障遷移就不會(huì)執(zhí)行)
注意,無(wú)論你設(shè)置多少個(gè) Sentinel 同意才能判斷一個(gè)服務(wù)器失效, 一個(gè) Sentinel 都需要獲得系統(tǒng)中多數(shù)(majority) Sentinel 的支持, 才能發(fā)起一次自動(dòng)故障遷移

sentinel down-after-milliseconds mymaster 30000
down-after-milliseconds 指定了 Sentinel 認(rèn)為master已經(jīng)斷線所需的毫秒數(shù)

sentinel parallel-syncs mymaster 1
parallel-syncs 指定了在執(zhí)行故障轉(zhuǎn)移時(shí), 最多可以有多少個(gè)slave同時(shí)對(duì)新的master進(jìn)行同步, 這個(gè)數(shù)字越小, 完成故障轉(zhuǎn)移所需的時(shí)間就越長(zhǎng)

sentinel failover-timeout mymaster 180000
failover-timeout 指定故障切換允許的毫秒數(shù),超過(guò)這個(gè)時(shí)間,就認(rèn)為故障切換失敗,默認(rèn)為3分鐘

啟動(dòng)sentinel
# redis-sentinel /usr/local/redis/etc/sentinel.conf

查看狀態(tài)
# redis-cli -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=1,sentinels=1

至此,配置sentinel工作完成

Sentinel 相關(guān)命令
? INFO sentinel的基本狀態(tài)信息
? PING :返回 PONG 
? SENTINEL masters :列出所有被監(jiān)視的master,以及這些master的當(dāng)前狀態(tài)
? SENTINEL slaves <master name> :列出給定master的所有slave服務(wù)器,以及這些slave的當(dāng)前狀態(tài)
? SENTINEL get-master-addr-by-name <master name> : 返回給定名字的master的 IP 地址和端口號(hào)。 如果這個(gè)master正在執(zhí)行故障轉(zhuǎn)移操作, 或者針對(duì)這個(gè)master的故障轉(zhuǎn)移操作已經(jīng)完成, 那么這個(gè)命令返回新的master的 IP 地址和端口號(hào)。
? SENTINEL reset <pattern> : 重置所有名字和給定模式 pattern 相匹配的master。 pattern 參數(shù)是一個(gè) Glob 風(fēng)格的模式。 重置操作清除master目前的所有狀態(tài), 包括正在執(zhí)行中的故障轉(zhuǎn)移, 并移除目前已經(jīng)發(fā)現(xiàn)和關(guān)聯(lián)的,master的所有slave和 Sentinel
? SENTINEL failover <master name> : 當(dāng)master失效時(shí), 在不詢問(wèn)其他 Sentinel 意見(jiàn)的情況下, 強(qiáng)制開(kāi)始一次自動(dòng)故障遷移 (不過(guò)發(fā)起故障轉(zhuǎn)移的 Sentinel 會(huì)向其他 Sentinel 發(fā)送一個(gè)新的配置,其他 Sentinel 會(huì)根據(jù)這個(gè)配置進(jìn)行相應(yīng)的更新)。

二. 原理:
故障轉(zhuǎn)移時(shí)主要是解決兩個(gè)問(wèn)題,一是選Leader Sentinel,二是選新的master

1.選Leader Sentinel規(guī)則

Sentinel 自動(dòng)故障遷移使用 Raft 算法來(lái)選舉領(lǐng)頭(Leader)Sentinel , 從而確保在一個(gè)給定的紀(jì)元時(shí)期(epoch)里, 只有一個(gè)Leader產(chǎn)生。
表示在同一個(gè)時(shí)期, 不會(huì)有兩個(gè) Sentinel 同時(shí)被選中為L(zhǎng)eader, 并且各個(gè) Sentinel 在同一個(gè)時(shí)期中只會(huì)對(duì)一個(gè)Leader進(jìn)行投票。

注:Raft算法主要思想是同一期Term(Epoch)投票中少數(shù)服從多數(shù)原則達(dá)成一致,選出Leader
具體算法這里不過(guò)多解釋,詳細(xì)可參考文章: https://www.jianshu.com/p/8e4bbe7e276c

 

2.選新master規(guī)則
1> 在失效主服務(wù)器屬下的從服務(wù)器當(dāng)中, 那些被標(biāo)記為主觀下線、已斷線、或者最后一次回復(fù) PING 命令的時(shí)間大于五秒鐘的從服務(wù)器都會(huì)被淘汰。
2> 在失效主服務(wù)器屬下的從服務(wù)器當(dāng)中, 那些與失效主服務(wù)器連接斷開(kāi)的時(shí)長(zhǎng)超過(guò) down-after 選項(xiàng)指定的時(shí)長(zhǎng)十倍的從服務(wù)器都會(huì)被淘汰。
3> 在經(jīng)歷了以上兩輪淘汰之后剩下來(lái)的從服務(wù)器中, 我們選出復(fù)制偏移量(replication offset)大的那個(gè)slave作為新的master服務(wù)器; 如果復(fù)制偏移量不可用, 或者slave服務(wù)器的復(fù)制偏移量相同, 那么帶有最小運(yùn)行 ID 的那個(gè)從服務(wù)器成為新的master。

一次故障轉(zhuǎn)移步驟:
1>發(fā)現(xiàn)master已進(jìn)入客觀下線狀態(tài)。
2>對(duì)當(dāng)前紀(jì)元時(shí)期(epoch)進(jìn)行自增, 并嘗試在這個(gè)紀(jì)元時(shí)期中當(dāng)選。
3>如果當(dāng)選失敗, 那么在設(shè)定的故障遷移超時(shí)時(shí)間的兩倍之后, 重新嘗試當(dāng)選。 如果當(dāng)選成功, 那么執(zhí)行以下步驟
4>選出一個(gè)slave,并將它升級(jí)為master。
5>向被選中的slave發(fā)送 SLAVEOF NO ONE 命令,讓它轉(zhuǎn)變?yōu)閙aster。
通過(guò)發(fā)布與訂閱功能, 將更新后的配置傳播給所有其他 Sentinel , 其他 Sentinel 對(duì)它們自己的配置進(jìn)行更新。
6>向已下線master的其它slave發(fā)送 SLAVEOF host port 命令, 讓它們?nèi)?fù)制新的master。
7>當(dāng)所有slave都已經(jīng)開(kāi)始復(fù)制新的master時(shí), 領(lǐng)頭 Sentinel 終止這次故障遷移操作。

到此,關(guān)于“Redis Sentinel哨兵模式的原理及配置”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

網(wǎng)站標(biāo)題:RedisSentinel哨兵模式的原理及配置-創(chuàng)新互聯(lián)
文章源于:http://muchs.cn/article40/dhspeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、小程序開(kāi)發(fā)、電子商務(wù)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)