下面由Redis教程欄目給大家介紹關(guān)于java基于redis有序集合實現(xiàn)排行榜,希望對需要的朋友有所幫助!
哨兵是一個獨立的進程。
原理:哨兵通過發(fā)送命令,等待Redis服務(wù)器響應(yīng),從而監(jiān)控運行的多個Redis實例。
哨兵的作用:
- 通過發(fā)送命令,讓Redis服務(wù)器返回監(jiān)控其運行狀態(tài),包括主服務(wù)器和從服務(wù)器。
- 當哨兵監(jiān)測到master宕機,會自動將slave切換成master,然后通過發(fā)布訂閱模式通知其他的從服務(wù)器,修改配置文件,讓它們切換主機。
然而一個哨兵進程對Redis服務(wù)器進行監(jiān)控,可能會出現(xiàn)問題,為此,我們可以使用多個哨兵進行監(jiān)控。各個哨兵之間還會進行監(jiān)控,這樣就形成了多哨兵模式。
故障切換(failover)
假設(shè)主服務(wù)器宕機,哨兵1先檢測到這個結(jié)果,系統(tǒng)并不會馬上進行failover過程,僅僅是哨兵1主觀的認為主服務(wù)器不可用,這個現(xiàn)象成為主觀下線。當后面的哨兵也檢測到主服務(wù)器不可用,并且數(shù)量達到一定值時,那么哨兵之間就會進行一次投票,投票的結(jié)果由一個哨兵發(fā)起,進行failover操作。切換成功后,就會通過發(fā)布訂閱模式,讓各個哨兵把自己監(jiān)控的從服務(wù)器實現(xiàn)切換主機,這個過程稱為客觀下線。這樣對于客戶端而言,一切都是透明的。
配置哨兵模式
配置3個哨兵和1主2從的Redis服務(wù)器來演示這個過程。
服務(wù)類型 | 是否是主服務(wù)器 | IP地址 | 端口 |
---|---|---|---|
Redis | 是 | 192.168.11.128 | 6379 |
Redis | 否 | 192.168.11.129 | 6379 |
Redis | 否 | 192.168.11.130 | 6379 |
Sentinel | – | 192.168.11.128 | 26379 |
Sentinel | – | 192.168.11.129 | 26379 |
Sentinel | – | 192.168.11.130 | 26379 |
多哨兵監(jiān)控Redis
首先配置Redis的主從服務(wù)器,修改redis.conf文件如下
# 使得Redis服務(wù)器可以跨網(wǎng)絡(luò)訪問 bind 0.0.0.0# 設(shè)置密碼 requirepass "123456"# 指定主服務(wù)器,注意:有關(guān)slaveof的配置只是配置從服務(wù)器,主服務(wù)器不需要配置 slaveof 192.168.11.128 6379# 主服務(wù)器密碼,注意:有關(guān)slaveof的配置只是配置從服務(wù)器,主服務(wù)器不需要配置 masterauth 123456
上述內(nèi)容主要是配置Redis服務(wù)器,從服務(wù)器比主服務(wù)器多一個slaveof的配置和密碼。
配置3個哨兵,每個哨兵的配置都是一樣的。
在Redis安裝目錄下有一個sentinel.conf文件(復制3份)
# 禁止保護模式protected-mode no# 配置監(jiān)聽的主服務(wù)器,這里sentinel monitor代表監(jiān)控,mymaster代表服務(wù)器的名稱,可以自定義,192.168.11.128代表監(jiān)控的主服務(wù)器,6379代表端口,2代表只有兩個或兩個以上的哨兵認為主服務(wù)器不可用的時候,才會進行failover操作。sentinel monitor mymaster 192.168.11.128 6379 2# sentinel author-pass定義服務(wù)的密碼,mymaster是服務(wù)名稱,123456是Redis服務(wù)器密碼# sentinel auth-pass <master-name> <password>sentinel auth-pass mymaster 123456
上述關(guān)閉了保護模式,便于測試。
有了上述的修改,我們可以進入Redis的安裝目錄的src目錄,通過下面的命令啟動服務(wù)器和哨兵
# 啟動Redis服務(wù)器進程./redis-server ../redis.conf # 啟動哨兵進程./redis-sentinel ../sentinel.conf
注意啟動的順序。首先是主機(192.168.11.128)的Redis服務(wù)進程,然后啟動從機的服務(wù)進程,最后啟動3個哨兵的服務(wù)進程。