文章目錄
- 前言 - 單機Redis的風險與問題
- 2. 哨兵模式
-
- 2.1 哨兵簡介
- 2.2 哨兵工作原理
-
- 2.2.1 階段一: 監控階段
- 2.2.2 階段二: 通知階段
- 2.2.3 階段三: 故障轉移階段
前言 - 單機Redis的風險與問題
如果Redis設計成單節點, 會有如下風險:
- 問題1: 機器故障
- 現象: 硬碟故障, 系統崩潰, 造成資料丢失, 很可能對業務造成災難性打擊
- 結論: 使用者基本上會放棄使用Redis.
- 問題2: 容量瓶頸
- 現象: 記憶體不足, 從16G更新到64G, 從64G更新到128G, 無限更新記憶體. 原因是項目資金不夠, 硬體條件跟不上.
- 結論: 使用者放棄使用Redis.
結論就是, 為了避免單點Redis伺服器故障, 準備多台伺服器, 互相連通. 将資料複制多個副本儲存在不同的伺服器上, 連接配接在一起, 并保證資料是同步的. 即使有一台伺服器當機, 其他伺服器依然可以繼續提供服務, 實作Redis的高可用, 同僚實作資料備援備份.
上篇文章介紹了Redis的主從複制Redis主從複制工作原理就是一種解決辦法, 但是主從複制也會面臨主節點當機, 無法寫入資料的情況. 是以産生了哨兵模式的工作機制. 接下來我們詳細介紹.
2. 哨兵模式
2.1 哨兵簡介
哨兵(sentinel)是一個分布式系統, 用于對主從結構中的每台伺服器進行監控, 當出現故障時通過投票機制選擇新的master并将所有slave連接配接到新的master.
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90TUPd3aU1EMZpWTwgDbiBHaYFGbkNDTwYVbiVHNHpleO1GTulzRilWO5xkNNh0YwIFSh9Fd4VGdsATMfd3bkFGazxyaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yYwkjZmNDNiFjZzMTYjhTO3YGN0gzN2gDZxI2NkFWOl9CXt92YuM3YuVXepxWYucmbppWalJWLuNWLzN3buc2bsJWLn1Wat4GZzN2Lc9CX6MHc0RHaiojIsJye.png)
哨兵的作用
- 監控
- 不斷的檢查master和slave是否正常運作.
- master存活檢測, master與slave運作情況檢測.
- 通知(提醒)
- 當被監控的伺服器出現問題時, 向其他(哨兵間, 用戶端)發送通知.
- 自動故障轉移
- 斷開master與slave連接配接, 選取一個slave作為master, 将其他slave連接配接到新的master, 并告知用戶端新的伺服器位址.
注意: 哨兵也是多台redis伺服器, 隻是不提供資料服務, 通常哨兵配置數量為單數.
2.2 哨兵工作原理
哨兵的作用就是監控Redis叢集, 一旦Redis主節點當機了, 需要将從節點選一個主節點, 哨兵在進行主從切換過程中經曆三個階段.
- 監控
- 通知
- 故障轉移