混沌工程是一種通過實驗**的方式來讓我們理解系統行為的方法。 通過設計和執行一系列實驗, 幫助我們發現系統中潛在的、可以導致災難的或讓我們的使用者受損的脆弱環節, 推動我們主動解決這些環節存在的問題。
複雜的分布式系統
複雜的分布式系統會發生不可預知的、但很可能發生的事情, 導致各種災難。
混沌工程以探索式, 破壞式的方式來發現這些異常, 讓系統更加穩定。比如流量激增、資源競爭條件、拜占庭故障(例如效能差或有異常的節點發出錯誤的響應、異常的行為、對呼叫者隨機返回不同的響應等)、非計畫中的或訊息內容非正常組合的處理等。
其實混沌工程從大方向來說也是測試。
測試流程:
開發環境->測試環境->預發布環境->正式環境
有完整的測試用例, 有準確的預期結果, 越早測試越好
測試也有探索式測試, 場景測試, 這些都是相通的
混沌工程流程:
選定假設->設定範圍->計畫監控指標->執行->分享結果->擴大範圍->自動化實驗
離正式環境越近測試效果越好(當然必須要在其他環境先測一遍, 這樣可以在正式環境之前發現85%的問題), 沒有準確的預期結果, 所以要有監控指標和隨時stop的能力.
為了具體地解決分布式系統在規模上的不確定性,可以把混沌工程看作是為了揭示系統弱點而進行的實驗。破壞穩態的難度越大,我們對系統行為的信心就越強。如果發現了乙個弱點,那麼我們就有了乙個改進目標。避免在系統規模化之後問題被放大。以下原則描述了應用混沌工程的理想方式,這些原則來實施實驗過程。對這些原則的匹配程度能夠增強我們在大規模分布式系統的信心。
工具介紹
simoorg
simoorg是linkedin開發的故障注入工具。它非常易於擴充套件, 並且其中的很多關鍵元件都是可插拔的。
pumba
pumba是基於docker的混沌工程測試工具以及網路模擬工具。
chaos lemur
chaos lemur是用來測試高可用性系統彈性的工具, 可以在本地進行部署, 允許隨機關閉bosh虛擬機器。
chaos lambda
chaos lambda是在辦公期間隨機關閉aws asg節點的工具。
blockade
blockade是基於docker的、可以測試網路故障和網路分割槽的工具。
chaos-http-proxy可以像http請求注入故障的**伺服器。
monkey-ops
monkey-ops是用go語言實現的, 可以在openshift v3.x上部署並且可以在其中生成混沌工程實驗。monkey-ops可以隨機停止openshift元件, 如pod或者deploymentconfig。
chaos dingo
chaos dingo目前支援在azure相關服務上進行實驗。
tugbot
tugbot是在使用docker的生產環境中進行測試的框架。
更加具體的請自行閱讀chaos engineering
如何實施還是要團隊不斷的實踐
暗中進行->適當投入度->正式採用->成為文化
參考
混沌工程是什麼 什麼是混沌猴子? 混沌工程解釋
混沌工程是什麼 根據最初關於該主題的netflix部落格文章 該文章由當時的雲和系統基礎架構總監yury izrailevsky和流 公司的雲解決方案總監ariel tseitlin於2011年7月發布,chaos monkey旨在隨機禁用以下產品的生產例項 其amazon web services...
當Prometheus遇到混沌工程
最近容器組在開發雲平台的監控 報警功能。大致的實現策略是 1 雲平台頁面上配置告警規則 2 prometheus完成監控資料的聚合 3 當prometheus聚合後的監控資料滿足告警規則,觸發釘釘告警 1 告警規則配置,一般情況下,業務服務的服務型別為deployment。告警規則 pod記憶體使用...
B 智慧型運維 質量保障 混沌工程
b.智慧型運維 質量保障 混沌工程 概述 目的 混沌工程是在分布式系統上進行實驗的學科,目的是建立對系統抵禦生產環境中失控條件的能力以及信心。我們需要在異常行為出現之前,在整個系統內找出這些弱點。這些弱點包括以下形式 當服務不可用時的不正確回滾設定 不當的超時設定導致的重試風暴 由於下游依賴的流量過...