1. 程式人生 > >Redis叢集之主從叢集模式(哨兵模式Sentinel)

Redis叢集之主從叢集模式(哨兵模式Sentinel)

前言

Redis叢集模式主要有2種:

  • 主從叢集
  • 分散式叢集。

前者主要是為了高可用或是讀寫分離,後者為了更好的儲存資料,負載均衡。
本文主要講解主從叢集。

主從切換原理

Redis的主從原理與MySQL相似,都是設定兩臺機器,一主一從。也就是常說的熱備與冷備。設定主從的同時,設定兩個哨兵程序,用來檢測主節點是否宕機。若發現主節點宕機,立馬從從節點內選取出合適的節點 作為新的主節點。這點與VIP(虛擬IP技術有點相似)。說的有點抽象,可看原理圖,加深印象。原理圖如下所示(略):

基本部署操作

操作簡略如下:

  • 主節點:啟動Redis Server程序與Redis Sentinel程序
  • 從節點:啟動Redis Server程序與Redis Sentinel程序

注:特別注意主從節點的redis.conf與sentinel.conf檔案的配置,詳細更改見Github地址。

測試實驗

主要測試實驗如下所示:

切換前

  • 主從節點,通過INFO命令查詢叢集資訊;
  • 主從哨兵節點,通過Sentienl mastersSentinel slaves查詢叢集資訊;
  • 主節點更新資料值,檢視從節點是否有更改。

關閉主節點

  • 從節點,通過INFO命令查詢叢集資訊;
  • 主從哨兵節點,通過Sentienl mastersSentinel slaves查詢叢集資訊;
  • 從節點更新資料值。

開啟主節點

  • 主從節點,通過INFO命令查詢叢集資訊;
  • 主從哨兵節點,通過Sentienl mastersSentinel slaves查詢叢集資訊;
  • 判斷主節點是否更新了之前從節點 插入的資料。

實驗進行

由於主從的Log太多,這邊就放置一張選舉 主從切換部分的截圖。
Redis 選舉

主要總結:

  • 切換前,Redis Server與Sentinel 應當都能夠獲取到整個叢集的資訊(包括主從節點),且主節點資訊更新,從節點也會更新。
  • 切換中,Sentinel哨兵會重新選舉,從節點會更新為主節點。
  • 切換後,原主節點會作為從節點(注意 並不會切換為主節點),切會獲取到宕機這段時間的資料,並且作為冷備執行。
  • 當原從節點宕機後,原主節點會再次被選舉為主節點。

注: 當使用哨兵後,Jedis內將使用JedisSentinelPool,而不再使用JedisPool,因為後者不具有高可用的效能。

Reference