Redis Sentinel 是一個分布式架構(gòu)(這里的分布式是指:Redis 數(shù)據(jù)節(jié)點、Sentinel 節(jié)點集合、客戶端分布在多個物理節(jié)點的架構(gòu)),其中包含若干個 Sentinel 節(jié)點和 Redis 數(shù)據(jù)點,每個 Sentinel 節(jié)點會對數(shù)據(jù)節(jié)點和其余 Sentinel 節(jié)點進行監(jiān)控,當它發(fā)現(xiàn)節(jié)點不可達時,會對節(jié)點做下線標識。 (推薦學習:Redis視頻教程)
如果被標識的是主節(jié)點,它還會和其他 Sentinel 節(jié)點進行“協(xié)商”,當 大多數(shù) Sentinel 節(jié)點都認為主節(jié)點不可達時,它們會選舉出一個 Sentinel 節(jié)點來完成自動 故障轉(zhuǎn)移的工作,同時會將這個變化實時通知給 Redis 應(yīng)用方。
整個過程完全是自動的,不需要人工來介入,所以這套方案很有效地解決了 Redis 的高可用問題。
Redis Sentinel 具有以下幾個功能:
監(jiān)控(Monitoring):Sentinel 節(jié)點會定期檢測 Redis 數(shù)據(jù)節(jié)點(包括master和slave)、其余 Sentinel 節(jié)點是否可達。
通知(Notification):Sentinel 節(jié)點會將故障轉(zhuǎn)移的結(jié)果通知給應(yīng)用方。
自動故障遷移(Automatic failover):當master不能正常工作時,Sentinel會實現(xiàn)從節(jié)點晉升為主節(jié)點并維護后續(xù)正確的主從關(guān)系。
配置提供者(Configuration provider.):在 Redis Sentinel 結(jié)構(gòu)中,客戶端 在初始化的時候連接的是 Sentinel 節(jié)點集合,從中獲取主節(jié)點信息。
Redis & Redis Sentinel 的啟動
配置文件中修改。一般情況下,至少會需要三個哨兵對redis 進行監(jiān)控,我們可以通過修改端口啟動多個sentinel 服務(wù)。
配置主服務(wù)器的ip 和端口,我們把監(jiān)聽的端口修改成6380,并且加上權(quán)值為2,這里的權(quán)值,是用來計算我們需要將哪一臺服務(wù)器升級升主服務(wù)器。
在Redis安裝完畢后,我們可以通過如下的命令啟動Redis與Redis Sentinel(哨兵)
# 使用默認的配置文件 ./src/redis-server ../redis.conf # 使用默認的配置文件 ./src/redis-sentinel ../sentinel.conf