混合云應(yīng)用雙活容災(zāi)最佳實(shí)踐


作者:遠(yuǎn)跖
Cloud Native
業(yè)務(wù)混合云容災(zāi)實(shí)踐
Cloud Native
業(yè)務(wù)僅在 IDC 單機(jī)房部署,缺少容災(zāi)能力。
IDC 容量不足,物理機(jī)器升級替換周期長,不足以支撐業(yè)務(wù)的快速發(fā)展。
當(dāng)前應(yīng)用部署架構(gòu)
frontend:Web 應(yīng)用,負(fù)責(zé)和用戶交互。
cartservice:購物車應(yīng)用,提供購物車添加、存儲(chǔ)和查詢服務(wù)。
productservice:商品應(yīng)用,提供商品、庫存服務(wù)。
SpringBoot。
RPC 框架:SpringCloud、Dubbo,注冊中心使用自建的 Nacos、Zookeeper。
數(shù)據(jù)庫 Redis 和 MySQL。

云上云下互容災(zāi),切換 RTO 為分鐘級。期望云上云下相互容災(zāi),繼續(xù)發(fā)揮 IDC 的價(jià)值,且不 100% 依賴于云。面對 IDC 或云故障場景,關(guān)鍵時(shí)刻要敢切換、能切換,且切換 RTO 要求小于 10 分鐘。
無數(shù)據(jù)一致性風(fēng)險(xiǎn)。云上云下的兩個(gè)數(shù)據(jù)中心數(shù)據(jù)強(qiáng)一致,日常態(tài)和容災(zāi)切換過程中都要避免存在臟寫等數(shù)據(jù)一致性風(fēng)險(xiǎn)。
一站式管控。業(yè)務(wù)容災(zāi)涉及的技術(shù)??蚣芎驮飘a(chǎn)品,需要統(tǒng)一管控、統(tǒng)一運(yùn)維、統(tǒng)一切換,操作收斂在一站式管控平臺(tái),方便故障場景快速白屏化操作,自動(dòng)化執(zhí)行。
實(shí)施周期短,改造成本低。業(yè)務(wù)存在多個(gè)產(chǎn)品線,依賴關(guān)系復(fù)雜、調(diào)用鏈路長,且處于高速發(fā)展頻繁迭代時(shí)期,期望容災(zāi)建設(shè)不會(huì)給業(yè)務(wù)研發(fā)團(tuán)隊(duì)帶來改造負(fù)擔(dān)。
流量管理難度高
若采用 DNS 將流量按權(quán)重解析到云上和云下,存在修改 DNS 解析生效時(shí)間長的問題(通常為十分鐘或小時(shí)級,參見?DNS 解析生效時(shí)間 FAQ[2]),不能滿足容災(zāi)切換小于 10 分鐘的要求。 業(yè)務(wù)應(yīng)用所依賴的 Redis 和 MySQL,IDC內(nèi)采用開源自建而云上直接使用云產(chǎn)品,要實(shí)現(xiàn)開源自建+云產(chǎn)品的容災(zāi)切換能力難。
容災(zāi)切換數(shù)據(jù)質(zhì)量保障難
容災(zāi)切換過程中,可能因數(shù)據(jù)同步延遲導(dǎo)致讀到舊數(shù)據(jù),以及切換規(guī)則推送到分布式應(yīng)用節(jié)點(diǎn)時(shí)間不一致等原因可能造成云上云下數(shù)據(jù)庫同時(shí)讀寫而出現(xiàn)臟寫的問題,整個(gè)切換過程數(shù)據(jù)質(zhì)量保障是個(gè)關(guān)鍵點(diǎn),同時(shí)也是難點(diǎn)。
無業(yè)務(wù)代碼侵入難
要實(shí)現(xiàn) Redis、MySQL 容災(zāi)切換能力,通常需要業(yè)務(wù)應(yīng)用配合改造,對業(yè)務(wù)代碼侵入大。
應(yīng)用雙活架構(gòu)

選擇離 IDC 物理距離<=200km 的云上 Region,網(wǎng)絡(luò)延遲較低(約 5~7ms)。
應(yīng)用、中間件云上云下冗余對稱部署,同時(shí)對外提供服務(wù)(應(yīng)用雙活)。
數(shù)據(jù)庫異地主備,異步復(fù)制備份。應(yīng)用讀寫同一數(shù)據(jù)中心的數(shù)據(jù)庫,避免考慮一致性問題。
詳細(xì)方案

應(yīng)用流量雙活
服務(wù)互通和同單元優(yōu)先調(diào)用
數(shù)據(jù)同步&數(shù)據(jù)庫連接切換
一站式管控&無業(yè)務(wù)代碼侵入
應(yīng)用上云
選擇跟自建 IDC 較近的阿里云地域,云上完全冗余的部署一套應(yīng)用、中間件和數(shù)據(jù)庫,以便搭建云上云下雙活容災(zāi)架構(gòu)。在這個(gè) Demo 案例中,選擇杭州 Region 作為容災(zāi)單元。
網(wǎng)絡(luò)打通:
接入 CEN 云企業(yè)網(wǎng),實(shí)現(xiàn)云上云下網(wǎng)絡(luò)互通(詳見多接入方式構(gòu)建企業(yè)級混合云文檔[3])。
接入集群部署和配置:
云上云下部署 MSHA 接入層集群(MSFE),上掛 SLB 用于公網(wǎng)接入以及 MSFE 集群的負(fù)載均衡(參見使用文檔[4])。 錄入域名、URI 和后端應(yīng)用地址,從而具備云上云下分流和分鐘級切流能力(參見使用文檔[5])。
應(yīng)用:
云上分批部署業(yè)務(wù)應(yīng)用。 JAVA 應(yīng)用安裝 MSHA-Agent,并使用 Nacos 作為管控命令下發(fā)通道,從而具備微服務(wù)同單元優(yōu)先調(diào)用以及數(shù)據(jù)庫訪問連接切換能力(參見使用文檔[6])。
中間件和數(shù)據(jù)庫:
云上部署 MSE 托管 ZK/Nacos 注冊中心、云數(shù)據(jù)庫 Redis 和 RDS,建議使用跨可用區(qū)部署高可用版本,具備同城雙活容災(zāi)能力。 若存在某應(yīng)用僅 IDC 部署的情況,需要配置注冊中心的服務(wù)同步(參見使用文檔[7])。 配置云數(shù)據(jù)庫 Redis/RDS 和自建 Redis/MySQL 的數(shù)據(jù)同步(參見使用文檔[8])。
改造后的應(yīng)用部署架構(gòu)



RPO:<=1min(依賴于 DTS 同步性能)
RTO:<=1min(依賴于 DTS 同步延遲,MSHA 組件實(shí)現(xiàn)秒級切換。整體 RTO<=1min)
7.1 演練準(zhǔn)備
進(jìn)入 MSHA 控制臺(tái),在左側(cè)菜單欄選擇監(jiān)控大盤。頁面頂部,下拉選擇切換到實(shí)際使用的命名空間。
查看頁面中的各項(xiàng)監(jiān)控指標(biāo)。

7.2 應(yīng)用故障注入
進(jìn)入?Chaos 故障演練產(chǎn)品控制臺(tái)[9],頂部選擇切換到相應(yīng)地域,左側(cè)導(dǎo)航欄選擇我的空間。
在我的空間選擇配置好的演練(50% 概率網(wǎng)絡(luò)丟包),然后單擊執(zhí)行演練。



7.3 切流恢復(fù)
預(yù)期

切流操作

3. 單擊執(zhí)行預(yù)檢查,在切流檢查區(qū)域,單擊確認(rèn),開始切流。
4. 在切流任務(wù)頁面的當(dāng)前狀態(tài)顯示切流完成,表示切流已成功。

5. 刷新電商 Demo 首頁,多次訪問均能正常展示,符合預(yù)期。


7.4 數(shù)據(jù)庫故障注入

7.5 切換數(shù)據(jù)庫進(jìn)行恢復(fù)
預(yù)期
應(yīng)用連接的數(shù)據(jù)庫切換到杭州后,業(yè)務(wù)完全恢復(fù),不受北京單元的故障影響。

切流操作
1. 進(jìn)入 MSHA 控制臺(tái),在左側(cè)導(dǎo)航欄選擇異地應(yīng)用雙活>數(shù)據(jù)層配置。
2.在數(shù)據(jù)保護(hù)規(guī)則列表中,找到商品、訂單、購物車數(shù)據(jù)庫,逐個(gè)點(diǎn)擊主備切換。

3. 點(diǎn)擊主備切換后,會(huì)進(jìn)入預(yù)檢查頁面,確認(rèn)各檢查項(xiàng)狀態(tài)正常后,點(diǎn)擊在確認(rèn)執(zhí)行,則進(jìn)入切換詳情頁,并自動(dòng)執(zhí)行切換流程。

4. 主備切換詳情頁,可以看到切換進(jìn)度和切換結(jié)果,任務(wù)進(jìn)度 100% 后,表示切換完成。


5. 商品、訂單、購物車數(shù)據(jù)庫都主備切換完成后。多次訪問電商 Demo 首頁或進(jìn)行下單,發(fā)現(xiàn)均已正常,主備切換后業(yè)務(wù)功能完全恢復(fù),符合預(yù)期。


總結(jié)
Cloud Native
相關(guān)閱讀
Cloud Native
[1]?MSHA 云原生多活容災(zāi)解決方案
https://www.aliyun.com/product/aliware/ahas/msha
[2]?DNS 解析生效時(shí)間 FAQ
https://help.aliyun.com/document_detail/39837.html
[3]?多接入方式構(gòu)建企業(yè)級混合云文檔
https://help.aliyun.com/document_detail/181844.html
[4]?使用文檔
https://help.aliyun.com/document_detail/184980.html
[5]?使用文檔
https://help.aliyun.com/document_detail/328617.html
[6]?使用文檔
https://help.aliyun.com/document_detail/295852.html
[7]?使用文檔
https://help.aliyun.com/document_detail/369539.html
[8]?使用文檔
https://help.aliyun.com/document_detail/184971.html
[9]?Chaos?故障演練產(chǎn)品控制臺(tái)
https://common-buy.aliyun.com/?commodityCode=ahas_001#/buy
[10]?Chaos 故障演練
https://common-buy.aliyun.com/?commodityCode=ahas_001#/buy
延伸閱讀
MSHA 多活容災(zāi)解決方案首頁: https://www.aliyun.com/product/aliware/ahas/msha
MSHA 支持的 4 種容災(zāi)架構(gòu)介紹: https://help.aliyun.com/document_detail/338374.html
Chaos 故障演練產(chǎn)品首頁: https://www.aliyun.com/product/aliware/ahas/chaos
文章轉(zhuǎn)載:阿里巴巴云原生
(版權(quán)歸原作者所有,侵刪)
![]()

點(diǎn)擊下方“閱讀原文”查看更多
