最近談到Redis就會聽到哨兵模式,工做期間同事也分享過關於哨兵模式的知識,但因爲工做忙(給本身找個藉口)沒有沒認真看,如今惡補下,老樣子仍是分上篇應用,下篇看實現過程,下面咱們來看下哨兵究竟是啥?redis
哨兵模式(Sentinel)是Redis的高可用解決方案。由一個或多個Sentinel實例組成的Sentinel系統,能夠監控任意多個主服務器,以及這些主服務器下的全部從服務器,當某個主服務器下線時,自動將這個主服務器下的某個從服務器升級爲新的主服務器,代替下線的主服務器繼續處理命令。另外Sentinel系統還會繼續監視已下線的主服務器,當主服務器恢復時,它將被降級成該主服務器的從服務器。windows
在看哨兵模式的實現過程以前,咱們先看一下哨兵的用法:服務器
一、咱們將redis.windows.conf配置文件拷貝3份出來,改下名字便於識別:6379.conf,6380,conf,6381.conf。(這裏咱們模擬使用經典的三節點搭建)app
6379.conf咱們使用默認配置的6379端口,分別改下 6380,conf與6381.conf的端口號spa
上一章咱們使用slaveof <masterip> <masterport>命令設置從節點,如今咱們修改6380.conf與6391.conf,將複製命令配置在文件中,將6379做爲主節點:3d
二、下面咱們執行命令,啓動三個節點:code
redis-server.exe 6379.conf server
redis-server.exe 6380.conf blog
redis-server.exe 6381.confip
好了,如今三個節點都已經啓動,而且從控臺上看出,從節點已經在複製主節點的數據。
三、分別建立三個Sentinel配置文件:sentinel6379.conf ,sentinel6380.conf ,sentinel3381.conf
內容分別是:
sentinel6379.conf
port 26379 #當前Sentinel服務運行的端口 port 26379 # 哨兵監聽的主服務器 sentinel monitor mymaster 127.0.0.1 6379 2 #若是在3秒內無相應,則認爲主站點宕機 sentinel down-after-milliseconds mymaster 3000 #若是10秒後,mysater仍沒啓動過來,則啓動failover sentinel failover-timeout mymaster 10000 #執行故障轉移時,最多有一臺對新的主服務器進行同 sentinel parallel-syncs mymaster 1
sentinel6380.conf
#當前Sentinel服務運行的端口 port 26380 # 哨兵監聽的主服務器 sentinel monitor mymaster 127.0.0.1 6379 2 #若是在3秒內無相應,則認爲主站點宕機 sentinel down-after-milliseconds mymaster 3000 #若是10秒後,mysater仍沒啓動過來,則啓動failover sentinel failover-timeout mymaster 10000 #執行故障轉移時,最多有一臺對新的主服務器進行同 sentinel parallel-syncs mymaster 1
sentinel3381.conf
port 26381 # 哨兵監聽的主服務器 sentinel monitor mymaster 127.0.0.1 6379 2 #若是在3秒內無相應,則認爲主站點宕機 sentinel down-after-milliseconds mymaster 3000 #若是10秒後,mysater仍沒啓動過來,則啓動failover sentinel failover-timeout mymaster 10000 #執行故障轉移時,最多有一臺對新的主服務器進行同步 sentinel parallel-syncs mymaster 1
三、執行命令啓動:
redis-server.exe sentinel6379.conf --sentinel
redis-server.exe sentinel6380.conf --sentinel
redis-server.exe sentinel6381.conf --sentinel
四、校驗:
先看下主服務器6379的信息:
切換到6380與6381咱們看下:
如今咱們模擬主服務器6379宕機(關閉掉6379的服務端),觀察6380與6381的反應。
從以上信息來看,6381被選舉爲主服務器,那麼如今咱們分別看下6380與6381的信息:
此時監聽信息爲:
下一步咱們恢復6379看看會發生什麼:
如今看下監聽信息:
此時發現6379被設置爲從服務器。
如今咱們redis-cli 鏈接到6379看下:
OK完工,暫時只模擬這一種宕機狀況。
篇幅有些長,不知道有多少同窗能看到這裏。
天天學一點,總會有收穫。
下一步咱們看下Redis的Sentinel(哨兵)的實現過程