久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Redis Sentinel哨兵模式的原理及配置

141次閱讀
沒有評論

共計 2986 個字符,預計需要花費 8 分鐘才能閱讀完成。

這篇文章主要介紹“Redis Sentinel 哨兵模式的原理及配置”,在日常操作中,相信很多人在 Redis Sentinel 哨兵模式的原理及配置問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Redis Sentinel 哨兵模式的原理及配置”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

一. 安裝配置
在 1 個 master 1 個 slave 的環境中加一個 sentinel,
進入 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

參數解釋:
sentinel monitor mymaster 127.0.0.1 6379 1
指示 Sentinel 去監視一個被命名為 mymaster 的 master,可指定為任何名字
Master  IP 為 127.0.0.1,端口號為 6379,

這個 master 判斷為失效至少需要 1 個 Sentinel 同意(只要同意 Sentinel 的數量不達標,自動故障遷移就不會執行)
注意,無論你設置多少個 Sentinel 同意才能判斷一個服務器失效,一個 Sentinel 都需要獲得系統中多數(majority)Sentinel 的支持,才能發起一次自動故障遷移

sentinel down-after-milliseconds mymaster 30000
down-after-milliseconds 指定了 Sentinel 認為 master 已經斷線所需的毫秒數

sentinel parallel-syncs mymaster 1
parallel-syncs 指定了在執行故障轉移時,最多可以有多少個 slave 同時對新的 master 進行同步,這個數字越小,完成故障轉移所需的時間就越長

sentinel failover-timeout mymaster 180000
failover-timeout 指定故障切換允許的毫秒數,超過這個時間,就認為故障切換失敗,默認為 3 分鐘

啟動 sentinel
# redis-sentinel /usr/local/redis/etc/sentinel.conf

查看狀態
# 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 相關命令
? INFO sentinel 的基本狀態信息
? PING:返回 PONG 
? SENTINEL masters:列出所有被監視的 master,以及這些 master 的當前狀態
? SENTINEL slaves master name:列出給定 master 的所有 slave 服務器,以及這些 slave 的當前狀態
? SENTINEL get-master-addr-by-name master name:返回給定名字的 master 的 IP 地址和端口號。如果這個 master 正在執行故障轉移操作,或者針對這個 master 的故障轉移操作已經完成,那么這個命令返回新的 master 的 IP 地址和端口號。
? SENTINEL reset pattern:重置所有名字和給定模式 pattern 相匹配的 master。pattern 參數是一個 Glob 風格的模式。重置操作清除 master 目前的所有狀態,包括正在執行中的故障轉移,并移除目前已經發現和關聯的,master 的所有 slave 和 Sentinel

? SENTINEL failover master name:當 master 失效時,在不詢問其他 Sentinel 意見的情況下,強制開始一次自動故障遷移(不過發起故障轉移的 Sentinel 會向其他 Sentinel 發送一個新的配置,其他 Sentinel 會根據這個配置進行相應的更新)。

二. 原理:
故障轉移時主要是解決兩個問題,一是選 Leader Sentinel,二是選新的 master

1. 選 Leader Sentinel 規則

Sentinel 自動故障遷移使用 Raft 算法來選舉領頭(Leader)Sentinel,從而確保在一個給定的紀元時期(epoch)里,只有一個 Leader 產生。
表示在同一個時期,不會有兩個 Sentinel 同時被選中為 Leader,并且各個 Sentinel 在同一個時期中只會對一個 Leader 進行投票。

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

 

2. 選新 master 規則
1 在失效主服務器屬下的從服務器當中,那些被標記為主觀下線、已斷線、或者最后一次回復 PING 命令的時間大于五秒鐘的從服務器都會被淘汰。
2 在失效主服務器屬下的從服務器當中,那些與失效主服務器連接斷開的時長超過 down-after 選項指定的時長十倍的從服務器都會被淘汰。
3 在經歷了以上兩輪淘汰之后剩下來的從服務器中,我們選出復制偏移量(replication offset)最大的那個 slave 作為新的 master 服務器;如果復制偏移量不可用,或者 slave 服務器的復制偏移量相同,那么帶有最小運行 ID 的那個從服務器成為新的 master。

一次故障轉移步驟:
1 發現 master 已進入客觀下線狀態。
2 對當前紀元時期 (epoch) 進行自增,并嘗試在這個紀元時期中當選。
3 如果當選失敗,那么在設定的故障遷移超時時間的兩倍之后,重新嘗試當選。如果當選成功,那么執行以下步驟
4 選出一個 slave,并將它升級為 master。
5 向被選中的 slave 發送 SLAVEOF NO ONE 命令,讓它轉變為 master。
通過發布與訂閱功能,將更新后的配置傳播給所有其他 Sentinel,其他 Sentinel 對它們自己的配置進行更新。
6 向已下線 master 的其它 slave 發送 SLAVEOF host port 命令,讓它們去復制新的 master。
7 當所有 slave 都已經開始復制新的 master 時,領頭 Sentinel 終止這次故障遷移操作。

到此,關于“Redis Sentinel 哨兵模式的原理及配置”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計2986字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 旬阳县| 武定县| 景泰县| 康定县| 兴宁市| 修水县| 河间市| 札达县| 建湖县| 盈江县| 冕宁县| 美姑县| 灯塔市| 金沙县| 墨江| 四平市| 定陶县| 池州市| 容城县| 永靖县| 蓬莱市| 都昌县| 防城港市| 同心县| 鹿邑县| 康马县| 南充市| 岗巴县| 交城县| 祁阳县| 永兴县| 昌乐县| 三江| 黄浦区| 东丽区| 特克斯县| 石泉县| 漳平市| 禹城市| 鄱阳县| 黑龙江省|