如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?

这篇具有很好参考价值的文章主要介绍了如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当前,业界主流的混沌工程项目基本只关注如何制造故障的问题,而经常做演练相关工作的工程师应该明白,每次演练时还会遇到以下痛点:

  • 检测当前环境是否符合演练预设条件(演练准入);

  • 业务流量是否满足(流量注入);

  • 注入后判断故障效果是否符合预期(故障度量);

  • 是否在预设时间内恢复了业务服务(恢复度量);

  • 复盘分析总结风险点。

这也是蚂蚁集团内部混沌工程平台 XMonkey 在多年复杂故障演练场景中时常遇到的问题。

作为蚂蚁集团研发、测试、质量、SRE 等人员进行历史故障演练和挖掘系统潜在风险的重要平台,XMonkey 在公司级大规模红蓝攻防演练实践中沉淀了丰富且专业的方法论,在业界有极高的分享价值。基于经验共享与探讨的角度,XMonkey 的对外开源版本 ChaosMeta 在近日宣布正式开源。同时,ChaosMeta 也成为了 OceanBase 生态伙伴的新成员。

如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?,自动化,oceanbase,运维

ChaosMeta 能做什么?

混沌工程生命周期

ChaosMeta 是一款面向云原生、自动化演练而设计的混沌工程平台,基于业界现状和攻防演练的常见痛点,结合蚂蚁集团在混沌工程领域的多年经验,提出了混沌工程生命周期模型(见图1)。该模型覆盖了“准入检测”“流量注入”“故障注入”“故障度量”“恢复度量”“注入恢复”等各个阶段的技术支撑,为自动化混沌工程提供技术依据。

如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?,自动化,oceanbase,运维

图1 混沌工程生命周期模型

也就是说,ChaosMeta 提供了完整的混沌工程生命周期的一站式演练综合解决方案,助力用户快速挖掘业务应用和系统的潜在风险。除此之外,ChaosMeta 还内置了蚂蚁集团在技术风险领域多年沉淀的“风险目录”,这是一份对各技术领域的基础通用风险的汇总。

沉淀多年的“风险目录”

蚂蚁集团内部每年都会举行公司级大规模红蓝攻防演练活动,面向公司全体业务,并且也有不少业务进行 7X24 小时演练以及月度常态演练。

演练对象类型覆盖云产品、Kubernetes、Operator 应用、数据库( OceanBase、MySQL 等)、中间件(消息队列、分布式调度、配置中心等)、业务应用(交易系统、营销系统等)等。

以 OceanBase 的攻防演练为例,使用 ChaosMeta 对 OceanBase 集群的任意节点注入磁盘 I/O 夯的故障,其底层原理是通过使用 cgroup 的 blkio 子系统对 OBServer 进程进行 I/O 限制,考查 OceanBase 集群对磁盘 I/O 类故障的发现、定位、自愈的效率;还会随机对 OceanBase 集群中任意节点的 clog、ilog、slog 等日志目录的磁盘填满,考查能否快速定位哪个节点的哪个日志目录被填满并进行相应的应急处理。

对于每种类型的应用,都能抽象出一些比较通用的公共风险:

  • 比如消息队列,会有消息堆积、消息丢失、消息顺序混乱、依赖方网络不稳定等风险;

  • 比如交易系统,会有分布式事务、金额一致性、并发冲突等风险;

  • 比如数据库,会有磁盘 I/O 故障、磁盘填满、节点间网络故障等风险。

“风险目录”是蚂蚁集团在大型金融互联网架构环境下,多年打磨、沉淀而来的一份“风险百科全书”,其中,开源界通用的风险,将会内置到 ChaosMeta 中,作为自动化混沌工程的理论依据。

丰富的云原生故障注入能力

大规模高频率的演练活动,推动了各种各样的故障注入能力建设。除了业界常见的系统资源故障、内核故障、网络故障、JVM 注入等,ChaosMeta 还提供了丰富的云原生故障注入能力。例如:

  • 给 Kubernetes 集群堆积大量 pending 状态的 pod,拖垮调度系统;

  • 给某个资源对象的创建流程注入动态校验 Webhook,延长校验时间,影响创建效率;

  • 注入动态变更 Webhook 使特定字段变异;

  • 建立大量 Watch&List 链接,加重 APIServer 回调 Operator 的负担等。

以混沌工程生命周期的平台能力为技术支撑,“风险目录”作为理论支撑,使 ChaosMeta 得以朝着自动化混沌工程演进。

如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?,自动化,oceanbase,运维

ChaosMeta 是如何实现的?

ChaosMeta 的核心平台能力是基于 Operator 开发模式实现的,因此,其天然支持云原生。ChaosMeta 分为三层设计(见图2 ),详见官方文档,地址👇

https://chaosmeta.gitbook.io/chaosmeta-cn

如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?,自动化,oceanbase,运维

图2  ChaosMeta 架构设计

最上层的用户层由 chaosmeta-platform 组件构成,其主要任务是降低用户的使用门槛,提供可视化界面,方便用户使用计划、编排、实验配置、实验记录详情等平台功能。

中间的引擎层包含了 ChaosMeta 的远程注入、编排、度量等核心平台能力以及部分云原生故障能力的实现。

作为底层的内核层,主要为单机故障注入能力的实现,包含了 chaosmetad 组件,提供了常驻 HTTP 服务的方式以及命令行执行的方式,还封装了对应的 daemonset 组件(chaosmeta-daemonset),可灵活搭配不同需求的演练平台。

如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?,自动化,oceanbase,运维

ChaosMeta 的后续规划

ChaosMeta 的规划分为平台能力和故障注入能力两个主体路线,当前主要任务是把架构图中的主体能力都完成对外版改造,并进行开放。

另外,ChaosMeta 会继续加强与 OceanBase 社区的合作,支持 OceanBase 的故障演练能力。

平台能力演进

ChaosMeta 平台能力的未来演进分为三大阶段。

第一阶段,人工配置。此阶段的目标是将架构图中的组件都对外开放,此时,即可支撑完整的混沌工程生命周期,进入初级自动化混沌工程领域,以“风险目录”作为理论参考,一次人工配置,多次自动执行。

第二阶段,自动化。此阶段下,“风险目录”会发挥更大的价值,它不仅能分析一类应用会有什么风险,作出风险评估,还会给出对应的预防以及应急建议。ChaosMeta 会将“风险目录”集成为通用组件的风险体检套餐,实现一键“体检”能力,用户输入目标应用信息后,得到风险评分以及风险分析报告。

第三阶段,智能化。探索结合人工智能的方向,自动生成更多未知的风险场景。

故障注入能力演进

图3 仅为故障能力分类,具体提供的原子故障能力详见官方文档(欢迎提交 issue,提出新能力需求,需求较高的优先提供):

如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?,自动化,oceanbase,运维

图3 故障能力分类

与 OceanBase 社区的后续合作

ChaosMeta 的内部版本 XMonkey 近几年持续支持 OceanBase 的常态攻防演练,达500+次,包含:磁盘 I/O 故障、磁盘填满(日志盘/数据盘)、节点间网络异常等场景,这些攻防演练经验将分享到 OceanBase 开源社区中。文章来源地址https://www.toymoban.com/news/detail-700847.html

到了这里,关于如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用Python自动化测试工具Selenium进行网页自动化?

    Selenium 是一个流行的Web自动化测试框架, 它支持多种编程语言和浏览器,并提供了丰富的API和工具来模拟用户在浏览器中的行为 。 Selenium可以通过代码驱动浏览器自动化测试流程,包括页面导航、元素查找、数据填充、点击操作等。 与PyAutoGUI和AutoIt相比, Selenium更适合于处

    2023年04月09日
    浏览(126)
  • 自动化测试工具Selenium的基本使用方法,面试字节跳动的前端工程师该怎么准备

    8.小结 上述均可以改写成find_element(By.ID,‘kw’)的形式 find_elements_by_xxx的形式是查找到多个元素,结果为列表 import time from selenium import webdriver#驱动浏览器 from selenium.webdriver import ActionChains #滑动 from selenium.webdriver.common.by import By #选择器 from selenium.webdriver.common.by import By #按照什

    2024年04月16日
    浏览(48)
  • 如何使用 Selenium 实现自动化操作?

    本篇咱们来谈谈Selenium自动化脚本是如何工作的,以及如何实现一个简单的自动化示例; 一、关于Selenium 1.1、为什么选择它作为web自动化的测试工具? 选择Selenium作为web自动化测试工具的原因(面试也许会问): 1. 开源免费; 2. 支持多浏览器,如Chrome、 Firefox、IE浏览器等;

    2024年02月02日
    浏览(44)
  • 如何使用Selenium做自动化测试?

    最近也有很多人私下问我,selenium学习难吗,基础入门的学习内容很多是3以前的版本资料,对于有基础的人来说,3到4的差别虽然有,但是不足以影响自己,但是对于没有学过的人来说,通过资料再到自己写的代码,发现有些东西没有,有些方法又不相同,导致脚本不能运行

    2024年02月01日
    浏览(72)
  • 如何使用自动化构造随机路由模型

    路由器测试中,为了最大程度还原现网路由情况,评估路由器在现网环境下稳定工作各项指标,需要对导入路由进行离散仿真,目前路由仿真可分为导入路由与生成路由两种方式,导入路由需要现网路由表导入,本文讨论重点为生成路由方式。 使用用户界面生成路由时,可根

    2024年02月16日
    浏览(39)
  • 如何使用RPA自动化人工智能和自动驾驶汽车

    人工智能和自动驾驶汽车是当今科技领域的热门话题。在这篇文章中,我们将探讨如何使用RPA(Robotic Process Automation)自动化人工智能和自动驾驶汽车。 RPA是一种自动化软件技术,它可以自动完成人类工作,提高工作效率。在人工智能和自动驾驶汽车领域,RPA可以帮助我们自动

    2024年02月20日
    浏览(73)
  • 如何使用自动化测试工具Selenium?

    哈喽,大家好,我是小浪。那么有一段时间没有更新了,还是在忙实习和秋招的事情,那么今天也是实习正式结束啦,开始继续更新我们的学习博客,后期主要是开发和测试的学习博客内容巨多,感兴趣的小伙伴们可以一键三连支持一下欧~ 目录 一、什么是自动化测试? 二、

    2024年02月11日
    浏览(61)
  • 如何使用Python实现FPGA编程“自动化”

    之前读到过一个公众号文章,写了关于《使用Python实现Vivado和Modelsim仿真的自动化》,连接https://mp.weixin.qq.com/s/2YR_LjpQNtJr9beqnCz7CA。根据该文章,基于自己的编程习惯和工作需要,我做了一些修改和便于自己编程的一些python代码,这里和大家介绍一下。 对于生成的tb文件使用了

    2023年04月14日
    浏览(41)
  • 如何使用IOS自动化测试工具UIAutomation

    这篇文章主要介绍了UIAutomation使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值 第一部分: 熟悉Instruments的UIAutomation. 第二部分: 控件的获取及操作 第三部分: 自定义自动化脚本 xcode中自带的Instuments工具可以用来进行APP的自动化测试, 以及用于进行内

    2024年02月03日
    浏览(76)
  • 接口自动化测试工程实践分享

    本文作者:欧海锋,碧桂园服务高级测试工程师,致力于研究测试技术。 一、前言 接口自动化测试是一种软件测试技术,它通过模拟用户系统操作来对系统的接口进行自动化测试。接口自动化测试的目的是为了提高测试效率和准确性,同时降低测试成本和周期。以下是为什

    2024年04月17日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包