關於混沌工程

2021-10-05 01:15:54 字數 1708 閱讀 4042

混沌工程是一種通過實驗**的方式來讓我們理解系統行為的方法。 通過設計和執行一系列實驗, 幫助我們發現系統中潛在的、可以導致災難的或讓我們的使用者受損的脆弱環節, 推動我們主動解決這些環節存在的問題。

複雜的分布式系統

複雜的分布式系統會發生不可預知的、但很可能發生的事情, 導致各種災難。

混沌工程以探索式, 破壞式的方式來發現這些異常, 讓系統更加穩定。比如流量激增、資源競爭條件、拜占庭故障(例如效能差或有異常的節點發出錯誤的響應、異常的行為、對呼叫者隨機返回不同的響應等)、非計畫中的或訊息內容非正常組合的處理等。

其實混沌工程從大方向來說也是測試。

測試流程:

開發環境->測試環境->預發布環境->正式環境

有完整的測試用例, 有準確的預期結果, 越早測試越好

測試也有探索式測試, 場景測試, 這些都是相通的

混沌工程流程:

選定假設->設定範圍->計畫監控指標->執行->分享結果->擴大範圍->自動化實驗

離正式環境越近測試效果越好(當然必須要在其他環境先測一遍, 這樣可以在正式環境之前發現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.智慧型運維 質量保障 混沌工程 概述 目的 混沌工程是在分布式系統上進行實驗的學科,目的是建立對系統抵禦生產環境中失控條件的能力以及信心。我們需要在異常行為出現之前,在整個系統內找出這些弱點。這些弱點包括以下形式 當服務不可用時的不正確回滾設定 不當的超時設定導致的重試風暴 由於下游依賴的流量過...