本文向您介绍故障演练的产品架构,以下简称故障演练为 AHAS Chaos。

产品架构如下图所示:架构图

AHAS Agent

AHAS Agent 安装在指定的目标机器上,用来执行服务端下发的故障注入命令以及采集演练相关的必要信息,比如 CPU、内存占用等,主要有以下特点:
  • 快捷高效
    • 支持一键安装控制台,如果是公网机器则支持用户手动安装。
  • 安全可靠
    • 除非演练的故障场景需要作用于应用进程,例如 Java 类的故障场景,否则 Agent 本身对应用无入侵。
    • 网络异常可自动重试。
    • 数据传输通道严格加密,保证数据安全。
  • 完善的自我保护
    • 实时监控系统资源,不占用过多带宽。
    • 非用户手动卸载情况下的异常退出可以自我保活。

ChaosBlade

ChaosBlade 是 AHAS Agent 的核心组件,用来解析、校验和执行服务端下发的故障指令,并且已正式对外开源,该产品具有以下特点:
  • 设计简洁
    • 清晰易懂的混沌工程实验模型,易于理解。
    • 自带完善的命令行工具,方便本地调试。
  • 功能稳定
    • 在阿里内部被广泛使用,已通过真实环境的严格考验。
    • 活跃的开源社区确保了功能的不断迭代和缺陷的快速修复。
  • 场景丰富
    • 基础资源:CPU、内存、网络、磁盘、进程等实验场景。
    • Java 应用:数据库、缓存、消息、JVM 本身、微服务等,还可以指定任意类方法注入各种复杂的实验场景。
    • 云原生场景:节点上 CPU、内存、网络、磁盘、进程实验场景,Pod 网络和 Pod 本身实验场景如杀 Pod,容器的实验场景如杀容器、容器内 CPU、内存、网络、磁盘、进程等实验场景。

AHAS Service

AHAS Chaos 的后端服务,用来下发演练命令,管理演练数据,主要的功能特点如下:
  • 功能完善
    • 通过流程编排来组织故障演练场景。
    • 资源管理帮助您更方便的了解演练的机器资源使用情况。
  • 稳定可靠
    • 分布式的部署方式和完善的监控系统保证了演练功能的高可用性。
    • 服务在极端情况不可用情况下支持用户通过手动执行命令来恢复演练。