數據是很多業務的核心元素,作爲數據載體的數據庫承擔着舉足輕重的責任。雲數據庫Redis版作爲高性能的Key-Value數據庫,在業務場景中往往承載着大量的重要數據。本文將全方位地爲您解析雲數據庫Redis版的災備機制。

雲數據庫Redis版容災架構演進

程序在運行過程中總會遇到各種各樣的問題,例如程序BUG、設備故障、機房斷電等,理想的容災機制能夠在這些問題發生時,保證數據的一致性和業務可用性。雲數據庫Redis版爲了保證業務的高可用,不斷提升容災能力,爲不同的業務場景提供相應的高可用方案。

下圖反映了雲數據庫Redis版容災架構的演進歷史。

圖 1.  Redis容災架構演進

當前三種方案同時存在,您可以根據業務需求選擇合適的方案。下文將對各方案進行詳細介紹。

單可用區高可用機制

Redis全架構均支持單機房HA高可用架構。HA監控系統採用獨立的平臺化架構,提供跨可用區的高可用機制,使雲數據庫Redis版比自建Redis更穩定。

標準版-雙副本

標準版-雙副本實例採用雙機主從(Master-Replica)架構,高可用HA模塊偵測到主節點故障時,會自動進行主從切換,將Replica提升爲Master,而原來的Master恢復連接後會成爲新的Replica。實例默認開啓數據持久化功能,支持數據自動備份,您可以使用備份文件回滾實例或者克隆實例,有效地解決誤操作問題並實現可靠的災備。

圖 2.  標準版-雙副本高可用架構

集羣版-雙副本

集羣版-雙副本實例由配置服務器、代理服務器和分片服務器組成:

  • 配置服務器(Config Server)是用於提供全局路由信息和配置信息的集羣管理工具,採用遵循Raft協議的三副本集羣架構;

  • 代理服務器(Proxy Server)爲單節點架構,集羣版結構中會有多個Proxy,系統自動對所有Proxy進行負載均衡及故障轉移;

  • 分片服務器(Shard Server)同樣採用雙副本高可用架構,與標準版-雙副本實例相同,主節點故障之後,HA模塊會自動進行主從切換保證服務高可用,並更新Proxy Server和Config Server的信息。

圖 3.  集羣版-雙副本高可用架構

讀寫分離版

讀寫分離版實例由代理服務器、主從架構的讀寫節點以及若干只讀副本(Read-Only Replica)構成。

  • 高可用HA模塊實時監測各節點的狀態,在讀寫節點的主節點發生故障時發起主從切換,同時將只讀節點連接到新的主節點上來;

  • 當只讀節點發生故障時, HA模塊將重建只讀節點,並更新相應的路由及權重信息。

  • Proxy實時監控只讀節點的服務狀態,當發現某個只讀節點狀態異常時會降低該節點的權重。如果只讀節點多次連接失敗,Proxy將停止該節點的服務,直至其恢復正常。

圖 4.  讀寫分離版高可用架構

同城容災機制

Redis標準版和集羣版提供跨雙機房的同城容災架構。如果業務爲單一地域部署,且對容災要求較高,可在創建雲數據庫 Redis版實例時,選擇支持同城容災的可用區,如下圖中的 華東1多可用區(B+F)華東1多可用區(G+H)

圖 5.  創建同城容災實例

創建多可用區實例時,備機房將創建與主機房相同規格的Replica實例,主備機房的實例數據通過專門的複製通道同步。

當主機房出現電力或網絡問題時,Replica實例將升級爲Master實例,系統調用Config Server接口爲Proxy更新路由信息。底層網絡根據路由精細度實現故障切換,主機房網段的精細度高,因此在正常情況下,數據會直接傳輸到主機房的實例;當主機房出現故障時,不會上傳路由明細信息,此時骨幹網中只存在備機房的精細度較低的大網段路由信息,系統就會自動把請求路由到備機房,從而實現故障切換。

雲數據庫Redis版優化了Redis的同步機制,在同步位點上借鑑MySQL的GTID,實現了全局OpID,並且查找OpID的操作通過後臺線程無鎖進行。同時,發送AOF binlog是異步同步的過程,可以限流,保障了Redis服務的性能。

圖 6.  同城容災實例的數據同步過程

跨地域容災

雲數據庫Redis版提供了全球範圍的異地多活服務,即Redis全球多活,適用於需要在多地域同步部署的業務場景,與傳統的災備方案最大的區別在於多活。異地多活架構使業務能夠在多個地域同時進行,各地域中的全球多活子實例實時雙向同步。

說明 Redis全球多活當前僅對部分測試用戶開放。

Redis全球多活實例由多活子實例、同步通道以及通道管理器構成。

  • 多活子實例是基本服務單元,所有子實例均可讀寫;

  • 同步通道支持子實例間的實時雙向同步,以及容忍度達到天級別的斷點續傳;

  • 通道管理器管理同步通道的生命週期,同時處理子實例在故障時的主從切換以及備份重搭,保證多活實例的高可用。

圖 7.  全球多活同步架構

說明 子實例間通過異步複製進行同步,不影響Redis的服務性能。

使用Redis全球多活架構時,可在業務端設置切換條件,使得業務流量在某一地域出現問題時切換到另一地域的子實例上,保證業務的可用性。

Redis全球多活實例的創建方法請參見創建多活實例。

雲數據庫Redis版提供了實例級別、可用區級別、地域級別的多種高可用架構,請根據業務需要選擇合適的災備方案。

相關文章