摘要:這一次,經(jīng)歷了年時(shí)間的改進(jìn)和實(shí)踐,累計(jì)在線上執(zhí)行演練場(chǎng)景達(dá)數(shù)萬(wàn)次,我們將阿里巴巴在故障演練領(lǐng)域的創(chuàng)意和實(shí)踐,濃縮成一個(gè)混沌工程工具,并將其開源,命名為。
阿里妹導(dǎo)讀:減少故障的最好方法就是讓故障經(jīng)常性的發(fā)生。通過(guò)不斷重復(fù)失敗過(guò)程,持續(xù)提升系統(tǒng)的容錯(cuò)和彈性能力。今天,阿里巴巴把六年來(lái)在故障演練領(lǐng)域的創(chuàng)意和實(shí)踐匯濃縮而成的工具進(jìn)行開源,它就是 “ChaosBlade”。如果你想要提升開發(fā)效率,不妨來(lái)了解一下。
高可用架構(gòu)是保障服務(wù)穩(wěn)定性的核心。
阿里巴巴在海量互聯(lián)網(wǎng)服務(wù)以及歷年雙11場(chǎng)景的實(shí)踐過(guò)程中,沉淀出了包括全鏈路壓測(cè)、線上流量管控、故障演練等高可用核心技術(shù),并通過(guò)開源和云上服務(wù)的形式對(duì)外輸出,以幫助企業(yè)用戶和開發(fā)者享受阿里巴巴的技術(shù)紅利,提高開發(fā)效率,縮短業(yè)務(wù)的構(gòu)建流程。
例如,借助阿里云性能測(cè)試 PTS,高效率構(gòu)建全鏈路壓測(cè)體系,通過(guò)開源組件 Sentinel 實(shí)現(xiàn)限流和降級(jí)功能。這一次,經(jīng)歷了 6 年時(shí)間的改進(jìn)和實(shí)踐,累計(jì)在線上執(zhí)行演練場(chǎng)景達(dá)數(shù)萬(wàn)次,我們將阿里巴巴在故障演練領(lǐng)域的創(chuàng)意和實(shí)踐,濃縮成一個(gè)混沌工程工具,并將其開源,命名為 ChaosBlade。
ChaosBlade 是什么?ChaosBlade 是一款遵循混沌工程實(shí)驗(yàn)原理,提供豐富故障場(chǎng)景實(shí)現(xiàn),幫助分布式系統(tǒng)提升容錯(cuò)性和可恢復(fù)性的混沌工程工具,可實(shí)現(xiàn)底層故障的注入,特點(diǎn)是操作簡(jiǎn)潔、無(wú)侵入、擴(kuò)展性強(qiáng)。
ChaosBlade 基于 Apache License v2.0 開源協(xié)議,目前有 chaosblade 和 chaosblade-exe-jvm 兩個(gè)倉(cāng)庫(kù)。
chaosblade 包含 CLI 和使用 Golang 實(shí)現(xiàn)的基礎(chǔ)資源、容器相關(guān)的混沌實(shí)驗(yàn)實(shí)施執(zhí)行模塊。chaosblade-exe-jvm 是對(duì)運(yùn)行在 JVM 上的應(yīng)用實(shí)施混沌實(shí)驗(yàn)的執(zhí)行器。
ChaosBlade 社區(qū)后續(xù)還會(huì)添加 C++、Node.js 等其他語(yǔ)言的混沌實(shí)驗(yàn)執(zhí)行器。
為什么要開源?很多公司已經(jīng)開始關(guān)注并探索混沌工程,漸漸成為測(cè)試系統(tǒng)高可用,構(gòu)建對(duì)系統(tǒng)信息不可缺少的工具。但混沌工程領(lǐng)域目前還處于一個(gè)快速演進(jìn)的階段,最佳實(shí)踐和工具框架沒(méi)有統(tǒng)一標(biāo)準(zhǔn)。實(shí)施混沌工程可能會(huì)帶來(lái)一些潛在的業(yè)務(wù)風(fēng)險(xiǎn),經(jīng)驗(yàn)和工具的缺失也將進(jìn)一步阻止 DevOps 人員實(shí)施混沌工程。
混沌工程領(lǐng)域目前也有很多優(yōu)秀的開源工具,分別覆蓋某個(gè)領(lǐng)域,但這些工具的使用方式千差萬(wàn)別,其中有些工具上手難度大,學(xué)習(xí)成本高,混沌實(shí)驗(yàn)?zāi)芰我唬购芏嗳藢?duì)混沌工程領(lǐng)域望而卻步。
阿里巴巴集團(tuán)在混沌工程領(lǐng)域已經(jīng)實(shí)踐多年,將混沌實(shí)驗(yàn)工具 ChaosBlade 開源目的,我們希望:
讓更多人了解并加入到混沌工程領(lǐng)域;
縮短構(gòu)建混沌工程的路徑;
同時(shí)依靠社區(qū)的力量,完善更多的混沌實(shí)驗(yàn)場(chǎng)景,共同推進(jìn)混沌工程領(lǐng)域的發(fā)展。
ChaosBlade 能解決哪些問(wèn)題?衡量微服務(wù)的容錯(cuò)能力
通過(guò)模擬調(diào)用延遲、服務(wù)不可用、機(jī)器資源滿載等,查看發(fā)生故障的節(jié)點(diǎn)或?qū)嵗欠癖蛔詣?dòng)隔離、下線,流量調(diào)度是否正確,預(yù)案是否有效,同時(shí)觀察系統(tǒng)整體的 QPS 或 RT 是否受影響。在此基礎(chǔ)上可以緩慢增加故障節(jié)點(diǎn)范圍,驗(yàn)證上游服務(wù)限流降級(jí)、熔斷等是否有效。最終故障節(jié)點(diǎn)增加到請(qǐng)求服務(wù)超時(shí),估算系統(tǒng)容錯(cuò)紅線,衡量系統(tǒng)容錯(cuò)能力。
驗(yàn)證容器編排配置是否合理
通過(guò)模擬殺服務(wù) Pod、殺節(jié)點(diǎn)、增大 Pod 資源負(fù)載,觀察系統(tǒng)服務(wù)可用性,驗(yàn)證副本配置、資源限制配置以及 Pod 下部署的容器是否合理。
測(cè)試 PaaS 層是否健壯
通過(guò)模擬上層資源負(fù)載,驗(yàn)證調(diào)度系統(tǒng)的有效性;模擬依賴的分布式存儲(chǔ)不可用,驗(yàn)證系統(tǒng)的容錯(cuò)能力;模擬調(diào)度節(jié)點(diǎn)不可用,測(cè)試調(diào)度任務(wù)是否自動(dòng)遷移到可用節(jié)點(diǎn);模擬主備節(jié)點(diǎn)故障,測(cè)試主備切換是否正常。
驗(yàn)證監(jiān)控告警的時(shí)效性
通過(guò)對(duì)系統(tǒng)注入故障,驗(yàn)證監(jiān)控指標(biāo)是否準(zhǔn)確,監(jiān)控維度是否完善,告警閾值是否合理,告警是否快速,告警接收人是否正確,通知渠道是否可用等,提升監(jiān)控告警的準(zhǔn)確和時(shí)效性。
定位與解決問(wèn)題的應(yīng)急能力
通過(guò)故障突襲,隨機(jī)對(duì)系統(tǒng)注入故障,考察相關(guān)人員對(duì)問(wèn)題的應(yīng)急能力,以及問(wèn)題上報(bào)、處理流程是否合理,達(dá)到以戰(zhàn)養(yǎng)戰(zhàn),鍛煉人定位與解決問(wèn)題的能力。
功能和特點(diǎn)場(chǎng)景豐富度高
ChaosBlade 支持的混沌實(shí)驗(yàn)場(chǎng)景不僅覆蓋基礎(chǔ)資源,如 CPU 滿載、磁盤 IO 高、網(wǎng)絡(luò)延遲等,還包括運(yùn)行在 JVM 上的應(yīng)用實(shí)驗(yàn)場(chǎng)景,如 Dubbo 調(diào)用超時(shí)和調(diào)用異常、指定方法延遲或拋異常以及返回特定值等,同時(shí)涉及容器相關(guān)的實(shí)驗(yàn),如殺容器、殺 Pod。后續(xù)會(huì)持續(xù)的增加實(shí)驗(yàn)場(chǎng)景。
使用簡(jiǎn)潔,易于理解
ChaosBlade 通過(guò) CLI 方式執(zhí)行,具有友好的命令提示功能,可以簡(jiǎn)單快速的上手使用。命令的書寫遵循阿里巴巴集團(tuán)內(nèi)多年故障測(cè)試和演練實(shí)踐抽象出的故障注入模型,層次清晰,易于閱讀和理解,降低了混沌工程實(shí)施的門檻。
場(chǎng)景擴(kuò)展方便
所有的 ChaosBlade 實(shí)驗(yàn)執(zhí)行器同樣遵循上述提到的故障注入模型,使實(shí)驗(yàn)場(chǎng)景模型統(tǒng)一,便于開發(fā)和維護(hù)。模型本身通俗易懂,學(xué)習(xí)成本低,可以依據(jù)模型方便快捷的擴(kuò)展更多的混沌實(shí)驗(yàn)場(chǎng)景。
ChaosBlade 的演進(jìn)史EOS(2012-2015):故障演練平臺(tái)的早期版本,故障注入能力通過(guò)字節(jié)碼增強(qiáng)方式實(shí)現(xiàn),模擬常見的 RPC 故障,解決微服務(wù)的強(qiáng)弱依賴治理問(wèn)題。
MonkeyKing(2016-2018):故障演練平臺(tái)的升級(jí)版本,豐富了故障場(chǎng)景(如:資源、容器層場(chǎng)景),開始在生產(chǎn)環(huán)境進(jìn)行一些規(guī)模化的演練。
AHAS(2018.9-至今):阿里云應(yīng)用高可用服務(wù),內(nèi)置演練平臺(tái)的全部功能,支持可編排演練、演練插件擴(kuò)展等能力,并整合了架構(gòu)感知和限流降級(jí)的功能。
ChaosBlade(2019.3):是 MonkeyKing 平臺(tái)底層故障注入的實(shí)現(xiàn)工具,通過(guò)對(duì)演練平臺(tái)底層的故障注入能力進(jìn)行抽象,定義了一套故障模型。配合用戶友好的 CLI 工具進(jìn)行開源,幫助云原生用戶進(jìn)行混沌工程測(cè)試。
近期規(guī)劃功能迭代:
增強(qiáng) JVM 演練場(chǎng)景,支持更多的 Java 主流框架,如 Redis,GRPC
增強(qiáng) Kubernetes 演練場(chǎng)景
增加對(duì) C++、Node.js 等應(yīng)用的支持
社區(qū)共建:歡迎訪問(wèn) ChaosBlade@GitHub,參與社區(qū)共建,包括但不限于:
架構(gòu)設(shè)計(jì)
模塊設(shè)計(jì)
代碼實(shí)現(xiàn)
Bug Fix
Demo樣例
文檔、網(wǎng)站和翻譯
閱讀原文
本文來(lái)自云棲社區(qū)合作伙伴“?阿里技術(shù)”,如需轉(zhuǎn)載請(qǐng)聯(lián)系原作者。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/11985.html
摘要:點(diǎn)擊訂閱云棲夜讀周刊月日,據(jù)阿里云透露,其全新一代企業(yè)級(jí)以及彈性裸金屬云服務(wù)器即將上線。【點(diǎn)擊訂閱云棲夜讀周刊】 4月2日,據(jù)阿里云透露,其全新一代企業(yè)級(jí)ECS以及彈性裸金屬云服務(wù)器即將上線。 熱點(diǎn)熱議 阿里云新一代云服務(wù)器即將上線,計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)全面升級(jí) 作者:阿里云頭條 勒索攻擊猖獗,在云上如何應(yīng)對(duì)這位破壞分子? 作者:云安全專家 云數(shù)據(jù)庫(kù)RDS存儲(chǔ)能力進(jìn)化解析! 作者:云攻略小攻...
摘要:點(diǎn)擊訂閱云棲夜讀周刊精彩觀點(diǎn)通過(guò)開放管理混合云會(huì)更受大客戶歡迎,客戶傾向于用云存儲(chǔ)災(zāi)備技術(shù)保障數(shù)據(jù)可靠性,和會(huì)成為業(yè)界主流,中國(guó)出現(xiàn)第一家真正全面云化的大型公司,云端計(jì)算在業(yè)務(wù)中應(yīng)用的廣度和深度將成為未來(lái)十年衡量企業(yè)競(jìng)爭(zhēng)力的新標(biāo)尺等?!军c(diǎn)擊訂閱云棲夜讀周刊】 精彩觀點(diǎn):通過(guò)開放API管理混合云會(huì)更受大客戶歡迎,客戶傾向于用云存儲(chǔ)災(zāi)備技術(shù)保障數(shù)據(jù)可靠性,Kubernetes和Kata Con...
摘要:目前團(tuán)隊(duì)的技術(shù),已經(jīng)通過(guò)開源和商業(yè)化渠道進(jìn)行外部輸出。提前批是否會(huì)影響正式秋招提前批如果表現(xiàn)不佳對(duì)正式秋招也無(wú)任何影響秋招正式開始時(shí)仍然可繼續(xù)投遞阿里其它團(tuán)隊(duì)。掃碼加微信掃碼內(nèi)推阿里云智能掃碼內(nèi)推整個(gè)阿里經(jīng)濟(jì)體 團(tuán)隊(duì)介紹: 高可用架構(gòu)團(tuán)隊(duì)是阿里巴巴保障穩(wěn)定性的護(hù)航艦隊(duì),提供的高可用架構(gòu)基礎(chǔ)設(shè)施直面雙11洪峰流量,包括全鏈路壓測(cè)、容量規(guī)劃、準(zhǔn)入控制、限流降級(jí)、流量調(diào)度等;通過(guò)攻防演練、環(huán)...
摘要:通過(guò)本文,你將了解到為什么需要混沌工程,阿里巴巴在該領(lǐng)域的實(shí)踐和思考未來(lái)的計(jì)劃。而阿里目前并沒(méi)有一個(gè)專門的職位來(lái)實(shí)施混沌工程,項(xiàng)目目標(biāo)業(yè)務(wù)場(chǎng)景人員結(jié)構(gòu)實(shí)施方式的不同導(dǎo)致了對(duì)于穩(wěn)定狀態(tài)行為的定義不太標(biāo)準(zhǔn)。 阿里妹導(dǎo)讀:混沌工程屬于一門新興的技術(shù)學(xué)科,行業(yè)認(rèn)知和實(shí)踐積累比較少,大多數(shù)IT團(tuán)隊(duì)對(duì)它的理解還沒(méi)有上升到一個(gè)領(lǐng)域概念。阿里電商域在2010年左右開始嘗試故障注入測(cè)試的工作,希望解決微...
摘要:作者原文第一部分應(yīng)用混沌工程理論到區(qū)塊鏈框架。你可以抗議混沌環(huán)境在像與這種權(quán)限不足的公共區(qū)塊鏈網(wǎng)絡(luò)上是否存在。在之后這些被稱之為混沌工程?;煦缭瓌t開始進(jìn)入正式規(guī)范。名字是混沌工程通過(guò)實(shí)驗(yàn)建立對(duì)系統(tǒng)行為的信心。 作者 Vipin Bharathan原文:https://medium.com/@vipinsun/... 第一部分. 應(yīng)用混沌工程理論到區(qū)塊鏈框架。 混沌與工程兩個(gè)字是沒(méi)有什么...
閱讀 2549·2021-10-19 11:45
閱讀 2546·2021-09-30 09:56
閱讀 1524·2021-09-30 09:47
閱讀 650·2019-08-30 15:53
閱讀 1888·2019-08-30 15:44
閱讀 628·2019-08-30 12:52
閱讀 1143·2019-08-30 11:16
閱讀 1673·2019-08-29 16:36