近日,阿里開源了混沌工程工具 ChaosBlade。該項目是遵循混沌工程(Chaos Engineering)原理的實驗工具,用於模擬常見的故障場景,幫助提升分布式系統的可恢復性和對故障的容錯性。
高可用架構是保障服務穩定性的核心。ChaosBlade 經歷了 6 年時間的改進和實踐,累計在線上執行演練場景達數萬次,阿里官方將阿里巴巴在故障演練領域的創意和實踐,濃縮成了一個混沌工程工具,並將其開源。
阿里巴巴集團在混沌工程領域已經實踐多年,將混沌實驗工具 ChaosBlade 開源目的,目的是:
ChaosBlade 能解決哪些問題△ ChaosBlade 的組件架構
衡量微服務的容錯能力
通過模擬調用延遲、服務不可用、機器資源滿載等,查看發生故障的節點或實例是否被自動隔離、下線,流量調度是否正確,預案是否有效,同時觀察系統整體的 QPS 或 RT 是否受影響。在此基礎上可以緩慢增加故障節點範圍,驗證上遊服務限流降級、熔斷等是否有效。最終故障節點增加到請求服務超時,估算系統容錯紅線,衡量系統容錯能力。
驗證容器編排配置是否合理
通過模擬殺服務 Pod、殺節點、增大 Pod 資源負載,觀察系統服務可用性,驗證副本配置、資源限制配置以及 Pod 下部署的容器是否合理。
測試 PaaS 層是否健壯
通過模擬上層資源負載,驗證調度系統的有效性;模擬依賴的分布式存儲不可用,驗證系統的容錯能力;模擬調度節點不可用,測試調度任務是否自動遷移到可用節點;模擬主備節點故障,測試主備切換是否正常。
驗證監控告警的時效性
通過對系統注入故障,驗證監控指標是否準確,監控維度是否完善,告警閾值是否合理,告警是否快速,告警接收人是否正確,通知渠道是否可用等,提升監控告警的準確和時效性。
定位與解決問題的應急能力
通過故障突襲,隨機對系統注入故障,考察相關人員對問題的應急能力,以及問題上報、處理流程是否合理,達到以戰養戰,鍛鍊人定位與解決問題的能力。
功能和特點場景豐富度高
ChaosBlade 支持的混沌實驗場景不僅覆蓋基礎資源,如 CPU 滿載、磁碟 IO 高、網絡延遲等,還包括運行在 JVM 上的應用實驗場景,如 Dubbo 調用超時和調用異常、指定方法延遲或拋異常以及返回特定值等,同時涉及容器相關的實驗,如殺容器、殺 Pod。後續會持續的增加實驗場景。
使用簡潔,易於理解
ChaosBlade 通過 CLI 方式執行,具有友好的命令提示功能,可以簡單快速的上手使用。命令的書寫遵循阿里巴巴集團內多年故障測試和演練實踐抽象出的故障注入模型,層次清晰,易於閱讀和理解,降低了混沌工程實施的門檻。
場景擴展方便
所有的 ChaosBlade 實驗執行器同樣遵循上述提到的故障注入模型,使實驗場景模型統一,便於開發和維護。模型本身通俗易懂,學習成本低,可以依據模型方便快捷的擴展更多的混沌實驗場景。
△ ChaosBlade 場景覆蓋圖
近期規劃主要是功能迭代,包括:
參考:ChaosBlade 項目介紹、阿里巴巴中間件