隨著互聯網的快速發展,傳統的單工程的性能瓶頸越發明顯,分布式系統的優點越發突出。分布式系統具有廉價高效的特點,利用性能相對一般的PC橫向擴展,提升服務器性能,通過軟件來保障系統的高可靠性。
由于分布式系統存在API接口通信、微服務架構、節點規模大等特點,增加了系統的復雜性和出錯的概率,從而很難確保系統的容錯機制得到充分的驗證,依賴自動化工具來完成對系統端到端驗證是不可避免的。
Netflix和類似互聯網企業構建的大規模的分布式系統,不可避免地會發生如機器崩潰和網絡延遲等故障。為了給客戶提供“永遠在線”的體驗,建立系統可以可靠運行的信心。需要軟件能夠檢測、處理各種錯誤情況,除了少量發生概率較低的極端故障。
華為云可靠性解決方案
在業界,混沌工程被定義為“在分布式系統上進行實驗, 以建立對系統抵御生產環境中失控條件的能力的信心”。
基于華為在ICT領域10多年的軟件可靠性測試經驗,以及工程師們的千萬個夜以繼日,華為云推出了在混沌工程領域應用實踐的一套完整的解決方案。目標是沉淀通用的故障模式,從入門到精通,從研發到生產,層層推進,以在線演練和專業測評來持續暴露問題,“防止失敗的最佳方法就是經常失敗,在真實環境測試,而不是模擬環境”,通過線上真實的問題來推動產品全方位的改進。
1、全面有效的故障模式庫
基于華為在ICT領域10多年的實踐積累和數百產品的實際應用的沉淀,電信領域軟件的高要求,我們通過正向分析、事故分析、業界案例分析三個維度建立全面的故障模式庫。
2、精準高效的故障模擬
我們通過軟件模擬各種硬件故障,對應用無侵入,而且跟應用的實現語言無關。
3、端到端全自動化測評
我們實現了智能識別故障對象,而且全自動化運行,自動度量KPI,自動實現風險評估,生成測評報告,測試工程可反復執行。防止失敗的最佳方法就是經常失敗。在真實環境測試,而不是模擬環境。通過我們的端到端全自動化測評,可以實現這個目標。
華為云混沌工程應用場景
入門級可靠性測試:手工注入
功能:提供對Kubernetes集群、彈性云服務器的單業務實例、單故障模式的注入。
適用場景:開發人員針對確定故障的自驗證;測試人員針對可靠性問題回歸驗證等。
特點:操作簡單,故障注入/清除結果及系統的表現清晰可見。
手工注入是混沌工程的入門級功能,操作非常容易,結果直接清晰。
1、首先在服務所在的容器集群或者節點上安裝探針,一鍵安裝,秒級創建,速度很快;
2、然后選擇注入對象和注入的故障,還可以選擇設置告警、CPTS壓測工程,就可以完成一次故障注入;
3、再接著就是以5分鐘為維度獲取監控數據生成測試報告;
4、最后你就可以基于報告來評估服務可靠性的質量了。
全流程可視化操作,只用鼠標點點點就可以了;簡單易用,使用門檻低,非常方便開發者和測試人員進行基本的可靠性測試。
進階級可靠性測試:故障演練
功能:提供對單工作負載的隨機故障注入,預置了多種入門級和進階級演練場景。
適用場景:線下隨機故障注入測試;線上例行故障演練、專項演練等。
特點:模型化的場景定義、靈活的編排調度、豐富的評估報告。
故障演練主要使用場景是線上例行故障演練和專項演練。相比于手工注入,故障演練會提供多種入門級和進階級的演練場景。上圖為傳統的手工演練流程,與混沌工程提供的故障演練能力對比。
三、四年前我們還處于傳統手工演練階段,全流程的手工進行,后續逐步演變為現在混沌工程提供的全自動化故障演練能力,經我們自己實際使用對比,現在的自動化演練過程比手工更準確和規范,避免人為導致的差錯;可靠性專項測試人員投入的時間可以減少80%,端到端效率提升10倍以上。
我們提供如下的預置模板,同時也支持自定義演練任務。
高階級可靠性測試:自動測評
功能:提供對多工作負載全量的可靠性測評。
適用場景:云服務的全量可靠性測評;不同服務、不同版本的可靠性能力對比。
特點:智能對象識別、自動用例生成、無腳本化執行、自動KPI度量、豐富的評估報告。
自動測評最大的特點就是智能對象識別、自動用例生成、無需定制腳本的全自動化執行、自動KPI度量生成豐富的評估報告,可以對不同服務、不同版本的可靠性能力進行對比。
自動測評服務的智能對象識別能力,保證了故障對象覆蓋的全面性,能有效避免人工測試出現的遺漏。自動用例生成與無腳本化執行,大幅節省了用例設計和自動化腳本編寫的工作,同時降低了自動化可靠性測試對人員技能的要求。
系統預置了3種常見場景模板,同時支持用戶自定義。既可以用預置目標快速創建任務,也可以靈活的定制任務。
測評報告
混沌工程通過結合華為云上的CCE、ECS、CPTS、AOM、APM等服務,提供了一套完整的端到端的可靠性測試解決方案,解決了測什么、如何測、如何評價的問題。
在華為云上,云服務部署的載體要么是ECS的彈性云服務器,要么是CCE的容器集群,我們現在已經支持對CCE容器集群和彈性云服務器ECS(linux)進行故障注入。
CPTS服務可以實現對應用接口的壓測,在故障注入的同時運行,通過CPTS的報告用來評估故障對業務的影響。
AOM可以完成對容器、主機的資源監控,以及自定義閾值告警,故障注入后相關的監控數據和告警數據會被寫入混沌工程測試任務的報告中,然后根據可靠性質量評估方法實現自動KPI度量,生成評估報告。
APM提供了調用鏈功能,在故障注入后,利用調用鏈可以快速完成問題定位分析。
可靠性質量評估方法上,我們采用的是基于可靠性關鍵質量屬性的KPI評估方式,如下圖。從故障模式維度和測試對象維度對KPI進行分析,可以針對自己的服務特性,自主調整評估的參數,然后生成測評報告。
評估屬性和方法