我不知道的事gl,你所不知道的故事

Chaosblade-exec-cplus: C++ 应用程序实验场景的实现。使用GDB技术实现方法和代码行级实验场景注入。

上述项目都是根据混沌实验模型定义实验场景。这不仅提供了实验场景的水平领域扩展,而且使用该领域的标准方法进行场景设计和实现。因此,它对于实现域内场景的垂直扩展非常有用。

除了实验场景相关的项目外,还有相关的文档项目。

Chaosblade-help-doc: ChaosBlade 工具和场景使用文档

Chaosblade-dev-doc: ChaosBlade 项目开发文档

Awesome-chaosblade: ChaosBlade 相关外部文档

实验模型如前所述,ChaosBlade 项目遵循混沌实验模型的设计。这不仅简化了实验场景的定义,也方便了场景的扩展,可以通过Chaosblade cli工具统一调用,有利于构建更高层次的混沌实验平台。下面通过实验模型的推导、介绍、意义和具体应用来详细介绍该模型。

实验模型的推导目前的混沌实验主要包括故障模拟。

10.0.0.1机器挂载的A盘已满,服务不可用。

如果B dubbo服务在所有节点上都运行缓慢,那么对上游A dubbo服务的调用就会延迟,导致用户访问缓慢。

Kubernetes集群A的Node B上的CPU核全部满载,导致集群A的pod调度异常。

Kubernetes C集群中D Pod网络出现异常,导致D相关服务访问异常。

综上所述,我们可以使用以下句子结构来描述故障:特定机器上的哪些组件(或集群中的资源,例如节点、Pod 等)导致某些内容发生故障并造成相关影响。您还可以在下图中查看故障描述的详细信息。

由于现有的故障场景可以通过这四个部分来解释,因此我们抽象出故障场景模型,也称为混沌实验模型。

实验模型概述实验模型详细解释如下。

Scope: 实验的实施范围是指实施实验的具体机器、集群和资源。

Target: 实验目标是指执行实验的组件。基础资源场景包括CPU、网络、磁盘;Java场景包括Dubbo、Redis、RocketMQ、JVM等应用组件;容器场景包括节点、Pod和容器本身。

Matcher: 实验规则匹配器根据设定的目标定义相关的实验匹配规则,可以有多个规则。每个目标可能有自己特殊的匹配标准,因此例如RPC 字段Dubbo 和gRPC 可以根据服务提供者提供的服务进行匹配,而缓存则可以根据服务消费者调用的服务进行匹配。在设置和获取操作期间。您还可以扩展匹配器,例如扩展实验场景的执行策略或控制实验的触发时间。

Action: 指的是实验模拟中的特定场景。比如磁盘已满、磁盘IO高、磁盘硬件故障等都可以进行钻探。对于应用程序来说,可以抽象出延迟、异常、返回指定值(错误码、大对象等)、参数篡改、重复调用等实验场景。对于容器服务,您可以模拟节点、Pod、容器资源或其任何底层资源的异常。

该模型使我们能够阐明进行混沌实验时需要解决的问题,例如:

混沌实验的范围有多大?

进行混沌实验的目的是什么?

实验对象在什么条件下触发实验?

具体来说,实施了什么样的实验场景?

实验模型的意义该模型具有以下特点。

简单:层次清晰、易懂

General:涵盖当前所有故障场景,包括基础资源、应用服务、容器服务、云资源等。

易于实现:定义清晰的接口规范非常方便,扩展实验场景也易于实现。

语言和领域无关:模型实现可以用多种语言和领域进行扩展

该模型具有以下含义:

更准确地描述混沌实验场景

加深我们对混沌实验注射的理解

轻松创建现有实验场景

根据模型考虑进一步的场景

混沌实验工具现在更加标准化和简洁

ChaosBlade 中的实验模型应用项目遵循这种混沌实验模型设计。虽然这个模型定义了如何设计混沌实验场景,但实验场景的具体实现因学科而异,因此ChaosBlade 是按照以下方式进行封装的:域实施。每个项目不仅将根据该领域的最佳实践来实施,而且可以通过混沌实验模型与Chaosblade cli 项目建立关系。域中的实验场景基于混沌实验模型生成YAML文件描述,并将其暴露给更高级别的混沌实验平台。混沌实验平台根据实验场景的变化自动感知变化。混沌平台专注于混沌工程的其他部分,因为它包含在实验场景描述文件中,并且在添加新场景时不需要平台开发。下面分为三个部分:基于混沌实验模型设计混沌叶片CLI、基于混沌实验模型设计混沌叶片算子、基于混沌实验模型搭建混沌实验平台。细节。

基于Chaos实验模型设计Chaosblade cli Chaosblade项目本身是使用Golang构建的,该工具可以在CLI模式下运行,使其易于使用并具有完整的命令提示符。分析根据混沌实验模型实现的实验场景的yaml描述,将实验场景转换为Cobra框架支持的命令参数,并根据Chaosblade-spec-go项目中混沌实验模型的定义进行变量参数化。 意识到。实验是面向对象的,每个实验对象都有一个UID,以便于管理。

通过一个具体的实验场景来说明Chaosblade cli的使用方法。

我们进行的实验是在调用mk-demo 数据库时向提供者服务实例之一注入延迟故障。这是将延迟插入演示数据库的命令。比如这个命令就非常简洁明了,可以看到实验的对象是mysql,而这些都是表、查询等数据库的匹配器。 ChaosBlade 使您可以很好地控制实验中效果的类型和数量。 受控实验的爆炸半径。运行此命令将向该计算机上的提供者服务注入故障。从这张图中可以看到,注入故障后,我们立即收到了钉钉的报警。也就是说,这个情况与预期的情况是一致的。预期情况还需要相关开发人员和运维人员调查并修复延迟问题的根本原因,有助于提高灾难应急响应的效率。 Chaosblade 中文使用文档:https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn

基于混沌实验模型设计混沌Blade Operator Chaos Blade Operator项目是在Kubernetes平台上实现的混沌实验注入工具,根据上述混沌实验模型标准化实验场景,并将实验定义为Kubernetes Masu CRD资源。将实验模型的四个部分映射为Kubernetes 资源属性。虽然它是混沌实验模型和Kubernetes 声明式设计的简单结合,混沌实验模型可以让你轻松开发场景,但它也和Kubernetes 设计理念结合得很好,可以直接调用。当您使用kubectl 的Kubernetes API 或编写代码创建、更新和删除混沌实验时,资源状态清楚地表示实验执行状态并标准化Kubernetes 故障注入。除了使用上述方法运行实验外,您还可以使用Chaosblade cli 方法轻松运行Kubernetes 实验场景并查询实验状态。 除了上述好处之外,根据混沌实验模型实现的Chaos Blade Operator 还可以实现底层资源、应用服务、Docker 容器等场景的复用,让Kubernetes 场景的扩展变得更加容易。通过将Kubernetes标准化的实现场景方法论与混沌实验模型相结合,可以更有效、清晰、便捷地实现和使用混沌实验场景。 下面,我们通过一个具体的案例来演示Chaosblade-operator的使用。访问cn-hangzhou.192.168.0.205节点本地40690端口,模拟60%网络丢包。

使用yaml 配置方法和kubectl 运行实验

apiVersion:chaosblade.io/v1alpha1kind:ChaosBlademetadata:name:loss-node-network-by-namesspec:experiment: -scope:nodetarget:networkaction:lossdesc:“节点网络丢失”匹配器:-name:namevalue3 33 60 [\\\’cn-杭州.192.168.0.205\\ \’ ] – 名称: 百分比值: [\\\’60\\\’] – name: 接口value: [\\\’eth0\\\’] – name: 本地端口value: [\\\’40690\\\’] 运行实验。

kubectl apply -f loss-node-network-by-names.yaml 查询实验状态,返回以下信息(规格等内容省略):

~ » kubectl get Blade loss-node-network-by-names -o json { \\\’apiVersion\\\’: \\\’chaosblade.io/v1alpha1\\\’, \\\’kind\\\’: \\\’ChaosBlade\\\’, \\\’metadata\\ \’: { \\\’creationTimestamp\\\’: \\\’2023-11-04T09:56:36Z\\\’, \\\’finalizers\\\’: [ \\\’finalizer.chaosblade.io\\\’ ], \\\’ Generation\\\’: 1, \\\’name\\\’ : \\\’按名称丢失节点网络\\\’、\\\’resourceVersion\\\’: \\\’9262302\\\’、\\\’selfLink\\\’: \\\’/apis/chaosblade.io/v1alpha1/chaosblades/loss-node-网络名称\\\’, \\\’uid\\\’: \\\’63a926dd-fee9-11e9-b3be-00163e136d88\\\’ }, \\\’状态\\\’: { \\\’expStatuses\\\’: [ { \\\’action\\\’: \\\’loss\\\’, \\\’resStatuses\\\’: [ { \\\’id\\\’: \\\’057acaa47ae69363\\\’, \\\’kind\\\’: \\\’node\\\’, \\\’name\\\’: \\\’cn-hangzhou. 192.168.0.205\\\’, \\\’nodeName\\\’: \\\’cn-hangzhou.192.168.0.205\\\’, \\\’状态\\\’: \\\’成功\\\’, \\\’成功\\\’: true, \\\’uid\\\’: \\\’e179b30d-df77-11e9-b3be-00163e136d88\\\’ }],\\\’范围\\\’: \\\’节点\\\’,\\\’状态\\\’: \\\’成功\\\’,\\\’成功\\\’: true,\\\’ target\\\’: \\\’network\\\’ } ], \\\’phase\\\’: \\\’Running\\\’ }} 从上面可以清晰的看到混沌实验的运行状态。通过运行以下命令停止实验:

kubectl delete -f loss-node-network-by-names.yaml 或者直接删除该刀片资源

kubectl delete Blade loss-node-network-by-names 还可以通过编辑yaml文件来更新实验内容,Chaosblade算子完成实验更新操作。

使用Chaosblade cli 的Blade 命令运行它。

刀片创建k8s节点网络丢失–percent 60 –interface eth0 –local-port 40690 –kubeconfig config –names cn-hangzhou.192.168.0.205 如果执行失败,会返回详细的错误信息。如果成功,将返回实验的UID。

{\\\’code\\\’:200,\\\’success\\\’:true,\\\’result\\\’:\\\’e647064f5f20953c\\\’} 您可以使用以下命令查询实验的状态:

刀片查询k8s 创建e647064f5f20953c –kubeconfig config{ \\\’code\\\’: 200, \\\’success\\\’: true, \\\’result\\\’: { \\\’uid\\\’: \\\’e647064f5f20953c\\\’, \\\’success\\\’ : true, \\\’错误\\\’: \\\’\\\’, \\\’状态\\\’: [ { \\\’id\\\’: \\\’fa471a6285ec45f5\\\’, \\\’uid\\\’: \\\’e179b30d-df77-11e9-b3be- 00163e136d88\\\’, \\\’名称\\\’: \\\’cn-hangzhou.192.168.0.205\\\’, \\\’状态\\\’: \\\’成功\\\’, \\\’种类\\\’: \\\’节点\\\’, \\\’成功\\ \’: true, \\\’nodeName\\\’: \\\’cn-hangzhou.192.168.0.205\\\’ } ] }} 放弃实验。

除了上述两种方法外,还可以使用kubernetes client-go 运行Blade destroy e647064f5f20953c。有关更多信息,请参阅https://github.com/chaosblade-io/chaosblade/blob/master/exec/kubernetes/executor.go 代码。执行。

从上面的介绍我们可以看到,ChaosBlade项目在设计初期就考虑了云原生的实验场景,将混沌实验模型与Kubernetes设计理念友好地结合在一起。虽然Kubernetes 标准化了实现,但它也允许您重用其他领域的场景和Chaos Blade cli 调用方法,而没有任何所谓的历史包袱(:-)。

基于混沌实验模型构建混沌实验平台如上所述,根据混沌实验模型实现的实验场景可以通过yaml文件进行描述,上层实验平台可以自动感知实验场景的变化。为了平台的进一步发展,实现实验平台与实验场景分离的目的是为了让大家更加专注于混沌实验平台本身的发展。我们以AHAS Chaos平台为例,讲解如何基于混沌实验模型和ChaosBlade构建混沌实验平台。

:可见

Chaosblade 合并了所有域场景的yaml 文件,并将其提供给ChaosBlade SDK。

ChaosBlade SDK感知yaml文件的变化,重新解析场景描述文件,包含场景和场景参数的变化,并透明地发送到上层平台。

ChaosBlade SDK在平台上透明发送用户配置的参数,并调用并执行ChaosBlade工具。

Chaosblade 工具通过解析调用参数和每个字段的yaml 场景描述文件来调用不同的执行器。

混沌实验模型的应用可概括如下。

混沌实验模型对实验场景变量进行参数化,并对参数进行标准化。

根据模型可以实现实验场景的横向部署。

通过将混沌实验模型与现场标准化实施相结合,可以轻松实现现场场景的垂直扩展。

上层领域场景可以复用混沌实验模型中定义的场景。

混沌实验模型声明的场景描述可以很好的连接到Chaos Blade CLI。

您可以根据实验模型轻松搭建高级混沌实验平台

该项目的意义多年来,通过混沌工程社区中每个人的独特努力,混沌工程领域为整个混沌工程领域系统的改进做出了贡献。混沌工程的整个领域。我们在阿里巴巴内部实践混沌工程已经很多年了,但是实施混沌工程面临着很多挑战。我们还知道,混沌工程背后的思考、实施计划和实践经验只是故事的一部分。工程也非常重要。我们希望为我们的社区提供我们认为有用的内部工具,并通过各种渠道与大家分享我之前提到的实践经验。该工具结合实际经验,可以作为企业实施混沌工程的工具。这只是协作推进混沌工程领域进步的一个起点。 以上详细介绍了ChaosBlade 工具背后的设计和思考,以及将混沌实验模型与各个领域的标准实现相结合的好处。如果您对高可用性架构感兴趣,请加入ChaosBlade 社区。混沌工程社区是受欢迎的。总体而言,ChaosBlade 认为:在开源世界中,任何帮助都是一种贡献。

未来计划除了增强原有字段,包括增强云原生字段场景外,ChaosBlade 社区还将添加更多场景字段,例如:

Golang应用的混沌实验场景

NodeJS 应用程序的混沌实验场景

除了实验场景外,还规划了以下计划:

提供任何人都可以使用的混沌实验平台

改进每个ChaosBlade 项目的开发文档

改进了Chaosblade 工具的英文文档

任何人都可以参与并共同建设,包括但不限于:

错误报告

功能要求

性能问题

把招工广告

文件不完整

没有测试

功能设计

对项目有任何疑问

ChaosBlade 项目才刚刚开始。开源爱好者在使用ChaosBlade 时遇到的任何想法或问题都可以通过issues 或pull requests 在Github 上反馈。

Milestone Dubbo 2.7.5版本发布,性能提升30%,支持HTTP/2、TLS、Protobuf等

要了解如何实现千万级延迟任务队列,请参见美图开源的LMSTFY。

数一数: 你在CDN上又花了多少百万?

美图日消息存储从Redis进化到Titan达到——亿条,彻底解决扩容问题

本文受高可用性架构委托。如果您有技术原创或建筑实践文章,可以通过公众号“联系我们”菜单提交。

高可用架构

改变互联网的构建方式

本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/584322.html

(0)
上一篇 2024年5月25日
下一篇 2024年5月25日

相关推荐

  • tvb回到三国粤语在线,回到三国港剧粤语九零港剧网

    对于中国人来说,“《三国演义》”这个词可能会让人想起千军万马集结的壮观景象。 赵云、张飞、关羽等猛将,往往骑着马杀敌,如同在千军万马之中,轻而易举。 诸葛亮、曹操、司马懿等伟人率领军队出征,数量达数万甚至数十万。 像这样的大图案《三国演义》, 香港TVB也根据这个故事制作了电视剧,编号为《回到三国》。 TVB 《回到三国》 海报 不过,这个《回到三国》虽然不…

    游戏快讯 2024年6月4日
  • 回到三国第一集视频,回到三国哪年拍的

    2012年,观众抱怨马国明、杨怡主演的穿越剧《回到三国》“太糟糕了!” 由于特效差、版面小,《三国演义》的历史完全是捏造的。 电影里,刘备、关羽、张飞整天讨论的不是国家政治,而是家庭小问题比如刘备两个妻子之间的争执怎么办等等小问题,而这些小问题经诸葛亮等人商议后,呈交大臣,开会正式讨论。 所以,当导演这样拍摄经典三国演义的题材,凭着“这个故事纯属虚构”这句话…

    游戏快讯 2024年6月4日
  • 三国之诸葛亮是我哥,新三国诸葛亮第几集死

    港剧正在衰落。与20世纪80年代港剧风靡一时相比,如今的港剧极其贫穷。 2012年上映的穿越剧《回到三国》绝对佐证了这一观点。 由林峰、马国明、杨毅等实力派演员主演,刘家豪监制,刘志华、黄玉德编剧,阵容空前强大。还有一件事:黄玉德是《陀枪师姐》、《天上凡间》等著作的编辑和评论家。他的实力毋庸置疑,但这部剧却始终存在着陨落的隐患。 电影中,马国明饰演的司马信沉…

    游戏快讯 2024年6月4日
  • 港剧回到三国的结局,tvb回到三国结局

    大家好,我是唐朝粉丝迪达。想了解更多新鲜娱乐资讯,请关注小编。本文为原创。转载事宜请联系我们。您也可以转发到您的朋友圈。其实很多网友对TVB剧都很熟悉,而且很多观众已经看剧很多年了,可以说是港剧的高级粉丝了。但TVB有很多精彩的电影和电视片段,即使是经验丰富的港剧迷也从未见过。比如《回到三国》的男主角其实是马浚伟吗?今天我想谈谈TVB播出的巡演片段。 返回《…

    游戏快讯 2024年6月4日
  • tvb电视剧回到三国,tvb回到三国粤语在线

    2012年,观众抱怨马国明、杨怡主演的穿越剧《回到三国》“太糟糕了!” 由于特效差、版面小,《三国演义》的历史完全是捏造的。 电影里,刘备、关羽、张飞整天讨论的不是国家政治,而是家庭小问题比如刘备两个妻子之间的争执怎么办等等小问题,而这些小问题经诸葛亮等人商议后,呈交大臣,开会正式讨论。 所以,当导演这样拍摄经典三国演义的题材,凭着“这个故事纯属虚构”这句话…

    游戏快讯 2024年6月4日