Categories
程式開發

AWS開源混沌工程工具AWSSSMChaosRunner


AWS的工程師們最近寫了一篇文章,介紹了一個叫作AWSSSMChaosRunner的開源混沌工程工具,他們用它來測試Prime Video的故障注入。這個工具使用AWS Systems Manager構建,可以在EC2實例上執行任意命令,團隊可以用它緩解與延遲相關的問題。

AWSSSMChaosRunner是使用AWS Systems Manager構建的,用於針對一組特定的EC2實例遠程執行命令。通過聲明方式指定的命令集合創建了一組注入錯誤。

Prime Video軟件工程師Varun Jewalikar和AWS首席開發者(架構)佈道師Adrian Hornsby寫道,典型的混沌工程實驗包括模擬資源耗盡和緩慢的網絡。對於這樣的場景有一些對策,但“它們很少得到充分測試,因為單元測試或集成測試通常不能充分驗證它們”。

AWS系統經理是一個工具,可以通過一個叫作SSM代理的代理組件跨AWS資源執行各種運維任務。默認情況下,代理被預先安裝在某些Windows和Linux AMI上——它們也有“文檔”的概念,類似於可以執行的Runbook。它還可以執行簡單的shell腳本,AWSSSMChaosRunner就是利用了這個特性。 SSM的SendCommand API允許跨多個實例執行命令,這些實例可以通過AWS標記來過濾。 CloudWatch可以用於在一個地方查看來自所有實例的日誌。

安全方面的問題由代理負責,比如創建在EC2實例上執行的用戶。 AWSSSMChaosRunner可以做的事情包括在一個特定端口上悄悄地中斷所有傳出的TCP流量、在一個接口上引入網絡延遲、佔用CPU,等等。需要注意的是,當前支持的故障注入要么是在基礎設施上,要么是在AWS服務層上。

AWSSSMChaosRunner源自一組SSM文檔,這些文檔與將故障注入AWS資源有關。根據文中所寫,在使用標準SSM Agent API執行文檔之後,負載生成組件根據應用程序模擬真實的流量。 AWSSSMChaosRunner也可以用於ECS,但不能用於Lambda,因為後者是一個完全託管的服務。還有其他方法可以在AWS Lambda中進行故障注入。

Prime Video背後使用了AWS服務,它利用AWSSSMChaosRunner來測試依賴服務出現高延遲時的性能。 Jewalikar和Hornsby提到,AWSSSMChaosRunner助他們修復了Elasticache超時配置的一個bug。

還有其他可用於執行混沌工程實驗的庫,早期的一個庫是Netflix的混沌猴。其他公司也開發了自己的框架,比如LinkedIn的水熊項目和Twitter的Python庫格林姆林公司還提供了故障注入服務。

AWSSSMChaosRunner的源代碼可以在GitHub上找到。

原文鏈接

AWS的開源混沌工程庫