日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

哨兵模式是一種特殊的模式,首先redis提供了哨兵的命令,哨兵是一個獨立的進程,作為進程,它會獨立運行。其原理是哨兵通過發送命令,等待Redis服務器響應,從而監控運行的多個Redis實例。

一、介紹

主從切換技術的方法是:當主服務器宕機后,需要手動把一臺從服務器切換為主服務器,這就需要人工干預,費事費力,還會造成一段時間內服務不可用。這不是一種推薦的方式,更多時候,我們優先考慮哨兵模式。

 

在 深入學習Redis(3):主從復制 中曾提到,Redis主從復制的作用有數據熱備、負載均衡、故障恢復等;但主從復制存在的一個問題是故障恢復無法自動化。本文將要介紹的哨兵,它基于Redis主從復制,主要作用便是解決主節點故障恢復的自動化問題,進一步提高系統的高可用性。

文章主要內容如下:首先介紹哨兵的作用和架構;然后講述哨兵系統的部署方法,以及通過客戶端訪問哨兵系統的方法;然后簡要說明哨兵實現的基本原理;最后給出關于哨兵實踐的一些建議。文章內容基于Redis 3.0版本。

二、哨兵模式概述

哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個獨立的進程,作為進程,它會獨立運行。其原理是哨兵通過發送命令,等待Redis服務器響應,從而監控運行的多個Redis實例。

Redis哨兵Redis哨兵

 

這里的哨兵有兩個作用

  • 通過發送命令,讓Redis服務器返回監控其運行狀態,包括主服務器和從服務器。
  • 當哨兵監測到master宕機,會自動將slave切換成master,然后通過發布訂閱模式通知其他的從服務器,修改配置文件,讓它們切換主機。

然而一個哨兵進程對Redis服務器進行監控,可能會出現問題,為此,我們可以使用多個哨兵進行監控。各個哨兵之間還會進行監控,這樣就形成了多哨兵模式。

用文字描述一下故障切換(fAIlover)的過程。假設主服務器宕機,哨兵1先檢測到這個結果,系統并不會馬上進行failover過程,僅僅是哨兵1主觀的認為主服務器不可用,這個現象成為主觀下線。當后面的哨兵也檢測到主服務器不可用,并且數量達到一定值時,那么哨兵之間就會進行一次投票,投票的結果由一個哨兵發起,進行failover操作。切換成功后,就會通過發布訂閱模式,讓各個哨兵把自己監控的從服務器實現切換主機,這個過程稱為客觀下線。這樣對于客戶端而言,一切都是透明的。

三、部署

這一部分將部署一個簡單的哨兵系統,包含1個主節點、2個從節點和3個哨兵節點。方便起見:所有這些節點都部署在一臺機器上(局域網IP:192.168.92.128),使用端口號區分;節點的配置盡可能簡化。

1.  部署主從節點

哨兵系統中的主從節點,與普通的主從節點配置是一樣的,并不需要做任何額外配置。下面分別是主節點(port=6379)和2個從節點(port=6380/6381)的配置文件,配置都比較簡單,不再詳述。

#redis-6379.conf
port 6379
daemonize yes
logfile "6379.log"
dbfilename "dump-6379.rdb"
 
#redis-6380.conf
port 6380
daemonize yes
logfile "6380.log"
dbfilename "dump-6380.rdb"
slaveof 192.168.92.128 6379
 
#redis-6381.conf
port 6381
daemonize yes
logfile "6381.log"
dbfilename "dump-6381.rdb"
slaveof 192.168.92.128 6379

 

配置完成后,依次啟動主節點和從節點:

redis-server redis-6379.conf
redis-server redis-6380.conf
redis-server redis-6381.conf

 

節點啟動后,連接主節點查看主從狀態是否正常,如下圖所示:

圖片圖片

2.  部署哨兵節點

哨兵節點本質上是特殊的Redis節點。

3個哨兵節點的配置幾乎是完全一樣的,主要區別在于端口號的不同(26379/26380/26381),下面以26379節點為例介紹節點的配置和啟動方式;配置部分盡量簡化,更多配置會在后面介紹。

#sentinel-26379.conf
port 26379
daemonize yes
logfile "26379.log"
sentinel monitor mymaster 192.168.92.128 6379 2

 

其中,sentinel monitor mymaster 192.168.92.128 6379 2 配置的含義是:該哨兵節點監控192.168.92.128:6379這個主節點,該主節點的名稱是mymaster,最后的2的含義與主節點的故障判定有關:至少需要2個哨兵節點同意,才能判定主節點故障并進行故障轉移。

哨兵節點的啟動有兩種方式,二者作用是完全相同的:

redis-sentinel sentinel-26379.conf
redis-server sentinel-26379.conf --sentinel

 

按照上述方式配置和啟動之后,整個哨兵系統就啟動完畢了。可以通過redis-cli連接哨兵節點進行驗證,如下圖所示:可以看出26379哨兵節點已經在監控mymaster主節點(即192.168.92.128:6379),并發現了其2個從節點和另外2個哨兵節點。

圖片圖片

此時如果查看哨兵節點的配置文件,會發現一些變化,以26379為例:

圖片圖片

其中,dir只是顯式聲明了數據和日志所在的目錄(在哨兵語境下只有日志);known-slave和known-sentinel顯示哨兵已經發現了從節點和其他哨兵;帶有epoch的參數與配置紀元有關(配置紀元是一個從0開始的計數器,每進行一次領導者哨兵選舉,都會+1;領導者哨兵選舉是故障轉移階段的一個操作,在后文原理部分會介紹)。

3.  演示故障轉移

哨兵的4個作用中,配置提供者和通知需要客戶端的配合,本文將在下一章介紹客戶端訪問哨兵系統的方法時詳細介紹。這一小節將演示當主節點發生故障時,哨兵的監控和自動故障轉移功能。

(1)首先,使用kill命令殺掉主節點:

圖片圖片

(2)如果此時立即在哨兵節點中使用info Sentinel命令查看,會發現主節點還沒有切換過來,因為哨兵發現主節點故障并轉移,需要一段時間。

圖片圖片

(3)一段時間以后,再次在哨兵節點中執行info Sentinel查看,發現主節點已經切換成6380節點。

圖片圖片

但是同時可以發現,哨兵節點認為新的主節點仍然有2個從節點,這是因為哨兵在將6380切換成主節點的同時,將6379節點置為其從節點;雖然6379從節點已經掛掉,但是由于哨兵并不會對從節點進行客觀下線(其含義將在原理部分介紹),因此認為該從節點一直存在。當6379節點重新啟動后,會自動變成6380節點的從節點。下面驗證一下。

(4)重啟6379節點:可以看到6379節點成為了6380節點的從節點。

圖片圖片

(5)在故障轉移階段,哨兵和主從節點的配置文件都會被改寫。

對于主從節點,主要是slaveof配置的變化:新的主節點沒有了slaveof配置,其從節點則slaveof新的主節點。

對于哨兵節點,除了主從節點信息的變化,紀元(epoch)也會變化,下圖中可以看到紀元相關的參數都+1了。

圖片圖片

4.  總結

哨兵系統的搭建過程,有幾點需要注意:

(1)哨兵系統中的主從節點,與普通的主從節點并沒有什么區別,故障發現和轉移是由哨兵來控制和完成的。

(2)哨兵節點本質上是redis節點。

(3)每個哨兵節點,只需要配置監控主節點,便可以自動發現其他的哨兵節點和從節點。

(4)在哨兵節點啟動和故障轉移階段,各個節點的配置文件會被重寫(config rewrite)。

(5)本章的例子中,一個哨兵只監控了一個主節點;實際上,一個哨兵可以監控多個主節點,通過配置多條sentinel monitor即可實現。

分享到:
標簽:Redis
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定