轉至:https://blog.csdn.net/weixin_34293246/article/details/86132293
行業趨勢與挑戰
對於各行各業而言,用戶數據、系統數據均是企業最核心、最重要的財富,業務的穩定運行、IT系統功能正常是企業最重要的發展訴求。而這些訴求常常因為一些不可預期不可力抗“天災人禍”變得十分困難,例如:
綜上,保障企業業務穩定、IT系統功能正常、數據安全十分重要,可以同時保障數據備份與系統、應用容災的災備解決方案應勢而生,且發展迅速。說明:災備是指容災+備份:
- 備份的定義:指用戶為應用系統產生的重要數據(或者原有的重要數據信息)制作一份或者多份拷貝,以增強數據的安全。
- 容災的定義:指在相隔較遠的兩地(同城或者異地)建立兩套或多套功能相同的IT系統,互相之間可以進行健康狀態監視和功能切換。當一處系統因意外(天災、人禍)停止工作時,整個應用系統可以切換到另一處,使得該系統功能可以繼續正常工作。據智研數據中心統計數據,災備行業的市場規模已達百億規模,且預計會逐年持續增長。
進行災備解決方案設計時,需關注災備的兩個關鍵技術指標:
- RTO:RecoveryTime Object,恢復時間目標。指災難發生后,從IT系統宕機導致業務停頓之刻開始,到IT系統恢復至可以支持各部門運作,業務恢復運營之時,此兩點之間的時間段稱為RTO。RTO是反映業務恢復及時性的指標,體現了企業能容忍的IT系統最長恢復時間。RTO值越小,代表容災系統的恢復能力越強,但企業投資也越高。
- RPO:Recovery Point Object,恢復點目標。指災難發生后,容災系統進行數據恢復,恢復得來的數據所對應的時間點稱為RPO。RPO是反映數據丟失量的指標,體現了企業能容忍的最大數據丟失量的指標。RPO值越小,代表企業數據丟失越少,企業損失越小。
阿里雲災備解決方案亮點
阿里雲針對企業對災備的需求,構建阿里雲災備解決方案,基於阿里雲平台的災備解決方案有以下亮點:
- 多數據中心:阿里雲在全球分布有多個數據中心,用戶可在就近、合適區域選購、部署阿里雲產品。
- 穩定:每個區域及產品比較穩定,阿里雲關鍵部件(SLB、ECS、RDS等)經多輪迭代具備比較完善的災備能力,可以實現更細粒度的控制,可以通過更多已經產品化的功能模塊實現容災。
- 彈性:用戶可根據業務需求橫向、縱向擴縮容,按需購買使用的服務。
核心產品的災備設計及技術指標
以一個最簡IT系統為例,用戶可使用以下阿里雲產品:
- SLB:Server Load Balancer,是對多台雲服務器進行流量分發的負載均衡服務,在整個IT系統中,SLB是服務的對外接口,流量入口。阿里雲SLB可通過多可用區來消除單點故障,保障系統的穩定性。詳細的災備設計及技術指標見 SLB 章節。
- ECS:Elastic Compute Service,是一種簡單高效、處理能力可彈性伸縮的計算服務,在整個IT系統中提供計算能力。ECS可使用鏡像、快照進行備份,詳細的設計及技術指標見 ECS 章節。
- RDS:Relational Database Service,是一種穩定可靠、可彈性伸縮的在線數據庫服務。在整個IT系統中提供關系型數據庫能力,詳細的設計及技術指標見 RDS 章節。注意:本文所描述的阿里雲災備解決方案中的設計及技術指標均為2018年3月各產品版本測試支持情況,不作為SLA的參考特性及指標。
SLB
災備設計
集群部署
阿里雲SLB當前提供四層(TCP協議和UDP協議)和七層(HTTP和HTTPS協議)的負載均衡服務。負載均衡采用集群部署,可實現會話同步,以消除服務器單點故障,提升冗余,保證服務的穩定性。以四層負載均衡服務器為例: - 采用開源軟件LVS(Linux Virtual Server)+ keepalived的方式實現負載均衡。
- LVS集群內的每台LVS都會進行會話,通過組播報文同步到該集群內的其它LVS機器上,從而實現LVS集群內各台機器間的會話同步。
當客戶端向服務端傳輸數據包后:
- 在LVS1上建立的會話A開始同步到其它LVS機器上。
- 當LVS1出現故障或進行維護時,這部分流量會走到一台可以正常運行的機器LVS2上。可見,負載均衡集群支持熱升級,並且可在機器故障和集群維護時最大程度對用戶透明,不影響用戶業務。注意:對於連接未建立(三次握手未完成),或者已建立連接但未觸發會話同步機制,熱升級不保證連接不中斷,需要依靠客戶端重新發起連接。
多可用區部署
在災備場景下,SLB的Master&API控制系統與流量服務節點可部署在指定可用區,在多可用區部署的地域還支持主備可用區,當主可用區出現故障時,負載均衡可自動切換到備可用區上提供服務。以雙機房部署為例:
轉發節點發生故障通過BGP(Border Gateway Protocol,邊界網關協議)路由進行切換,實現在故障時SLB實例能自動秒級將流量切換到另一機房。SLB在整體設計上讓其可用性高達99.99%。且能夠根據應用負載進行彈性擴容,在任意一台SLB故障或流量波動等情況下都能做到不中斷對外服務。
應用場景
同城容災:
- 多可用區部署SLB實例,在各個地域采用多物理機房部署。
- 若流量入口為互聯網,則使用公網VIP;若流量入口為公共雲內網,則使用私網VIP即可。
- 當轉發節點發生故障時,通過BGP路由進行切換,將流量轉發至另一機房。
- 通過權重進行后端流量分配;若業務對時延敏感,可將備可用區ECS的權重調整為0。
同城容災場景下,也可在多可用區部署一個SLB實例,此種應用場景下,SLB無法做到實例級災備切換,僅當整個可用區故障時,流量切換至另一個可用區。
異地容災:
- 單可用區和多可用區SLB實例均可使用,兩個地域要分別采購各自節點的SLB實例。
- 若流量入口為互聯網,則使用公網VIP;若流量入口為公共雲內網,則使用私網VIP即可。災備場景下,SLB的配置請參考結合雲解析實現跨地域負載均衡。
ECS
災備設計
快照備份與回滾
快照備份:
阿里雲ECS可使用快照進行系統盤、數據盤的備份。目前,阿里雲提供快照2.0服務,提供了更高的快照額度、更靈活的自動任務策略,並進一步降低了對業務I/O的影響。使用快照進行備份時,第一次備份為全量備份,后續為增量備份,備份所需時間與待備份數據量有關。
例如,快照 1 、快照 2 和快照 3 分別是磁盤的第一個、第二個和第三個快照。文件系統對磁盤的數據進行分塊檢查,當創建快照時,只有變化了的數據塊,才會被復制到快照中。阿里雲ECS的快照備份可配置為手動備份,也可配置為自動備份。配置為自動備份后可以指定磁盤自動創建快照的時間(24個整點)、重復日期(周一到周日)和保留時間(可自定義,范圍是1-65536天,或選擇永久保留)。
快照回滾:
當系統出現問題,需要將一塊磁盤的數據回滾到之前的某一時刻,可以通過快照回滾實現,前提是該磁盤已經創建了快照。注意:
- 回滾磁盤是不可逆操作,一旦回滾完成,原有的數據將無法恢復,請謹慎操作。
- 回滾磁盤后,從所使用的快照的創建日期到當前時間這段時間內的數據都會丟失。
鏡像備份與恢復
鏡像備份
鏡像文件相當於副本文件,該副本文件包含了一個或多個磁盤中的所有數據,對於 ECS 而言,這些磁盤可以是單個系統盤,也可以是系統盤加數據盤的組合。使用鏡像備份時,均是全量備份,且只能手動觸發。
鏡像恢復
阿里雲ECS支持使用快照創建自定義鏡像,將快照的操作系統、數據環境信息完整的包含在鏡像中。然后使用自定義鏡像創建多台具有相同操作系統和數據環境信息的實例。注意:創建的自定義鏡像不能跨地域使用。ECS的快照與鏡像配置請參考快照與鏡像。
技術指標
RTO:與數據量大小有關,通常而言是小時級別RPO:與配置的自動快照策略、恢復用的快照生成時間有關,通常而言是小時級別
應用場景
備份恢復:
阿里雲ECS可通過快照與鏡像對系統盤、數據盤進行備份。如果存儲在磁盤上的數據本身就是錯誤的數據,比如由於應用錯誤導致的數據錯誤,或者黑客利用應用漏洞進行惡意讀寫,此時就可以使用快照服務將磁盤上的數據恢復到期望的狀態。另外ECS可通過鏡像重新初始化磁盤或使用自定義鏡像新購ECS實例。
容災應用:
ECS可以從架構上來實現容災場景下的應用,比如:在應用前端購買SLB產品,后端相同應用部署至少兩台ECS服務器,或者是使用阿里雲的彈性伸縮技術,根據自定義ECS自身資源的使用規則來進行彈性擴容。這樣即便其中一台ECS服務器故障或者資源利用超負荷,也不會使服務對外終止,從而實現容災場景下的應用。以同城兩機房部署ECS集群為例:
- ECS在兩機房均部署集群,接入側通過SLB做兩機房的接入流量負載均衡。
- 兩機房部署的Region Master節點是對等的,單Region Master節點故障不影響ECS的管控功能。
- ECS的管控節點機房級故障切換,主要是對管控集群依賴的中間件域名重新綁定。如管控節點機房級故障,需重新將中間件域名綁定至另一個機房的管控節點。
RDS
災備設計
雙機熱備
RDS 采用熱備架構,物理服務器出現故障后服務秒級完成切換。整個切換過程對應用透明。多副本冗余
RDS 服務器中的數據構建於 RAID 之上,數據備份存儲在 OSS 上。數據備份
RDS 提供自動備份的機制。用戶可以設置自動備份的周期,還可以根據自身業務特點隨時發起備份。數據恢復
支持按備份集和指定時間點的恢復。在大多數場景下,用戶可以將 7 天內任意一個時間點的數據恢復到 RDS 臨時實例或克隆實例上,數據驗證無誤后即可將數據遷回 RDS 主實例,從而完成數據回溯。應用場景
通用場景
RDS默認采用主備架構(備用實例正常情況下對用戶不可見):
- 兩個實例位於不同服務器,自動同步數據。
- 主實例不可用時,系統會自動將數據庫連接切換至備用實例。切換為分鍾級別,且無需人工介入,由系統自動完成,應用系統也無需任何變更。這種架構足以滿足90% 用戶的高可用需求。
同城容災
用戶如果對系統可用性有更高的要求,希望可以做到機房容災,阿里雲RDS可以選擇購買多可用區RDS。多可用區是在單可用區的級別上,將同一地域的多個單可用區組合成的物理區域。相對於單可用區RDS實例,多可用區RDS例可以承受更高級別的災難。
- 前端對DB的訪問連接由SLB+Proxy完成容災切換,SLB的轉發層可通過BGP路由完成自動切換。
- Proxy完成對后端DB Node的連接(長連接Session保持),實現防閃斷(軟切換不斷連接),防SQL注入等功能,對硬件級切換無效。
- DB Node:雙機房主備部署,主實例在主機房,備實例在備機房。
- 單台DB Node故障,HA自動檢測故障並進行切換至另一機房的DB Node。
- 采用雙HA服務器機制來判斷是否發生機房級故障,雙機房2台HA相互檢測不到對方時判斷發生機房級故障。一旦發生機房級故障,RDS系統將停止主切換,以避免發生數據不一致現象。
- RDS集群可采用Lossless Replication的配置方式(Aftersync)來保證主備庫的數據一致性。
異地容災
除了同城容災之外,對於數據可靠性有強需求用戶,比如是有監管需求的金融業務場景,RDS提供異地災備實例,幫助用戶提升數據可靠性。
- RDS通過數據傳輸服務(DTS)實現主實例和異地災備實例之間的實時同步。
- 主實例和災備實例均搭建主備高可用架構,當主實例所在區域發生突發性自然災害等狀況,主節點(Master)和備節點(Slave)均無法連接時,可將異地災備實例切換為主實例,在應用端修改數據庫鏈接地址后,即可快速恢復應用的業務訪問。
典型應用場景
阿里雲災備解決方案可根據企業用戶的災備需求及IT系統現狀進行企業災備方案的定制設計,以下以三個典型的應用場景示例,基於阿里雲平台不同災備場景下的架構設計。
通用架構
中小型企業業務量不是特別大,對異地容災要求不是特別強烈,在阿里雲平台上可采用以下災備方案:
- 在同一地域下選擇購買雲產品。建議在VPC網絡環境下,選擇同一可用區或者同地域不同可用區的雲產品。
- 在前端購買SLB,提供負載功能,當后端ECS資源使用緊張時可以直接橫向擴展,對業務無影響。
- 建議ECS服務器至少兩台,避免單點故障。
- 數據庫業務盡量不要和應用服務部署在同一台ECS上,防止不同服務之間資源搶占,同時方便日常管理和后期擴容。數據庫服務器推薦直接購買RDS產品,數據安全有保障,同時也不需要花太多精力去運維管理。
同城容災
對中大型用戶來說,希望業務系統要求具備同城容災的能力,可以采用以下同城災備方案:
- 在同城不同可用區之間對原有應用架構做一套完整的備份,SLB、ECS、RDS等均在兩個機房同時部署。
- 前端部署DNS解析,如果某個可用區出現像IDC機房斷電或者火災等機房級故障時,可以通過前端切換DNS來及時恢復業務。
- 非機房級故障(某個機房的單產品故障,如其中一個機房的ECS服務器損壞),故障切換保障由單產品的災備設計保障。
異地容災
對於一些大型企業在業務安全全性、服務可用性和數據可靠性方面既要求具備同城容災又要求具備異地容災時,可以采用以下異地災備方案:
- 在不同地域、不同可用區中均對原有應用架構做一套完整的備份。
- 不同地域之間可以采用阿里雲的高速通道進行私網通信,保障數據庫之間的數據實時同步,將數據傳輸延遲降到最低。
- 故障發生時可以通過前端DNS實現秒級切換,及時恢復業務。
- 這種容災架構方式既可以解決單機房故障也可以應對像地震等災難性故障。