开发者学堂课程【2022阿里云云原生中间件开发者大会集锦:混动工程平台 ChaosBlade-Box 新版重磅发布】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1053/detail/15282
混动工程平台 ChaosBlade-Box 新版重磅发布
内容介绍:
一、混沌工程是什么
二、如何落地混沌工程
三、新版优势
本课程主分享的主题是混沌工程平台 ChaosBlade-Box 新版重磅发布。
一、混沌工程是什么
在正式介绍新版发布的内容之前,先来聊一聊一个问题,就是混沌工程是什么?
1.故障可能随时发生
在20年的11月份aws服务大面积故障,多个云服务受到了影响,问题的定位就花费了四个小时,完全修复花费了15分钟。在不到一个月的时间里谷歌,出现了今年的第三次大规模宕机,整个宕机时间持续了45分钟,波及了20亿用户,总的损失预计达到了170万美元的广告收入。
那面对这样的一个随时都可能发生的故障除了骂,还能做什么?我们知道从原来单机架构到后面的微服务架构,以及到现在的云原生架构,整个系统架构变得越来越复杂。在这样的一个复杂的系统架构里面,如何快速定位问题,或者是把问题前置,能够提前暴露出来,从而解决这个问题,来提高整个系统的韧性,显得尤为重要。
2. 混沌工程概念
在这样的一个大的背景下面,引入了混沌工程,那混沌工程是什么?混沌工程其实就是通过主动记录故障的一个方式,来暴露系统的一个薄弱点,从而提高系统韧性的一种方法。
3. 云原生架构原则
但是这里就提到一个问题,为什么是混沌工程?其实可以看到,以云原生架构举例,云原生架构的原则其实是可以和混沌工程的原则,实现多对多的原则来匹配的,用服务化的原则举例,服务化其实它的选项条件就是服务如何自理的问题,其实再转化一下就是强弱依赖的问题。服务与服务之间,它是强依赖还是弱依赖的一个问题。
4.混沌工程原则
混沌工程原则如何去解决这个问题呢?其实就是不断的最小化它的爆炸半径,从它的一个机器到应用到某个接口。通过对某一个应用的接口进行一个故障注入,然后再判断整个服务之间的调用,它的系统是否还是正常的,来判断它的依赖关系是强还是弱。
5.整个混沌工程的目标
整个混沌工程的目标,其实就是打造一个韧性架构,韧性的架构其实分两块,一块是韧性的系统,一块是韧性的组织。
(1)、韧性系统
那韧性系统包括哪些呢?包括冗余性,扩展性,不可变的基础设施等等,以及后面的避免级连故障。对于韧性的系统,混沌工程是如何来实现的?
举个例子,如果一个系统,它其实是有多个单元或者是多个集群,对某一个单元或者是某一个集群进行断网演练。在断网演练的之后,来判断整个系统是否还能够自动扩缩容,或者是还能够正常的一个提供服务,来判断它是否具有冗余和扩展性。
(2)、韧性组织
韧性的组织指的就是高效的交付效率,面对失败的设计,应急响应机制。利用混沌工程如何来实现的?
在阿里就是通过医务室的一个演练以及红蓝攻防的演练,来不断的达到这个组织的一个韧性。
6.混沌工程的业务价值
其实总结来说,混沌工程就是通过主动注入故障的一个方式,提前发现系统的薄弱点,推进架构的改进,最后实现业务的韧性。
那引入混沌工程过程中带来什么样的业务价值,对于不同的人来说,它的业务价值是不一样的。
对于架构师来说,它可以验证系统架构的容错能力,对于开发或者运维来说,能够不断的提高故障的应急效率。对于侧试同学来说,它能够提早暴露的问线上问题,降低故障的一个复发率。对于产品和设计来说,它能够提高提升单客户的一个体验。
二、如何落地混沌工程
那前面介绍了一下,什么是混沌工程以及混沌工程带来的业务价值,那对于企业或者是业务来说,它如何落地混沌工程?有没有比较好的一个工具或者是平台可以快速的落地?
1. ChaosBlade
这里介绍一下混沌工程实验实施工具就是ChaosBlade。ChaosBlade提供了3+4的环境,200多个场景,以及3000多个参数。
什么是3+4环境?也就是它能够支持在linux环境下,linux环境的主机和虚拟机上,或者是dopa或者是k8s环境下进一步部署以及。支持JAVA,C++,js,go long等不同的应用层的一个故障注入。但是ChaosBlade它其实是一个cl的一个工具,就是端侧的一个工具。
在整个业务如果想要落地的情况下,会遇到一些问题,例如:如何方便的可视化的进行故障注入?如何对多个集群进行故障注入?怎么知道整体演练的统计性?想要解决这些问题,就需要在故障注入工具这一层,在上面再架构一层,也就是平台侧,平台侧来管控和编排这些演练工具。从而来帮助企业进行一个落地。
2.ChaosBlade 开源平台架构
这里就要介绍到要分享的主题,就是ChaosBlade-Box混沌工程的一个平台,可以看一下,下图是新版的开源工具,开源平台的一个整体,一个架构,可以看一下整个分几块,第一块就是用户界面侧,也就是前端交互用户界面交互层及到后面的用户端逻辑处理侧,一直到下面的部署在不同的业务集群或者是业务主机上的Agent侧,直到最后最下面端侧的一个故障注入工具,chaosblade这一侧。这次分别来介绍不同的模块,它的功能是什么。
(1)、用户界面侧
用户界面侧顾名思义,就是和用户进行一个交互的一个用户界面层这一侧。
(2)、后端服务侧
然后server侧就是后端服务侧,后端服务器主要包括几个部分,第一块就是演练引擎,演练引擎包括了流量的编排,安全管控,演练报告等功能。
再就是演练执行,演练执行它其实是支持不同的工具,不只是chaosblade,也支持linux,也支持开源工具力little runs tooh。
然后提供了一些演练基因库,也就是这个连接编排沉淀成基因库可以供下次其它人进行一个使用。
再就是对探针管理。支持主机和k8s不同环境下的一个部署,并且能够对探针进行一个自动安装部署,以及应用管理的功能。
(3)、Agent探针侧
再看下一侧,就是Agent,就是探针册,探针侧包括哪些功能?其实就是对外提供API接口,以及和server侧进行一个建联保持心跳,还有就是上报数据以及作为命令通道。
再下面就是在不同的业务环境下面,利用cosplay对整个系统的架构,或者是业务应用层进行一个故障注入。
3. ChaosBlade-Box-平台概览
来看一下新版的ChaosBlade-Box平台,整个的一个样式是怎样的?首先就是平台的概览,那平台的概览,其实是新版的ChaosBlade-Box支持了中英文的切换,以及全球空间切换,以及提供了一个快速启动的一个导航,还有对整个演练记录进行一个统计信息,以及演练日志大屏。
可以看到下图左侧这一块,包括了演练空间,那演练空间是什么呢?其实就是对演练进行的管理与统计,并且可以进行一个演练的编排和故障的注入路。
那演练场景,演练场景其实就是在这一块会列出来所有支持的一个演练场景是什么,可以把之前演的那些场景沉淀为演练经验,这就是演练经验库。
然后会对探针上报的一些数据,上报数据上的所有的应用,在应用管理这块进行一个统一的管理。
还有就是探针管理会对探针进行一个自动的安装和卸载以及管理的一些功能,这里面也是支持主机和k8s的环境。
最后就是一键迁移的功能,就是支持从设计版一键迁移到企业版。
4. ChaosBlade-Box-应用管理
可以看一下应用管理,应用管理支持主机和k8s两种环境,那在k8s安装的情况下,它其实是会主动去收集pod相关数据,会根据这些pod的label,就是它的一个标签来自动定位它是哪些应用。来自动分类它的应用。
那这样的话有一个什么样的好处呢?其实就是不需要再利用what can be去拿到整个集群上面所有的pod信息,或者是container信息,这样的话再进行pod的演练或者是pod里面container的演练。可以去进行一个自动填充,或者是选择和筛选了,就不需要自己去做一些参数的手动填写了。
5. ChaosBlade-Box-演练场景及经验库
再看一下演练场景和演练经验库。演练场景其实包括k8s和主机方面。那可以把k8s和主机再分为系统资源和java应用资源,在这里只展示了java应用资源。
那演练经验库其实就是前面提到的,会把之前演练编排好的演练,沉淀为演练经验库。可以供其它人或者是用户下次去演练的时候,就不需要再进行一个编排,可以直接进行一个演练。
6. ChaosBlade-Box - 流程编排
再看下,如果在这个新版的ChaosBlade-Box上,就这个平台上,进行一个整体的演练流程是怎样的?如果要执行一个完整的一个演练,整个的流程是怎样的?
(1)、可视化
首先,需要选择是k8s还是主机的页面。也支持应用和非应用的一个演练。如果选择了k8s,还支持应用和非应用的演练。
应用就是前面提到的应用管理,可以通过业务管理来进行个筛选,筛选具体的某一个应用,在这里选择的是非应用,非应用的话,其实就是直接选择它的一个集群了,k8s的集群。
选择了集群之后再去选择需要演练一个场景,在这里演练的场景是有两个,一个是节点上的CPU满载,一个是节点上的网络的乱序。然后在这里是支持梁总的编排模式,一个是顺序执行,一个是阶段执行。
顺序执行指的是什么?就是先只写了一个CPU的一个满载之后,再对CPU满载进行一个恢复,恢复了之后再进行一个网络的一个乱序,然后再对网络乱取进行恢复。那这样达到一个效果就是两个故障一次见效。
阶段的执行就是同时进行CPU满载或者是网络的乱序。对执行生效之后,再去对这个场景进行了恢复,那这样达到一个效果就是两种故障是同时生效,然后执行演练了之后可以看到整个这个演练结果怎这样的,在上面这一侧可以看到整个演练,整体的进度是怎样的。
(2)、安全
然后支持了自动停止和手动触发的两种方式来终止整个演练。避免系统因为系统问题导致的演练之外意外故障,而无法停止,有什么样的好处呢?其实就是提供了可以去手动的在平台上进行自动停止,也可以一开始的时候,举个例子,在这里就是15分钟之后自动恢复,那这样的话有一个好处,就是如果那个设备端和Agent失联之后,可以通过一开始就下发的15分钟自动恢复的一个策略。即便是平台侧无法点击手动恢复的按钮,它也可以在15分钟之后自动恢复。
(3)、结果
再下面,就是结果确认,结果确认其实是包括了一个执行结错误信息,以及一个配置参数都可以在这里可以看到ChaosBlade-Box就是新版的还支持一键迁移,就是从社区版到企业版的一键迁移。这样的话,其实是方便开源的社区同学能够比较轻松的切换到企业,并且可以将数据同步到企业。
三、新版优势
在前面整体的介绍了一下新版的一个内容是什么?新版的ChaosBlade-Box平台,它的整体一些内容,以及如果要去做一个完整的演练,这个练那个流程应该怎么去做?怎么去对这个演练进行一个编排?那么这个新版对于老板的一个优势,它的优势是什么?为什么要做这次新版的升级?其实可以看到,整个新版和企业版进行了一个内核的统一,可以分三块来分别介绍一下它的优势是什么。
1. 用户前端界面侧
首先就是第一块用户前端界面侧。用户前端界面侧是和企业版的前端界面进行一个统一支持的。更加完善的国际化的一个中英文切换,并且支持了命名空间的一个切换。
2. 后端侧
在后端这一侧提供了更加流畅的流程演练编排,更加完善的应用管理以及更好的对探针的一个管控。还有就是多种的故障恢复策略,保障安全可恢复,并且新增了一键迁移到社区版的功能。
3. Agent
那对于 Agent 这一侧,它支持了多环境部署,并且支持不同环境下的演练通道,提供了更加完善的 API,而且支持自动安装和卸载的功能,并且主动收集数据并上报到上端。
以上就是整体的一个分享。