如何在物理機上運行混沌試驗?
譯文【51CTO.com快譯】Chaos Mesh®是一個云原生混沌工程(Chaos Engineering)平臺,負責編排Kubernetes環境中的混沌。借助Chaos Mesh,您可以模擬種種故障,并使用Chaos Dashboard這個Web UI直接管理混沌試驗。自開源以來,Chaos Mesh已被許多公司采用,以確保其系統的彈性和穩健性。但在過去的一年,我們常聽到社區的要求,詢問服務沒有部署在Kubernetes上時如何運行混沌試驗。
什么是chaosd?
chaosd是一個增強的工具包,可滿足物理機上的混沌測試日益增長的需求。您可能會覺得這個名字很熟悉!那是由于它是從Chaos Mesh中的一個關鍵組件chaos-daemon演變而來的。
在TiDB黑客馬拉松2020上,我們重構了chaosd,使其不僅僅是一個命令行工具。現在有了chaosd v1.0.1,您可以模擬針對物理機的特定錯誤,然后像什么沒發生一樣撤消混沌試驗。
chaosd的功能特性
chaosd的最新升級版擁有廣泛的功能,以下是最突出的幾項:
- 易于使用:可以使用chaosd 命令輕松創建和管理混沌試驗。
- 多種故障類型:可以在不同級別模擬物理機上注入的故障,包括進程故障、網絡故障、Java虛擬機(JVM)應用程序故障、壓力場景、磁盤故障和主機故障。
- 多種工作模式:可以將chaosd 用作命令行工具或服務。
事不宜遲,不妨試一試。
如何使用chaosd?
這部分將逐步介紹如何使用chaosd注入網絡故障。您的Linux內核版本必須是v2.17或更高版本。
1.下載并解壓chaosd
要下載chaosd,請運行以下命令:
- curl -fsSL -o Chaosd-v1.0.1-linux-amd64.tar.gz https://mirrors.chaos-mesh.org/chaosd-v1.0.1-linux-amd64.tar.gz
解壓縮文件。它含有兩個文件夾:
- chaosd含有chaosd的工具入口。
- tools含有進行混沌試驗所需的工具,包括stress-ng(模擬壓力場景)、Byteman(模擬JVM應用程序故障)和PortOccupyTool(模擬網絡故障)。
2. 創建混沌試驗
在這個混沌試驗中,服務器將無法訪問chaos-mesh.org。
運行以下命令:
- sudo ./chaosd attack network loss --percent 100 --hostname chaos-mesh.org --device ens33
示例輸出:
- Attack network successfully, uid: c55a84c5-c181-426b-ae31-99c8d4615dbe
在該模擬中,ens33網絡接口卡無法向chaos-mesh.org發送網絡數據包或無法從chaos-mesh.org接收數據包。之所以要使用sudo命令,是由于混沌試驗修改了網絡規則,這需要root權限。
另外,別忘了保存混沌試驗的uid。您稍后將在恢復過程中輸入該信息。
3. 驗證結果
使用ping命令查看服務器是否可以訪問chaos-mesh.org:
- ping Chaos-mesh.org
- PING Chaos-mesh.org (185.199.109.153) 56(84) bytes of data.
執行該命令后,該網站很可能不會響應。按CTRL+C組合鍵以停止ping進程。您應該可以看到ping命令的統計信息:100% packet loss(100%丟包)。
示例輸出:
- 2 packets transmitted, 0 received, 100% packet loss, time 1021ms
4. 恢復試驗
要恢復試驗,運行以下命令:
- sudo ./chaosd recover c55a84c5-c181-426b-ae31-99c8d4615dbe
示例輸出:
- Recover c55a84c5-c181-426b-ae31-99c8d4615dbe successfully
這一步還需要使用sudo命令,因為需要root權限。完成恢復試驗后,再次嘗試ping chaos-mesh.org,以驗證連接。
下幾步
1.支持儀表板Web
如您所見,chaosd易于使用。但是我們可以讓它變得更簡單——面向chaosd的儀表板Web目前正在積極開發中。
我們將繼續增強其可用性,并實現更多的功能,比如管理使用chaosd運行的混沌試驗以及使用Chaos Mesh運行的混沌試驗。這將為Kubernetes和物理機上的混沌測試提供一致且統一的用戶體驗。
下面的架構只是一個簡單的例子:
圖1. Chaos Mesh的優化后架構
2.添加更多的故障注入類型
目前,chaosd提供六種故障注入類型。我們計劃開發得到Chaos Mesh支持的更多類型,包括HTTPChaos和IOChaos。
如果您有興趣幫助我們改進chaosd,歡迎選擇一個問題單,開始入手!
試一試!
如果您有興趣使用chaosd,并想探索更多,請查看文檔。如果您在運行chaosd時遇到問題,或者有功能請求,請隨時創建問題單。我們很想聽到您的聲音!
原文標題:How to Run Chaos Experiments on Your Physical Machine,作者:Xiang Wang
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】