天天看點

技術應用 | 基于雲原生的混沌工程實踐

作者:金融電子化

文 / 北京銀行軟體開發中心平台架構研發團隊主管 王子健

近年來,雲原生的普遍流行、微服務架構的落地、新型開源技術元件的快速引進,平衡系統疊代、技術更新與系統穩定,支撐靈活開發與疊代上線日趨頻繁的現狀,使得銀行科技發展面臨巨大轉型挑戰。

在此背景下,北京銀行于2021年11月,通過混沌工程測試了基于雲原生的統一技術底座的健壯性,驗證并提升平台服務能力,并于2022年7月開始混沌工程建設工作。

平台級混沌測試實踐探索

為推進數字化轉型戰略,北京銀行于2021年1月完成基于雲原生的應用技術架構體系建設,實作了業界主流的基于微服務、分布式架構設計的統一技術底座。統一技術底座屬于雲原生架構體系的自研技術平台,本身健壯性、可靠性需要在已有測試方法基礎上增加專項測試環節,微服務架構群組件需要外部測評檢驗綜合能力,提出優化方案,驗證平台下限的抗擊打能力,提升平台上限的服務治理水準。同時,統一技術底座應用規模化推廣過程中,近40套業務系統基于底座開發和部署,其中包含了分布式核心、新櫃員系統等關鍵系統。不僅如此,統一技術底座帶動整個軟體研發體系向微服務、分布式架構轉變,相應的業務系統複雜度、運作安全性要求、應急處置難度均随之提升,需要與之相配套的模拟測試和演練實驗方法論。平台自身穩定性和故障應對能力影響深遠,必須進行專項的故障模拟驗證,符合國家資訊安全等級保護要求。針對可信安全基礎設施的相容性、高可用、故障恢複能力(MTTR)需要進行測試驗證,在此背景下,開展了混沌工程能力建設和持續實踐。

2021年8月起,北京銀行針對統一技術底座進行混沌測試。測試周期曆時3個月,圍繞統一技術底座的容器雲和微服務元件,結合生産環境IaaS基礎設施備援切換經驗,滿足信創化測試要求,輔以雲原生可觀測性基礎能力,以分布式核心系統、新櫃員系統為試點驗證混沌工程在應用場景化領域的拓展效果。

整體混沌工程實踐從驗證系統高可用性、容錯能力、可觀測性、自愈能力等方面進行,共執行175個故障場景、500餘個測試用例,發現37項平台穩定性能力完善,雲原生成熟度由2級(基礎級)提升至4級(優秀級)。首次混沌測試覆寫基礎資源、平台、應用中間件、監控告警、災備、應急預案,從基礎測試到組織流程,大大提高了技術架構的彈性能力,提升雲原生新核心系統上線信心,增強抵抗高度複雜應用架構下不确定性因素影響的能力,驗證了統一開發平台的健壯性,驗證并提升平台服務能力,保證統一技術底座按照計劃開展業務推廣。

混沌工程平台一期建設實踐

為提升混沌演練能力,保證重大系統定期進行混沌測試的計劃,北京銀行于2022年建設本地化混沌工程測試平台。2022年中,開展混沌工程一期建設項目,建設混沌工程平台,建構故障模拟演練場景庫,形成針對微服務、分布式架構的高可用能力矩陣。完成一套體系化的混沌工程平台建設,其中包括基礎設施納管、故障場景、媒體管控、場景庫管理、演練計劃、實驗流程、實驗防護、實驗觀測、實驗報告、權限管理及安全審計等能力。

演練素材方面,多種故障因子、場景庫以及名額庫可供選擇。混沌工程平台分别從系統程序、方法調用、硬體資源、網絡傳輸、應用資料五個次元,結合選取的測試範圍,設計129個故障因子,這些故障因子基于Kubernetes、實體裝置、虛拟主機等類型,具備自定義方式快速組合的能力,建立混沌實驗時可根據實驗環境選擇合适的原子故障。可根據發生頻率和曆史生産故障選取常用故障因子作為高頻故障因子,可在故障演練中優先選擇進行測試。同時,提供了場景庫模式,可針對不同類型原子故障的進行組合編排,串聯、并行組裝執行故障注入測試,建立後的場景庫也可在各類環境、系統、項目測試案例中多次使用。名額庫提供多層次多角度的系統監測和名額政策配置功能,實驗選擇故障原子後會自動比對相應的觀測名額,實時觀測名額變化,為實驗結果提供參考。

演練過程方面,提供多種故障注入方式、啟動政策、執行方式。多種故障注入啟動政策,包括手動執行、按計劃執行以及随機執行,演練過程靈活可控,可随時手動暫停實驗、恢複環境或終止故障注入,還提供基于名額和告警的智能終止控制。為保障演練安全,支援對爆炸半徑進行控制,對演練環境快速進行恢複;支援一鍵終止和暫停的手動保護機制,同時支援基于名額、告警的智能終止等功能來保障演練安全性。

結果觀測方面,基于項目對混沌工程實驗、實驗記錄及實驗基線進行分類劃分,測試人員可以更專注于針對項目下的服務、資源和應用進行實驗,有針對性的建立專屬于某個項目的混沌工程實驗計劃,同時有效地避免實驗資源及對象的沖突。提供排期功能,解決因實驗資源沖突而導緻實驗無法正常進行,或實驗結果不準确的情況,根據資源進行實驗排期,合理利用有效資源開展混沌實驗。實驗結果顯示實驗編排情況、名額概覽、實驗事件;展示實驗是否成功,可根據名額情況分析該故障是否産生較大影響;自動根據實驗結果提供實驗報告,可編輯可導出;實驗流程的開始時間、結束時間、曆時、執行情況;實驗流程中各階段性能表現和實驗趨勢圖。

2022年11月末,混沌工程平台一期項目正式傳遞使用,目前北京銀行混沌工程平台支援從多個層級進行系統全覆寫測試。首先,硬體伺服器、容器雲平台、微服務元件等基礎設施和公共元件層面,均提供相配适故障類型,可根據實驗環境特征進行對應實驗編排。其次,在系統層面,針對核心、櫃員系統等重要系統,借助混沌測試工具進行場景分析,編寫腳本程式自動化注入故障因子,批量完成測試任務。同時,混沌平台對接監控告警系統,利用雲原生監控手段,實驗全階段可視化。

自平台上線運作以來,設計實驗計劃300餘條,執行實驗1500餘次,平均一條實驗計劃調整五次參數進行實驗,複用率較高,其中符合實驗預期的結果占實驗總數的99.32%。

針對使用情況進行統計,其中PodCPU滿載、Pod伸縮、Pod網絡延遲是最常用的三種故障類型。通過混沌演練發現多種缺陷漏洞,提前整改。實作的功能如:通過注入網絡延遲故障,發現系統上下遊逾時時限設定問題,提出合理性逾時配置建議,提升系統間關聯處理健壯性;通過混沌工程平台提供的故障觀測能力,發現系統投産前監控告警門檻值未設定或設定不合理,提出合理性監控名額門檻值建議,提前預見監控缺失帶來的問題監測失效;通過注入Pod伸縮故障,發現系統Pod重新開機過程中發生業務中斷,提出合理性優雅停機配置建議,提升特殊狀态下的業務連續性水準;通過強制殺死服務、網絡延遲大于逾時時間、記憶體溢出等故障實驗,針對批處理或批量交易終端,驗證批量交易缺乏補償機制,投産前制定了針對性的人工幹預重跑預案。

混沌工程平台的使用相較于傳統測試方法有較大優勢。與手工注入故障相比,利用混沌工程平台自動化注入故障簡單便捷,操作步驟大大提高了效率,使用者體驗良好。實驗結果統計次元一目了然,便于整體統計分析。從項目管理次元對實驗進行管理,使實驗更加比對業務特征。與此同時,總結了一套基于故障注入演練的實施方法論。通過制定混沌測試指南,面向開發人員對混沌測試概念、實施方法、結果分析、缺陷修複、報告編寫等環節做了較長的描述。通過定義混沌測試整體流程,使開發人員明确混沌中的需求調研故障演練準備和實施、結果分析和缺陷修複,以及報告總結的流程,便于混沌測試推廣和開展。

混沌工程平台二期建設實踐

在2022年混沌工程平台的功能基礎上,2023年年中開展了混沌工程二期建設項目,新增多核心能力建設,納管開源多類型原子故障庫,除現有支Kubernetes、主機類型故障外,支援跨平台作業系統、中間件和Windows作業系統類故障注入。進行強弱依賴能力建設,對接統一平台,擷取微服務架構,感覺展示服務之間的依賴關系,驗證系統預設的限流、熔斷、降級等政策。建設體檢套餐能力,将實驗經驗做為故障風險檢查點,針對不同技術棧群組件組合設計故障風險檢查套餐,各場景經驗庫整合編排,形成同種類型體檢套餐。通過對接測管平台,建構統一的測試平台,統一管理傳統測試和混沌測試。使得混沌工程演練能力大幅度提高。

混沌工程與開發、測試、運維、業務等體系相結合,為業務連續性提供技術保證。目前,北京銀行獲評中國信通混沌工程實驗室副理事長機關、混沌工程通過等保金标三級,雲原生成熟度顯著提升,已形成針對微服務、分布式架構的高可用能力矩陣。

未來,北京銀行資訊科技立足穩字當頭、穩中求進的總方針,将在金融科技創新的穩定性建設方面投産更大投入、更強支撐,為滿足雲原生應用體系下的更多更複雜的實驗場景,将持續深入地開展混沌工程平台建設,全面推廣已建平台在穩定性測試方面的檢驗檢查工作。面向新金融場景化的業務價值傳遞,提供更為全面、更加可靠的穩定性驗證體系,為全行數字化轉型保駕護航。

(此文刊發于《金融電子化》2024年3月下半月刊)

繼續閱讀