Redis叢集之主從叢集模式(哨兵模式Sentinel)
阿新 • • 發佈:2018-12-25
前言
Redis叢集模式主要有2種:
- 主從叢集
- 分散式叢集。
前者主要是為了高可用或是讀寫分離,後者為了更好的儲存資料,負載均衡。
本文主要講解主從叢集。
主從切換原理
Redis的主從原理與MySQL相似,都是設定兩臺機器,一主一從。也就是常說的熱備與冷備。設定主從的同時,設定兩個哨兵程序,用來檢測主節點是否宕機。若發現主節點宕機,立馬從從節點內選取出合適的節點 作為新的主節點。這點與VIP(虛擬IP技術有點相似)。說的有點抽象,可看原理圖,加深印象。原理圖如下所示(略):
基本部署操作
操作簡略如下:
- 主節點:啟動Redis Server程序與Redis Sentinel程序
- 從節點:啟動Redis Server程序與Redis Sentinel程序
注:特別注意主從節點的redis.conf與sentinel.conf檔案的配置,詳細更改見Github地址。
測試實驗
主要測試實驗如下所示:
切換前
- 主從節點,通過
INFO
命令查詢叢集資訊; - 主從哨兵節點,通過
Sentienl masters
與Sentinel slaves
查詢叢集資訊; - 主節點更新資料值,檢視從節點是否有更改。
關閉主節點
- 從節點,通過
INFO
命令查詢叢集資訊; - 主從哨兵節點,通過
Sentienl masters
與Sentinel slaves
查詢叢集資訊; - 從節點更新資料值。
開啟主節點
- 主從節點,通過
INFO
命令查詢叢集資訊; - 主從哨兵節點,通過
Sentienl masters
與Sentinel slaves
查詢叢集資訊; - 判斷主節點是否更新了之前從節點 插入的資料。
實驗進行
由於主從的Log太多,這邊就放置一張選舉 主從切換部分的截圖。
主要總結:
- 切換前,Redis Server與Sentinel 應當都能夠獲取到整個叢集的資訊(包括主從節點),且主節點資訊更新,從節點也會更新。
- 切換中,Sentinel哨兵會重新選舉,從節點會更新為主節點。
- 切換後,原主節點會作為從節點(注意 並不會切換為主節點),切會獲取到宕機這段時間的資料,並且作為冷備執行。
- 當原從節點宕機後,原主節點會再次被選舉為主節點。
注: 當使用哨兵後,Jedis內將使用JedisSentinelPool
,而不再使用JedisPool
,因為後者不具有高可用的效能。
Reference
略