越來越多的企業在數字化轉型和上云進程中選擇混合云的形態(云+自建IDC或云+其他廠商云)來進行容災建設,一方面不會過度依賴單一云廠商,另一方面還能充分利用已有的線下IDC資源。MSHA云原生多活容災解決方案,支持混合云多活容災產品能力。本文會通過一個業務Demo案例,介紹混合云容災建設的難點,以及如何基于MSHA來快速搭建應用雙活架構并具備分鐘級業務恢復能力。
背景信息
- 業務僅在IDC單機房部署,缺少容災能力。
- IDC容量不足,物理機器升級替換周期長,不足以支撐業務的快速發展。
業務在快速發展過程中,多次遇到容量不足以及故障問題引起了公司高層的重視,因此決定進行容災能力建設。由于自建IDC是公司已有資產且穩定使用多年,同時不希望過度依賴于云,因此期望建立IDC+云的混合云形態容災架構。
A企業當前的應用部署架構
- frontend:Web應用,負責和用戶交互。
- cartservice:購物車應用,提供購物車添加、存儲和查詢服務。
- productservice:商品應用,提供商品、庫存服務。
- SpringBoot。
- RPC框架:SpringCloud、Dubbo,注冊中心使用自建的Nacos、ZooKeeper。
- 數據庫:Redis和MySQL。
混合云容災目標
A企業業務容災的需求如下:
需求 | 說明 |
---|---|
云上云下互容災,切換RTO為分鐘級。 | 期望云上云下相互容災,繼續發揮IDC的價值,且不100%依賴于云。面對IDC或云故障場景,關鍵時刻要敢切換、能切換,且切換RTO要求小于10分鐘。 |
無數據一致性風險。 | 云上云下的兩個數據中心數據強一致,日常態和容災切換過程中都要避免存在臟寫等數據一致性風險。 |
一站式管控。 | 業務容災涉及的技術棧框架和云產品,需要統一管控、統一運維、統一切換,操作收斂在一站式管控平臺,方便故障場景快速白屏化操作,自動化執行。 |
實施周期短,改造成本低。 | 業務存在多個產品線,依賴關系復雜、調用鏈路長,且處于高速發展頻繁迭代時期,期望容災建設不會給業務研發團隊帶來改造負擔。 |
建設難點
建立IDC+云的混合云形態容災架構難點如下:
難點 | 說明 |
---|---|
流量管理難度高 |
|
容災切換數據質量保障難 | 容災切換過程中,可能因數據同步延遲導致讀到舊數據,以及切換規則推送到分布式應用節點時間不一致等原因可能造成云上云下數據庫同時讀寫而出現臟寫的問題,整個切換過程數據質量保障是關鍵點及難點。 |
無業務代碼侵入難 | 要實現Redis、MySQL容災切換能力,通常需要業務應用配合改造,對業務代碼侵入大。 |
解決方案
結合業務容災需求和混合云IDC+云形態的特點,采用應用雙活架構能夠較好的滿足業務容災訴求。
應用雙活架構
架構簡圖:
限制:業務需要能接受兩地距離帶來的網絡延遲。
- 選擇離IDC物理距離≤200 km的云上地域(Region),網絡延遲較低(約5~7 ms)。
- 應用、中間件云上云下冗余對稱部署,同時對外提供服務(應用雙活)。
- 數據庫異地主備,異步復制備份。應用讀寫同一數據中心的數據庫,避免考慮一致性問題。
解決方案
架構簡圖:
- 應用流量雙活:
- 業務應用云上云下對稱部署,并基于MSHA接入層集群,來承接入口HTTP/HTTPS流量,按照比例或精準路由規則云上云下分流。
- 多活控制臺提供MSFE集群界面白屏化的部署、擴縮容、監控等常規運維能力,以及應對故障場景的分鐘級切流能力。
- 服務互通和同單元優先調用:
- 業務應用需要按業務產品線分批上云,過程中存在下游應用僅IDC部署的情況。利用MSHA注冊中心同步功能,可實現云上云下服務互通,助力業務上云。
- 同時基于MSHA-Agent的切面能力,在Dubbo/SpringCloud服務調用時,Consumer優先調用同單元內的Provider,從而避免跨機房調用帶來的網絡延遲,減小業務請求RT。
- 數據同步及數據庫連接切換:
- 數據庫異地主備部署,云上云下應用日常態均讀寫云上Redis和RDS數據庫,無需考慮數據一致性問題。MSHA控制臺通過集成DTS同步組件,支持云上云下的數據同步(異步復制)。
- 同時基于MSHA-Agent切面能力,具備應用數據庫訪問連接的切換能力,云上Redis或RDS故障則可將讀寫訪問連接切換到IDC內的Redis或MySQL,反之亦然。切換過程中還具備禁寫保護能力,避免產生讀到舊數據以及臟寫等數據質量問題。
- 一站式管控及無業務代碼侵入
- MSHA控制臺,支持HTTP、數據庫訪問流量的統一管控、統一切換,操作收斂在一站式管控平臺,方便故障場景快速白屏化操作,自動化執行。
- 同時針對業務應用MSHA提供了Agent接入方式,無需業務代碼改造即可獲得相關容災切換能力。
改造內容
A企業建立IDC+云的混合云形態容災架構,所需改造的內容如下:
改造點 | 說明 |
---|---|
應用上云 | 選擇跟自建IDC較近的阿里云地域,云上完全冗余的部署一套應用、中間件和數據庫,以便搭建云上云下雙活容災架構。在這個Demo案例中,選擇杭州地域(Region)作為容災單元。 |
網絡打通 | 接入CEN云企業網,實現云上云下網絡互通。具體操作,請參見多接入方式構建企業級混合云。 |
接入集群部署和配置 |
|
應用 |
|
中間件和數據庫 |
- 日常場景:IDC+云上同時承擔業務流量(即應用雙活)。
- 訪問電商Demo首頁,查看實際流量調用鏈:概率性的訪問到北京或杭州單元,均讀寫北京單元內的數據庫。
- 電商Demo首頁圖:
- 均讀寫北京單元內的數據庫架構簡圖:
容災能力
- RPO:≤1分鐘(依賴于DTS同步性能)。
- RTO:≤1分鐘(依賴于DTS同步延遲,MSHA組件實現秒級切換。整體RTO≤1分鐘)。
容災能力驗證
基于MSHA完成應用雙活架構建設后,還需驗證業務容災能力是否符合預期。接下來將制造真實的故障,來驗證容災恢復能力。
步驟一:演練準備
步驟二:應用故障注入
這里使用阿里云故障演練產品,對阿里云-北京地域的商品應用注入故障。
步驟三:切流恢復
在北京單元的商品應用故障的情況下,可以通過MSHA切流功能,將云上入口流量切0,快速恢復業務。
預期效果:100%流量切換到杭州單元后,業務完全恢復,不受北京單元的故障影響。
步驟四:數據庫故障注入
從上面調用鏈可以看出,杭州單元內的應用仍然訪問的是北京單元的Redis、MySQL數據庫。以同樣的方式執行步驟二對北京單元的Redis、MySQL數據庫注入故障,制造數據庫故障場景。
故障注入成功后,打開電商首頁或進行下單始終訪問異常,則符合預期。
步驟五:切換數據庫進行恢復
在北京單元的數據庫故障的情況下,可以通過MSHA數據庫切換功能,將應用訪問的Redis或MySQL的連接切換至杭州單元的數據庫(切換過程中會等待數據同步追平,期間會短暫禁寫)。
預期效果:應用連接的數據庫切換到杭州后,業務完全恢復,不受北京單元的故障影響。
通過MSHA多活容災助力企業進行混合云應用雙活容災建設的實踐案例,給出了容災架構建設實踐方法,同時利用Chaos故障演練產品注入真實故障,來驗證故障場景業務容災能力是否符合預期。若您在使用過程中有任何疑問,歡迎您搜索釘釘群號“31623894”加入“多活容災(MSHA)交流群”獲取幫助。