混沌工程 ChaosMeta 的全新版本 V0.5 現(xiàn)已正式發(fā)布!該版本包含了許多新特性和增強(qiáng)功能,為用戶提供了支撐混沌工程各個(gè)階段的平臺(tái)能力,以及降低使用門檻的用戶界面。
ChaosMeta V0.5 核心新特性介紹
當(dāng)前版本主要是發(fā)布了平臺(tái)界面組件(chaosmeta-platform)、度量組件(chaosmeta-measure-operator)以及流量注入組件(chaosmeta-flow-operator)。
▌平臺(tái)界面
提供產(chǎn)品層操作界面方便用戶更友好地使用 ChaosMeta 產(chǎn)品功能,當(dāng)前產(chǎn)品層功能主要有:
1.空間管理:根據(jù)組織或活動(dòng)隔離數(shù)據(jù),確保數(shù)據(jù)的安全性和隱私性。
2.用戶權(quán)限管理:為不同角色提供訪問權(quán)限的控制,可有效管理混沌工程實(shí)驗(yàn)的使用。
3.編排實(shí)驗(yàn):通過拖拉拽可視化操作,使實(shí)驗(yàn)編排更加友好和靈活,提高用戶的工作效率。
4.實(shí)驗(yàn)結(jié)果:提供實(shí)驗(yàn)執(zhí)行詳情的追溯功能,讓用戶隨時(shí)了解實(shí)驗(yàn)的執(zhí)行情況和結(jié)果,方便用戶進(jìn)行數(shù)據(jù)分析和決策。
▌度量引擎
當(dāng)前包括 4 種度量能力:
- monitor:對(duì)監(jiān)控項(xiàng)的值進(jìn)行預(yù)期判斷,比如某個(gè)機(jī)器的 cpu 使用率監(jiān)控值是否大于90%,默認(rèn)支持prometheus
- pod:對(duì) pod 相關(guān)數(shù)據(jù)進(jìn)行預(yù)期判斷,比如某個(gè)應(yīng)用的 pod 實(shí)例數(shù)是否大于3
- http:對(duì) http 請(qǐng)求進(jìn)行預(yù)期判斷,比如進(jìn)行指定的 http 請(qǐng)求時(shí),返回狀態(tài)碼是否為200
- tcp:對(duì) tcp 請(qǐng)求進(jìn)行預(yù)期判斷,比如測(cè)試某個(gè)服務(wù)器的 8080 端口是否能通
▌流量引擎
當(dāng)前流量注入的能力只實(shí)現(xiàn)了 HTTP 流量類型的注入,后續(xù)會(huì)逐步補(bǔ)充 RPC、DB client、redis client 等其他類型的流量注入能力。底層實(shí)現(xiàn)是基于開源組件 jmeter 實(shí)現(xiàn)的,每個(gè)流量注入任務(wù)啟動(dòng)一個(gè) jmeter 的 job 執(zhí)行。
ChaosMeta 核心設(shè)計(jì)理念
ChaosMeta 設(shè)計(jì)上主要是想要解決下面幾個(gè)業(yè)界內(nèi)普遍存在的問題:
混沌工程演練各個(gè)階段的能力整合
當(dāng)前業(yè)界主流混沌工程項(xiàng)目主要都是只關(guān)注如何制造故障的問題,而經(jīng)常做演練相關(guān)工作的工程師,應(yīng)該明白每次演練還有以下重復(fù)性工作的痛點(diǎn):檢測(cè)當(dāng)前環(huán)境是否符合演練預(yù)設(shè)條件(演練準(zhǔn)入)、業(yè)務(wù)流量是否滿足(流量注入)、注入后判斷故障效果是否符合預(yù)期(故障度量)、是否在預(yù)設(shè)時(shí)間內(nèi)恢復(fù)了業(yè)務(wù)服務(wù)(恢復(fù)度量)、復(fù)盤分析總結(jié)風(fēng)險(xiǎn)點(diǎn)。
基于業(yè)界現(xiàn)狀和上面的問題分析,結(jié)合螞蟻集團(tuán)在混沌工程領(lǐng)域的多年經(jīng)驗(yàn),ChaosMeta 平臺(tái)從設(shè)計(jì)上覆蓋了“準(zhǔn)入檢測(cè)”、“流量注入”、“故障注入”、“故障度量”、“恢復(fù)度量”、“注入恢復(fù)”等各個(gè)階段的技術(shù)支撐,解放各階段的人力。
故障實(shí)驗(yàn)設(shè)計(jì)的經(jīng)驗(yàn)可復(fù)用性
我們?cè)谧龌煦绻こ萄菥毲埃€有一個(gè)會(huì)消耗大量人力的工作,那就是在演練實(shí)驗(yàn)的設(shè)計(jì)上。這一部分當(dāng)前主要還是得依靠人的設(shè)計(jì)能力,目前很難完全依賴機(jī)器去自動(dòng)設(shè)計(jì)。但是我們可以把其中的可復(fù)用經(jīng)驗(yàn)系統(tǒng)化抽象出來,整理成冊(cè),在對(duì)同一類組件進(jìn)行混沌工程演練的時(shí)候,就可以快速復(fù)用起來,這個(gè)就是風(fēng)險(xiǎn)目錄的設(shè)計(jì)初衷。
風(fēng)險(xiǎn)目錄前期主要是以理論的方式開源,后期會(huì)以平臺(tái)能力的方式內(nèi)置到 ChaosMeta 項(xiàng)目中。
云原生基礎(chǔ)設(shè)施的環(huán)境復(fù)雜性
當(dāng)前大部分公司的基礎(chǔ)設(shè)施環(huán)境都是在 Kubernetes 上的,無論是云自身還是云原生應(yīng)用的穩(wěn)定性都是至關(guān)重要的,傳統(tǒng)的故障注入手段可能難以解決問題。為此我們希望 ChaosMeta 能從設(shè)計(jì)上解決以下問題:
對(duì) Kubernetes 自身穩(wěn)定性的故障注入能力
主要是圍繞 Kubernetes 自身的穩(wěn)定性,比如 APIServer、Scheduler 等核心組件,各類資源的狀態(tài)異常處理流程,Operator 應(yīng)用的異常等- 平臺(tái)支持云原生部署ChaosMeta 設(shè)計(jì)上是基于 operator 開發(fā)的云原生架構(gòu)(詳見用戶文檔),因此天然支持云原生環(huán)境的部署
平臺(tái)支持管理云上容器并進(jìn)行故障注入
如果使用傳統(tǒng)的方式對(duì)容器進(jìn)行故障注入,需要把單機(jī)故障注入工具傳輸?shù)侥繕?biāo)容器內(nèi)并執(zhí)行命令,但是一般的業(yè)務(wù)容器的基礎(chǔ)鏡像都是極簡(jiǎn)版的,很多命令工具比如 tc、fallocate等都不支持,導(dǎo)致容器故障注入被環(huán)境因素受限過大。ChaosMeta 使用“容器化注入”的方式對(duì)集群內(nèi)的 Pod 以及 Node 進(jìn)行故障注入,單機(jī)故障注入工具chaosmetad 支持對(duì)宿主機(jī)上的容器進(jìn)行故障注入,而不需要把 chaosmetad 拷貝到容器內(nèi),通過在宿主機(jī)上選擇性進(jìn)入目標(biāo)容器的目標(biāo) linux namespace,達(dá)到使用宿主機(jī)的工具對(duì)容器的相應(yīng) namespace 產(chǎn)生異常的效果
平臺(tái)支持管理云下容器并進(jìn)行故障注入
每個(gè)公司都還有很多還沒上云的業(yè)務(wù),這類業(yè)務(wù)要么是在普通的物理機(jī)/虛擬機(jī)上部署,要么是在此基礎(chǔ)上裸容器啟動(dòng)的(比如 docker 容器)。這個(gè)時(shí)候也需要平臺(tái)能支持管理這部分集群外的目標(biāo),ChaosMeta 的單機(jī)故障注入工具 chaosmetad 支持以 agent 模式啟動(dòng),定時(shí)上報(bào)機(jī)器的容器信息到平臺(tái)中,平臺(tái)可以直接選擇集群外的目標(biāo)下發(fā)故障注入任務(wù)。
多集群管理
雖然我們推薦每個(gè)集群部署一個(gè)管控平臺(tái),但是仍然有很多用戶換機(jī)是希望能集中式管理的,ChaosMeta 的平臺(tái)能力設(shè)計(jì)上也是支持管理不同集群的 kubeconfig 以及跨集群進(jìn)行故障注入的。
可自動(dòng)化的道路
平臺(tái)技術(shù)的最后目標(biāo)都是希望能解放人力,往自動(dòng)化、智能化的方向演進(jìn)的,或許當(dāng)前還沒能完全做到,但是至少需要走在正確的道路上。
ChaosMeta 的自動(dòng)化混沌工程思想主要是以混沌工程演練的各階段平臺(tái)能力為技術(shù)支撐,“風(fēng)險(xiǎn)目錄”作為理論支撐,使 ChaosMeta 朝著自動(dòng)化混沌工程的方向逐步演進(jìn)。
2023 年 roadmap
今年的目標(biāo)主要是把平臺(tái)能力進(jìn)行完善,并且各階段的基本能力都補(bǔ)全,還會(huì)跟其他開源社區(qū)(比如 OceanBase、SOFA 等)進(jìn)行進(jìn)一步的合作,爭(zhēng)取達(dá)到 1.0 完整版。
平臺(tái)能力
- 支持全部編排節(jié)點(diǎn)類型的能力
- 內(nèi)置一些開源組件的通用實(shí)驗(yàn)?zāi)0?/li>
- 提供 Agent 管理界面,管理云上以及云下的物理機(jī)以及容器
- 支持跨集群管理
各階段基本能力
- 流量注入能力,基于 jmeter 提供更多的流量注入能力
- 度量能力,提供更多云原生方向的狀態(tài)度量能力
- 故障注入能力,主要往組件級(jí)別的故障注入能力上演進(jìn),比如集成對(duì) OceanBase、MySQL、Redis、Etcd 等開源組件的故障注入能力
- 風(fēng)險(xiǎn)目錄正式對(duì)外開源理論版本,內(nèi)置到 ChaosMeta 平臺(tái)中的能力主要以上述的“通用實(shí)驗(yàn)?zāi)0妗币约啊敖M件級(jí)別的故障注入能力”兩種方式。
加入我們
作為一個(gè)開放的項(xiàng)目,我們認(rèn)可開源的研發(fā)模式,并致力于將 ChaosMeta 社區(qū)打造成一個(gè)開放和有創(chuàng)造力的社區(qū)。后續(xù),所有的研發(fā)、討論等相關(guān)工都會(huì)在社區(qū)透明運(yùn)行。
我們歡迎任何形式的參與,包括且不限于提問、代碼貢獻(xiàn)、技術(shù)討論、需求建議等。期待收到社區(qū)想法和反饋,以推動(dòng)項(xiàng)目往前進(jìn)一步發(fā)展。
如果對(duì)我們的項(xiàng)目或者設(shè)計(jì)理念感興趣,請(qǐng) star 我們的項(xiàng)目給予支持。
項(xiàng)目 GitHub 地址:https://github.com/traas-stack/chaosmeta
官方文檔:https://chaosmeta.gitbook.io/chaosmeta-cn
微信群:請(qǐng)?zhí)砑迂?fù)責(zé)人好友(微信號(hào):KingsonKai)邀請(qǐng)入群
釘釘群:21765030887文章來源:http://www.zghlxwxcb.cn/news/detail-693595.html
也歡迎大家關(guān)注 ChaosMeta 公眾號(hào)(ChaosMeta混沌工程),項(xiàng)目最新動(dòng)態(tài)我們都會(huì)在這里發(fā)布。文章來源地址http://www.zghlxwxcb.cn/news/detail-693595.html
到了這里,關(guān)于螞蟻集團(tuán)混沌工程 ChaosMeta V0.5 版本發(fā)布的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!