本文主要介绍 AHAS Chaos 是如何围绕混沌工程来打造故障演练服务,您可以了解到混沌工程的基本知识和 AHAS Chaos 的优势。

混沌工程和故障演练

首先您需要了解混沌工程和故障演练的关系。以下是混沌工程官方定义:混沌工程是在分布式系统上进行实验的学科,目的是建立对系统抵御生产环境中失控条件的能力以及信心。因此混沌工程是一门学科,它提供了基本的理论指导,而故障演练是混沌工程的具体实践,通过向目标系统注入真实可能发生的故障来考量系统的稳定性。

混沌工程和 AHAS Chaos

AHAS Chaos 是以混沌工程为理论指导的故障演练平台,目标是成为混沌工程领域的最佳平台实践,因此在功能设计上紧紧围绕了混沌工程的基本原则。

原则1 建立一个围绕稳定状态行为的假说

  • 稳定状态规定了在演练开始前需要定义好观测的指标,这些指标需要可以真实的反应系统的健康程度,并且您还需要知道当前的故障场景对指标可能造成的影响。
  • 假说就是在演练之前您需要知道演练可能会对系统有什么影响,并且通过演练去验证。

以上两点强调了系统指标的重要性,在实验期间您需要持续监控这些指标,并且根据指标做出相应的措施,比如进一步扩大演练范围或者停止演练等。

AHAS Chaos 提供了全局监控配置,可以帮助您在演练期间实时监测系统状态,及时处理预期之外的情况。AHAS Chaos 除了提供一些基础的系统指标如CPU、内存、网络、磁盘之外,还集成了阿里云的 ARMS,如果您的应用已经接入 ARMS 就可以在 AHAS Chaos 里直接观测到对应的指标,后续也将会集成更多的监控系统,功能如下图所示。详情请参见创建演练function

原则2 多样化真实世界的事件

在故障演练开始之前,您需要思考以下问题,在现实生活中,系统已经发生过哪些问题?可能会发生什么样的新问题?有哪些问题是正在解决中的?这些问题可以帮助您在设计演练流程时选择和系统业务有关的更优场景。

为了帮助您选择合适的演练场景,AHAS Chaos 在功能设计上做了以下两点:
  • 丰富的演练场景

    首先在全面性上 AHAS Chaos 的演练场景覆盖了从基础设施、应用层到容器服务、云原生等多维度的领域,在场景真实性上 AHAS Chaos 也做了严格的筛选,无论是基础设施还是应用层针对的都是通用的组件,是被大多数的系统和业务所依赖的,比如 CPU、磁盘、网络、MySql 等,此外 AHAS Chaos 还提供了阿里云组件的故障注入能力。

  • 演练经验
    如果说演练场景是基于组件维度的,那么演练经验就向您提供了基于架构维度和故障效果维度的场景筛选,您无需手动配置流程,直接使用系统推荐的模板就可以生成演练,功能如下图所示。演练经验库

原则3 在生产环境中运行实验

混沌工程推荐故障演练是在生产环境中进行,主要的原因有以下两点:
  • 系统的行为会根据环境和流量模式的变化,例如系统依赖的组件在测试环境和生产环境会有比较大的差异。
  • 系统的监控和人员的应急响应在测试环境和生产环境也会有比较大的差异。
AHAS Chaos 无法知道您当前的演练环境是否属于生产环境,为了更好的演练我们建议您将生产环境的演练和测试环境演练进行区分,您可以通过 Chaos 提供的 Namespace 功能将演练分为测试环境和线上环境,针对不同的环境指定响应的演练策略。演练列表

原则4 持续自动化运行实验

由于系统、业务以及依赖的环境是在不断的变化,故障演练也需要持续的进行下去,因此自动化的故障演练是必不可少的环节。

演练平台必须高效安全,为此 Chaos 提供了以下能力:
  • 提供了演练流程编排能力和多种演练运行方式。
  • 可以根据您配置的恢复参数来自动恢复演练。
  • 您还可以通过配置定时任务来自动化运行演练。
一个完整的演练配置如下图所示。完整演练配置

原则5 最小化爆炸半径

最小化爆炸半径意味着混沌工程的影响范围必须得到控制,逐渐扩大故障范围,要保证演练是可控的,因此在演练当中需要您时刻关注在稳态假设中配置好的系统指标,如果影响范围超出了预期,请立刻终止演练,并且修复问题。如果影响范围没有达到预期,您也需要考虑下场景选择的合理性,演练的范围大小,或者其他的问题。

AHAS Chaos 从多方面来控制演练的爆炸半径:
  • 机器和场景选择方面

    AHAS Chaos 已经将安装了演练探针的机器分成了主机和容器服务 K8S(Kubernetes)集群两种维度,方便您控制机器范围,同时在演练场景上,AHAS Chaos 针对主机和 K8S 可以选择的场景也做了区分,防止因为机器或者场景的错误选择而导致演练失败。

  • 一键停止演练按钮
    AHAS Chaos 提供了多个演练停止入口来让您立刻终止演练,并且演练终止都会自动恢复已经注入的故障。详情请参见停止演练
    • 在演练列表页面,您可以一键停止所有的演练任务。
    • 在演练执行界面,您可以立刻终止演练。
    • 在演练流程节点上,您也可以单击停止来终止演练。
  • 基于指标自动恢复演练
    AHAS Chaos 不但提供了多种手动演练入口,还可以配置自动恢复策略,请参见以下两种策略。
    • 基于监控指标的自动恢复,如果指标触发了恢复规则,系统会自动执行演练恢复操作。
    • 基于演练时长的自动恢复。

更多信息

关于 AHAS Chaos 的更多信息,请参见Chaos Engineering 的历史、原则以及实践混沌工程实践经验:如何让系统在生产环境中稳定可靠