最近談到Redis就會聽到哨兵模式,工作期間同事也分享過關於哨兵模式的知識,但由於工作忙(給自己找個藉口)沒有沒認真看,現在惡補下,老樣子還是分上篇應用,下篇看實現過程,下麵我們來看下哨兵到底是啥? 哨兵模式(Sentinel)是Redis的高可用解決方案。由一個或多個Sentinel實例組成的Se ...
最近談到Redis就會聽到哨兵模式,工作期間同事也分享過關於哨兵模式的知識,但由於工作忙(給自己找個藉口)沒有沒認真看,現在惡補下,老樣子還是分上篇應用,下篇看實現過程,下麵我們來看下哨兵到底是啥?
哨兵模式(Sentinel)是Redis的高可用解決方案。由一個或多個Sentinel實例組成的Sentinel系統,可以監控任意多個主伺服器,以及這些主伺服器下的所有從伺服器,當某個主伺服器下線時,自動將這個主伺服器下的某個從伺服器升級為新的主伺服器,代替下線的主伺服器繼續處理命令。另外Sentinel系統還會繼續監視已下線的主伺服器,當主伺服器恢復時,它將被降級成該主伺服器的從伺服器。
在看哨兵模式的實現過程之前,我們先看一下哨兵的用法:
1、我們將redis.windows.conf配置文件拷貝3份出來,改下名字便於識別:6379.conf,6380,conf,6381.conf。(這裡我們模擬使用經典的三節點搭建)
6379.conf我們使用預設配置的6379埠,分別改下 6380,conf與6381.conf的埠號
上一章我們使用slaveof <masterip> <masterport>命令設置從節點,現在我們修改6380.conf與6391.conf,將複製命令配置在文件中,將6379作為主節點:
2、下麵我們執行命令,啟動三個節點:
redis-server.exe 6379.conf
redis-server.exe 6380.conf
redis-server.exe 6381.conf
好了,現在三個節點都已經啟動,並且從控臺上看出,從節點已經在複製主節點的數據。
3、分別創建三個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
3、執行命令啟動:
redis-server.exe sentinel6379.conf --sentinel
redis-server.exe sentinel6380.conf --sentinel
redis-server.exe sentinel6381.conf --sentinel
4、校驗:
先看下主伺服器6379的信息:
切換到6380與6381我們看下:
現在我們模擬主伺服器6379宕機(關閉掉6379的服務端),觀察6380與6381的反應。
從以上信息來看,6381被選舉為主伺服器,那麼現在我們分別看下6380與6381的信息:
此時監聽信息為:
下一步我們恢復6379看看會發生什麼:
現在看下監聽信息:
此時發現6379被設置為從伺服器。
現在我們redis-cli 連接到6379看下:
OK完工,暫時只模擬這一種宕機情況。
篇幅有些長,不知道有多少同學能看到這裡。
每天學一點,總會有收穫。
下一步我們看下Redis的Sentinel(哨兵)的實現過程