天天看點

Redis叢集模式之哨兵模式工作原理前言 - 單機Redis的風險與問題2. 哨兵模式

文章目錄

  • 前言 - 單機Redis的風險與問題
  • 2. 哨兵模式
    • 2.1 哨兵簡介
    • 2.2 哨兵工作原理
      • 2.2.1 階段一: 監控階段
      • 2.2.2 階段二: 通知階段
      • 2.2.3 階段三: 故障轉移階段

前言 - 單機Redis的風險與問題

如果Redis設計成單節點, 會有如下風險:

  • 問題1: 機器故障
    1. 現象: 硬碟故障, 系統崩潰, 造成資料丢失, 很可能對業務造成災難性打擊
    2. 結論: 使用者基本上會放棄使用Redis.
  • 問題2: 容量瓶頸
    1. 現象: 記憶體不足, 從16G更新到64G, 從64G更新到128G, 無限更新記憶體. 原因是項目資金不夠, 硬體條件跟不上.
    2. 結論: 使用者放棄使用Redis.

結論就是, 為了避免單點Redis伺服器故障, 準備多台伺服器, 互相連通. 将資料複制多個副本儲存在不同的伺服器上, 連接配接在一起, 并保證資料是同步的. 即使有一台伺服器當機, 其他伺服器依然可以繼續提供服務, 實作Redis的高可用, 同僚實作資料備援備份.

上篇文章介紹了Redis的主從複制Redis主從複制工作原理就是一種解決辦法, 但是主從複制也會面臨主節點當機, 無法寫入資料的情況. 是以産生了哨兵模式的工作機制. 接下來我們詳細介紹.

2. 哨兵模式

2.1 哨兵簡介

哨兵(sentinel)是一個分布式系統, 用于對主從結構中的每台伺服器進行監控, 當出現故障時通過投票機制選擇新的master并将所有slave連接配接到新的master.

Redis叢集模式之哨兵模式工作原理前言 - 單機Redis的風險與問題2. 哨兵模式

哨兵的作用

  • 監控
    1. 不斷的檢查master和slave是否正常運作.
    2. master存活檢測, master與slave運作情況檢測.
  • 通知(提醒)
    1. 當被監控的伺服器出現問題時, 向其他(哨兵間, 用戶端)發送通知.
  • 自動故障轉移
    1. 斷開master與slave連接配接, 選取一個slave作為master, 将其他slave連接配接到新的master, 并告知用戶端新的伺服器位址.

注意: 哨兵也是多台redis伺服器, 隻是不提供資料服務, 通常哨兵配置數量為單數.

2.2 哨兵工作原理

哨兵的作用就是監控Redis叢集, 一旦Redis主節點當機了, 需要将從節點選一個主節點, 哨兵在進行主從切換過程中經曆三個階段.

  • 監控
  • 通知
  • 故障轉移

2.2.1 階段一: 監控階段

2.2.2 階段二: 通知階段

2.2.3 階段三: 故障轉移階段

繼續閱讀