云原生應用——CDN場景下的自動化評測

Part 01、什么是云原生下的CDN
CNCF對云原生(Cloud Native)的定義:
- 云原生技術有利于各組織在公有云、私有云和混合云等新型動態環境中,構建和運行可彈性擴展的應用。
- 云原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API。
- 這些技術能夠構建容錯性好、易于管理和便于觀察的松耦合系統。
- 結合可靠的自動化手段,云原生技術使工程師能夠輕松地對系統作出頻繁和可預測的重大變更。
?CDN是廣義邊緣計算已落地的典型應用,通過邊緣服務節點下沉,內容更貼近用戶,有效改善業務感知。通過CDN的云化改造,釋放邊緣服務節點計算資源,提供容器管理技術為第三方應用落地邊緣,提升資源利用率。
主要應用場景為三類:網頁加速、下載加速、視音頻點播/直播加速。
云原生CDN系統主要包括云化邊緣節點以及邊緣云平臺和配套的云管平臺。云管平臺主要提供資源池管理、資源管理、輔助運營管理、流程管理、運維管理等功能,邊緣云平臺主要提供容器化部署環境,并可根據業務需求滿足存儲、網絡、CPU、內存等資源的管理和分配。

Part 02、測試工具選型

云原生CDN測試的一大難點在于構建云原生測試場景難度高、測試時間長。阿里巴巴開源的Chaosblade--一個簡單易用且功能強大的混沌實驗實施工具,除了基礎的CPU、disk、I/O、network外,還支持docker、dubbo、jvm的攻擊,同時支持攻擊后迅速回滾,是在k8s部署方式下最優方案,正好可以幫助我們構建豐富的云原生CDN的測試場景。
Chaosblade支持豐富的實驗場景:
- 基礎資源:比如CPU、內存、網絡、磁盤、進程等實驗場景;
- Java應用:比如數據庫、緩存、消息、JVM本身、微服務等,還可以指定任意類方法注入各種復雜的實驗場景;
- C++應用:比如指定任意方法或某行代碼注入延遲、變量和返回值篡改等實驗場景;
- Docker容器:比如殺容器、容器內CPU、內存、網絡、磁盤、進程等實驗場景;
- 云原生平臺:比如Kubernetes平臺節點CPU、內存、網絡、磁盤、進程實驗場景,Pod網絡和Pod本身實驗場景如殺Pod,容器的實驗場景如上述的Docker容器實驗場景;
?針對云原生平臺,chaosblade-operator遵循混沌實驗模型規范化實驗場景,把實驗定義為Kubernetes CRD資源,將實驗模型映射為Kubernetes資源屬性,很友好的將混沌實驗模型與Kubernetes聲明式設計結合在一起,依靠混沌實驗模型便捷開發場景的同時,又可以很好的結合Kubernetes設計理念,通過kubectl或者編寫代碼直接調用Kubernetes API來創建、更新、刪除混沌實驗,而且資源狀態可以非常清晰的表示實驗的執行狀態,標準化實現Kubernetes故障注入。
綜上所述,我們可以使用chaosblade-operator構建云原生CDN的測試場景,提高云原生CDN的測試效率。
Part 03、故障注入
評測云原生CDN平臺的業務高可用和流量調度功能,需要在各類異常場景下驗證業務訪問的連續性與正確性。根據上文調研,我們使用chaosblade-operator混沌工具來實現異常場景的故障注入。具體使用方式如下:
1.下載安裝chaosblade-operator
根據上述命令,chaosblade-operator會被安裝至kube-system命令空間下。chaosblade-operator啟動后會在每個節點部署chaosblade-tool Pod和一個chaosblade-operator Pod。
2.查看安裝結果
如果顯示chaosblade-operator和chaosblade-tool Pod都處于Running狀態,則說明部署成功。如果部署出現問題,可以查看chaoblade部署文檔。
3.識別故障注入的類型、故障輸入值、故障node名稱、故障持續時間等參數。
故障類型包括:CPU、內存、磁盤、網絡斷開、節點掛掉。

4.根據識別的故障注入參數,執行故障注入命令(達到持續時間后自動銷毀),如:
5.返回故障注入結果,故障注入成功
Part 04、工具集成
解決了云原生測試場景構建的難題,接下來就是將工具與云原生CDN業務結合,研發一套云原生CDN自動化測試平臺,進一步提高測試效率。云原生CDN自動化測試平臺的整體設計流程如下:

自動化的主要內容包括模擬業務訪問、分析業務日志、故障注入。
- 第一步:模擬業務訪問,在云原生CDN節點生成業務日志;
- 第二步:獲取業務日志并進行分析,得到相關業務指標,如狀態碼、命中狀態、節點IP等;
- 第三步:使用chaosblade工具進行故障注入;
- 第四步:繼續模擬業務訪問;
- 第五步:獲取并分析業務日志,將得到的業務指標與故障注入的指標進行對比分析,判斷結果是否與預期相同,得到故障注入給業務帶來的影響。
通過該云原生CDN自動化測試平臺,我們可以有效地對CDN業務的調度、內容管理、分發安全等相關功能進行測評,降低測試難度,提高測試效率。最終的云原生CDN自動化測試平臺界面如下:

Part 05、總結
結合混沌工程技術,我們可以快速地構建云原生的各類測試場景,降低云原生平臺測試難度。該云原生CDN自動化測試平臺已應用于日常版本與試點測試中,整體提升測試效率40%,保障了CDN業務虛擬化遷移的質量。目前,杭研vCDN能力已達到行業水平,基于vCDN的邊緣能力已落地16個省份,承載家庭安防、VR、OTT等to H業務和現網to B、to N業務,服務用戶數超千萬。



























