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