# 業務連續性之阿里巴巴混沌工程實踐 ###### tags: `SRE2022` --- **Brian** > 故障不可避免 ## agenda 1. 分散式架構下的挑戰 2. de 混沌工程定義 - (2020 netflix 提出) 犯錯的藝術,故意在系統注入錯誤,看系統的反應 --- - 故障不可避免 - 知道故障要如何處理 ### 分散式架構下的挑戰 - 地端: 電力,網路線路 - Cloud: timeout, cache change, load balance cannot use - OS: CPU, Memory - AP: Config Change, hotfix, deploy policy - 依賴關係複雜 - 如何有效保障業務連續性 - 如何提前發現系統薄弱點,增進系統未來系統穩定性 混沌工程 - 透過有意的引入故障,了解系統可靠狀況 - 五大原則 - 最小化 - 實驗原則 -> 穩態假說 - 自動化運行實驗 - 真實事件 場景 - ChoasBlade - os - ap - container - cloud - aws - aliyun - Use - Create - Start choas injection - stop - report - 修復 solution - 微服務演練之強弱依賴演練, 解決服務間依賴關係 - 微服務演練之 Message Queue演練, 解決服務間 message 關係 - 容災演練之斷網演練,保障業務高可用性 - 雙 11 三個月前開始實驗 - 預案演練 - 保證預案有效性 > What does not kill me, makes me stronger -- 尼采 --- ## Chris - 各種故障 - AP面 - OS面 - 雲端面 - 管理好複雜的依賴關係 - 故障無法避免,但如何透過每次的故障檢視系統的弱點並改良 ### 混沌工程 核心:主動引入故障參數,驗證系統的影響 #### 原則 - 最小化爆炸半徑 - 穩態假說 - 真實事件 - 生產環境 - 自動化實驗 ### 阿里雲混沌工程經驗 - 工具:ChaosBlade 可以模擬各種故障場景 - Disk I/O - 網路延遲/掉封包 - K8S PoD異常 - JVM異常 ### 應用場景 - 依賴強弱演練 - MQ演練 - 斷網演練 透過演練,確保真實事件發生時能夠依訂定的SOP進行處理