一篇文章帶你讀懂Redis的哨兵模式
導讀 | redis的哨兵模式,就是用於在一主多從的叢集環境下,如果主伺服器當機了,它會自動的將從伺服器中的一臺設為新的master,並且將其餘的slave的配置檔案自動修改,這樣就切換出一套新的主從服務,不需要人工干預,且不會影響服務的使用。 |
在生產環境中,為了保證redis服務的高可用,通常都會搭建主從。我們知道主從的原理是從伺服器獲取rdb檔案的全量複製+寫操作的增量複製來共同保證資料的一致性,所以在配置從伺服器的時候,一個很重要的配置項就是標明主伺服器的ip和埠號,總得知道哪一臺伺服器是我的主子不是,像下圖中的replicaof配置。
通俗易懂講解redis的哨兵模式
對於圖中的部署方案,如果主伺服器當機了,我們只能進行手動干預,選擇一臺從伺服器重新作為主伺服器,然後將另外的兩臺從伺服器的配置檔案修改一下,將replicaof的配置重新改成新的主伺服器地址。人工干預費時費力不說,更重要的是,這樣會造成一段時間內服務是不可用的。在這種場景下,哨兵模式應運而生了。
redis的哨兵模式,就是用於在一主多從的叢集環境下,如果主伺服器當機了,它會自動的將從伺服器中的一臺設為新的master,並且將其餘的slave的配置檔案自動修改,這樣就切換出一套新的主從服務,不需要人工干預,且不會影響服務的使用。
那麼它具體是怎麼工作的呢?首先看下面這張圖:
通俗易懂講解redis的哨兵模式
哨兵模式結構圖
首先哨兵是一個獨立於主從服務之外的服務,它也是一個叢集服務。哨兵例項會不斷給主伺服器傳送Ping ,主伺服器在收到 後,返回一個有效回覆,這樣哨兵例項認為伺服器是正常的。
假設主伺服器當機,哨兵1在指定時間內(可配置)沒有收到主伺服器的有效回覆,那麼這個哨兵會把伺服器標記為下線,叫做主觀下線SDOWN。
注意此時只有一個哨兵標記為下線,實際上哨兵沒有收到回覆原因可能有很多,可能是伺服器確實掛了,也有可能是伺服器並沒有掛,由於網路原因沒有收到回覆,總之,一個哨兵沒有收到回覆並不能證明主伺服器當機。
哨兵2也傳送了Ping命令,同樣也沒有收到回覆,哨兵2也會將主伺服器標記為SDOWN。這個時候,3個哨兵中有2個哨兵上報了SDOWN,哨兵們在彼此交流之後,認為已經有足夠數量的例項證明該服務已經不可用,因此,哨兵例項會將該伺服器標記為客觀下線ODOWN。
這裡的足夠數量是可配置的,一般是哨兵個數的一半加1,比如3個哨兵則就設定為2。
當哨兵例項將服務標記為客觀下線時,會進行一次選舉。在剩下的從伺服器例項中,選出一個作為主節點,並同時修改其餘從伺服器的配置檔案,將新的主節點作為資料同步的來源,然後重新啟動服務,完成切換。
至此,一個完整的哨兵自動進行故障轉移的過程就完成了。
如果我們的環境由主從換成了主從+哨兵,修改配置也比較簡單,先註釋掉原來的host和port的配置,替換成哨兵的配置,如下圖:
通俗易懂講解redis的哨兵模式
需要注意的是,這裡nodes裡配置的是哨兵叢集的IP+埠,而不是主從節點,一定不要配錯了。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2906618/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一文讀懂Redis的四種模式,單機、主從、哨兵、叢集Redis模式
- Redis哨兵模式Redis模式
- 一篇文章帶你瞭解設計模式——建立者模式設計模式
- 一篇文章帶你瞭解設計模式——結構型模式設計模式
- Redis 哨兵模式搭建Redis模式
- redis哨兵模式搭建Redis模式
- 【Redis】Sentinel 哨兵模式Redis模式
- 老司機帶你玩轉面試(4):Redis 高可用之哨兵模式面試Redis模式
- 一篇帶你讀懂TCP之“滑動視窗”協議TCP協議
- 一篇文章帶你解讀redis分散式鎖的發展史和正確實現方式Redis分散式
- 一篇文章帶你搞定HashTable
- 一篇文章讀懂SDP、RTMP、HLS、SIP、MMS
- Redis Sentinel哨兵模式部署Redis模式
- redis-26.哨兵模式Redis模式
- Redis 哨兵模式的原理及其搭建Redis模式
- redis哨兵模式的原理及部署Redis模式
- 一篇文章帶你吃透 Docker 原理Docker
- 一篇文章帶你認識 SpringSecuritySpringGse
- 一篇文章帶你入門Zookeeper
- 一篇文章讀懂瀏覽器渲染機制瀏覽器
- 一篇文章讀懂阻塞,非阻塞,同步,非同步非同步
- Redis哨兵模式配置測試Redis模式
- redis自學(34)redisTemplate的哨兵模式Redis模式
- 一篇文章帶你快速入門createjsJS
- 一篇文章帶你弄懂Kerberos的設計思路ROS
- 一篇文章帶你徹底搞懂join的用法
- 一篇文章帶你搞懂 etcd 3.5 的核心特性
- Redis Sentinel哨兵模式原理及配置Redis模式
- redis哨兵模式搭建和測試Redis模式
- 一篇文章教你如何讀懂 JMeter聚合報告引數!JMeter
- 一篇文章帶你瞭解——Kotlin協程Kotlin
- 你對Redis持久化了解多少?一篇文章讓你明白Redis持久化Redis持久化
- Redis安裝之叢集-哨兵模式(sentinel)模式Redis模式
- 淺談:redis的主從複製 + 哨兵模式Redis模式
- 高可用之戰:Redis Sentinal(哨兵模式)Redis模式
- Redis docker 主從模式與哨兵sentinelRedisDocker模式
- 詳解Redis主從及哨兵模式Redis模式
- Redis哨兵模式高可用解決方案Redis模式