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

Redis哨兵模式是什么

165次閱讀
沒有評論

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

這篇文章主要講解了“Redis 哨兵模式是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“Redis 哨兵模式是什么”吧!

哨兵模式 1. 哨兵概念

在一主多從結構中,如果 master 宕機了,就需要從多個 slave 中選出一個作為新的 master,要想完成這樣的功能,就需要使用 Redis 的哨兵機制

哨兵 (sentinel) 是一個分布式系統,用于對主從結構中的每臺服務器進行監控,當出現故障時通過投票機制選擇新的 master 并將所有 slave 連接到新的 master,如下圖所示:

2. 哨兵作用

監控:監控 master 和 slave

不斷的檢查 master 和 slave 是否正常運行

master 存活檢測、master 與 slave 運行情況檢測

通知(提醒):當被監控的服務器出現問題時,向其他哨兵、Redis 服務器發送通知

故障轉移:斷開宕機的 master 與 slave 的連接,選取一個 slave 作為 master,將其他 slave 連接新的 master,并告知客戶端新的服務器地址

注意:哨兵也是一臺 redis 服務器,僅提供監控服務,不提供數據管理服務;通常哨兵的數量配置為單數 (方便投票)

3. 啟用哨兵

修改哨兵的配置文件 sentinel.conf,配置文件位于 Redis 目錄下,如下圖所示:

部分配置的含義如下圖所示:

啟動哨兵

redis-sentinel filename 
#filename 指的是配置文件名
#每個哨兵都要配置自己的配置文件 

配置并啟動哨兵之后,主服務器宕機之后,會自動的執行投票、主從切換等過程

4. 哨兵原理

哨兵在進行主從切換過程中經歷三個階段:

監控

通知

故障轉移

4.1 監控

用于同步各個節點的狀態信息,這些節點包括 master、slave、哨兵,也就是整個系統所有服務器的信息。

主要完成的功能:

獲取各個 sentinel 的狀態(是否在線):新添加的哨兵要與系統中已經存在的哨兵進行信息的交互

獲取 master 的狀態(通過 info 指令)

獲取的內容如下

1. master 屬性
  runid
  role:master
2.  各個 slave 在 master 中保存的基本信息 

獲取所有 slave 的狀態(根據 master 中 slave 的信息向所有的 slave 發送 info 指令)

獲取的內容如下

slave 屬性
 runid
 role:slave
 master_host、master_port
 offset

具體的內部工作原理如下所述:

哨兵 1 向 master 發送 info 指令之后,會建立一個 cmd 連接,創建的連接是用來發送命令的

創建好 cmd 連接之后,會在哨兵 1 這一端保存目前他所獲得的所有信息,另一端 master 也會保存自己持有的信息

然后哨兵 1 根據從 master 獲取的關于 salve 的信息,向 slave 發送 info 指令,得到 salve 的信息,豐富這一端所保存的信息

當新增一個新的哨兵 2 時,哨兵 2 向 master 發送 info 指令,建立 cmd 連接,根據 master 中的信息可以得到之前已經存在的哨兵 1,在自己這一端保存已經獲得的信息。然后判斷哨兵 1 是否在線,與哨兵 1 建立連接,二者互相交換各自的信息,并且雙方會持續的 ping,保證他們之間是暢通的

哨兵 2 根據從 master 獲得的 slave 信息,再從 slave 獲取信息,豐富自己所保存的信息

再新增一個哨兵 3 時,與之前的過程類似,最終三個哨兵建立起了關系網

關系網中三者會互相交換、發送信息,關系網中的這種工作模式稱為發布訂閱模式

4.2 通知

哨兵在通知階段要不斷的去獲取 master 與 slave 的信息,然后將獲得的信息在各個哨兵之間進行共享。

具體的流程如下:

哨兵通過建立的 cmd 連接,向 master、slave 發送 hello 指令,得到他們的信息,然后在關系網中共享:

4.3 故障轉移

斷開宕機的 master 與 slave 的連接,選取一個 slave 作為 master,將其他 slave 連接新的 master,并告知客戶端新的服務器地址。

具體的流程如下所述:

哨兵 1 始終得不到 master 的回應,主觀判斷 master 宕機,標記 sdown(僅有一個哨兵認為 master 宕機)

哨兵 1 在關系網中傳遞消息,向其他哨兵發送圖中左上角的消息

其他哨兵得到消息之后,全部向 master 發送消息,確定 master 是否宕機,他們也會將自己得到的結果發送給關系網中的其他哨兵,確定 master 宕機后,將標記改為 odown(所有哨兵探測之后,超過一半的哨兵認為 master 宕機)

當認定 master 宕機之后,此時需要選舉新的 master,由哪個哨兵完成這件事要通過哨兵之間的選舉決定,具體過程如下所述:

在選舉的時候每個哨兵手里都有一票,每個哨兵都會發出一個指令,在內網里邊告訴其他哨兵自己當選舉人,比如說 sentinel1 和 sentinel2 發出這個選舉指令,那么 sentinel3 接收到他們的申請之后,sentinel3 就會把自己的一票投給其中一方,根據到達的先后順序投票,獲得票的那一方就會多一張選舉票,按照這樣的一種形式,最終會有一個選舉結果,獲得票數最多的哨兵會被獲選

在這個過程中有可能會存在失敗的現象,比如第一輪沒有選舉成功,那就會接著進行第二輪第三輪直到完成選舉

當完成哨兵之間的選舉之后,接下來就要由選舉勝出的哨兵去 slave 中挑選一個,將其變成新的 master,具體的流程如下所述:

不在線的 OUT

響應慢的 OUT

與原 master 斷開時間久的 OUT

排除結束,開始進行選擇

優先級高的獲選

offset 較大的獲選(比較大說明同步原來 master 的數據最多)

若還沒有選出,則最后根據 runid 選出

哨兵在服務器列表中挑選備選 master 的原則:先排除,后選擇

選出新的 master 之后,哨兵發送指令給服務器:

向新的 master 發送 slaveof no one 指令

向其他 slave 發送 slaveof 新 masterIP 端口 指令

同時還要告訴其他的哨兵新 master 是誰

感謝各位的閱讀,以上就是“Redis 哨兵模式是什么”的內容了,經過本文的學習后,相信大家對 Redis 哨兵模式是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計2538字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 常山县| 贡嘎县| 民乐县| 克东县| 元江| 基隆市| 容城县| 吉林省| 宽城| 广安市| 绥芬河市| 望都县| 寿光市| 明星| 平顶山市| 吉木乃县| 西华县| 广灵县| 青浦区| 上蔡县| 洞口县| 墨脱县| 清原| 鹤庆县| 西宁市| 隆德县| 高淳县| 博野县| 酉阳| 清水县| 道孚县| 东兴市| 驻马店市| 宜黄县| 深泽县| 中宁县| 嘉兴市| 区。| 镇江市| 大新县| 土默特左旗|