1. 程式人生 > 其它 >LNMP和Redis、Redis主從複製

LNMP和Redis、Redis主從複製

LNMP平臺對接redis服務

1、安裝LNMP各個元件(略)

2、安裝redis服務(略)

3、安裝redis擴充套件

4、修改 php 配置檔案

5、測試連線

  • 主從複製:主從複製是高可用Redis的基礎,哨兵和叢集都是在主從複製基礎上實現高可用的。主從複製主要實現了資料的多級備份,以及對於讀操作的負載均衡和簡單的故障恢復。缺陷:故障恢復無法自動化:寫操作無法負載均衡:儲存能力受到單機的限制
  • 哨兵:在主從複製的基礎上,哨兵實現了自動化的故障修復。缺陷:寫操作無法負載均衡:儲存能力受到單機限制:哨兵無法對從節點進行自動故障轉移,在讀寫分離場景下,從節點故障會導致讀服務不可用,需要對從節點做額外的監控、切換操作
  • 叢集:通過叢集,Redis解決了寫操作無法負載均衡,以及儲存能力受到單機限制的問題,實現了叫我完善的高可用方案

Redis主從複製

主從複製:是指將一臺Redis伺服器的資料,複製到其他Redis伺服器。前者稱為主節點(Master),後者稱為從節點(Slave):資料的複製是單向的,只能由主節點到從節點。

預設情況下,每臺Redis伺服器都是主節點:且一個主節點可以有多個從節點(或者沒有從節點),但一個從節點只能有一個主節點

主從複製的作用:

  • 資料冗餘:主從複製實現了資料的熱備份,是持久化之外的一種資料冗餘方式
  • 故障恢復:當主節點出現問題,可以由從節點提供服務,實現快速的故障恢復:實際上是一種服務的冗餘
  • 負載均衡:在主從複製的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫Redis資料時應用連線主節點,讀Redis資料時應用連線從節點),分擔伺服器負載:尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高Redis伺服器的併發量
  • 高可用基石:除了上述作用以外,主從複製還是哨兵和叢集能夠實施的基礎,因此說主從複製是Redis高可用的基礎

主從複製流程:

  1. 若啟動一個Slave機器程序,則它會向Master機器傳送一個“sync command”命令,請求同步連線
  2. 無論是第一次連線還是重新連線,Master機器都會啟動一個後臺程序,將資料快照儲存到資料檔案中(執行rdb操作)同時Master還會記錄修改資料的所有命令並快取在資料檔案中
  3. 後臺程序完成快取操作之後,Master機器就會向Slave機器傳送資料檔案,Slave端機器將資料檔案儲存到硬碟上,然後將其載入到記憶體中,接著Master機器就會將修改資料的所有操作一併傳送給Slave端機器。若Slave出現故障導致宕機,則恢復正常後會自動重新連線
  4. Master機器收到Slave端機器的連線後,將其完整的資料檔案傳送給Slave端機器,如果Master同時收到多個Slave發來的同步請求,則Master會在後臺啟動一個程序以儲存資料檔案,然後將其傳送給所有的Slave端機器,確保所有的Slave端機器都正常

搭建Redis主從複製:

1、安裝Redis各個元件(略)

2、修改配置檔案

(1)Master節點操作

(2)修改Slave節點

3、驗證主從效果

(1)在Master節點上看日誌

(2)在Master節點上驗證從節點

Redis哨兵模式

哨兵的核心功能:在主從複製的基礎上,哨兵引入了主節點的自動故障轉移

哨兵模式原理:

哨兵(sentinel):是一個分佈系統,用於對主從結構中的每臺伺服器進行監控,當出現故障時通過投票機制選擇新的Master並將所有Slave連線到新的Master。所以整個執行哨兵的叢集的數量不得少於3個節點

哨兵模式的作用:

  • 監控:哨兵會不斷地檢查主節點和從節點是否運作正常
  • 自動故障轉移:當主節點不能正常工作時,哨兵會開始自動故障轉移操作,它會將失效主節點的其中一個從節點升級為新的主節點,並讓其他從節點改為複製新的主節點
  • 通知(提醒):哨兵可以將故障轉移的結果傳送給客戶端

哨兵結構由兩部分組成

  • 哨兵節點:哨兵系統由一個或多個哨兵節點組成,哨兵節點是特殊的redis節點,不儲存資料
  • 資料節點:主節點和從節點都是資料節點

哨兵的啟動依賴於主動模式,所以須把主從模式安裝好的情況下再去做哨兵模式,所以節點上都需要部署哨兵模式,哨兵模式會監控所有的Redis工作節點是否正常,當Master出現問題的時候,因為其他節點與主節點失去聯絡,因此會投票,投票過半就認為這個Master的確出現問題,然後會通知哨兵間,然後從Slave中選取一個作為新的Master。

:客觀下線是主節點才有的概念:如果從節點和哨兵節點發生故障,被哨兵主觀下線後,不會再有後續的客觀下線和故障轉移操作。