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