最近談到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(哨兵)的實作程序

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/2470.html
標籤:NoSQL
