跳至主内容

如何在物理机上运行混沌实验

· 1 分钟阅读
Xiang Wang
Committer of Chaos Mesh
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

如何在物理机上运行混沌实验
如何在物理机上运行混沌实验

Chaos Mesh 是一款面向云原生环境的混沌工程平台,可在 Kubernetes 环境中编排混沌实验。通过 Chaos Mesh,您可以模拟多种故障类型,并直接使用 Web 界面 Chaos Dashboard 管理混沌实验。自开源以来,Chaos Mesh 已被众多企业采用,用于确保系统的韧性与健壮性。但在过去一年中,我们频繁收到社区咨询:当服务未部署在 Kubernetes 上时,如何运行混沌实验?

什么是 chaosd

为满足日益增长的物理机混沌测试需求,我们隆重推出增强版工具集 chaosd。您可能对这个名称感到熟悉,因为它正是从 Chaos Mesh 的核心组件 chaos-daemon 演进而来。在 TiDB Hackathon 2020 上,我们重构了 chaosd 使其超越命令行工具范畴。如今通过 chaosd v1.0.1,您可以针对物理机模拟特定故障,并能在实验后彻底消除影响,仿佛从未发生过。

chaosd 的优势

chaosd 具备以下核心优势:

  • 操作简便:通过 chaosd 命令即可轻松创建和管理混沌实验

  • 故障类型丰富:可在物理机不同层级注入多种故障,包括进程故障、网络故障、Java 虚拟机(JVM)应用故障、压力场景、磁盘故障及主机故障

  • 支持多工作模式:既可作为命令行工具使用,也能以服务形式运行

话不多说,让我们立即上手体验

如何使用 chaosd

本节将引导您使用 chaosd 注入网络故障。请注意,您的 glibc 版本需为 v2.17 或更高

1. 下载并解压 chaosd

运行以下命令下载 chaosd:

curl -fsSL -o chaosd-v1.0.1-linux-amd64.tar.gz https://mirrors.chaos-mesh.org/chaosd-v1.0.1-linux-amd64.tar.gz

解压后包含两个目录:

  • chaosd 包含 chaosd 工具主入口

  • tools 包含执行混沌实验所需的工具集,包括 stress-ng(模拟压力场景)、Byteman(模拟 JVM 应用故障)以及 PortOccupyTool(模拟网络故障)

2. 创建混沌实验

本实验中,目标服务器将无法访问 chaos-mesh.org

运行以下命令:

sudo ./chaosd attack network loss --percent 100 --hostname chaos-mesh.org --device ens33

输出示例:

Attack network successfully, uid: c55a84c5-c181-426b-ae31-99c8d4615dbe

此模拟使 ens33 网卡无法与 chaos-mesh.org 收发网络数据包。之所以需要使用 sudo 命令,是因为混沌实验需要修改网络规则,这要求 root 权限

请注意保存混沌实验的 uid,后续恢复流程需要用到该标识符

3. 验证结果

使用 ping 命令检查服务器能否访问 chaos-mesh.org:

ping chaos-mesh.org
PING chaos-mesh.org (185.199.109.153) 56(84) bytes of data.

执行命令后,目标网站很可能无响应。按 CTRL + C 终止 ping 进程,此时可查看命令统计信息:显示 100% packet loss(数据包全部丢失)。

输出示例:

2 packets transmitted, 0 received, 100% packet loss, time 1021ms

4. 恢复实验

运行以下命令恢复实验:

sudo ./chaosd recover c55a84c5-c181-426b-ae31-99c8d4615dbe

输出示例:

Recover c55a84c5-c181-426b-ae31-99c8d4615dbe successfully

此步骤同样需要 sudo 权限,因为需 root 权限才能修改网络规则。实验恢复后,请再次尝试 ping chaos-mesh.org 验证网络连通性。

后续规划

支持 Web 控制台

当前 chaosd 已具备易用性,但我们计划通过开发 Web 控制台进一步简化操作。

我们将持续提升可用性,并实现更多功能——例如统一管理通过 chaosd 和 Chaos Mesh 执行的混沌实验,为 Kubernetes 和物理机环境提供一致的测试体验。以下架构仅为初步示意:

Chaos Mesh 优化架构
Chaos Mesh 优化架构

详见 Chaos Mesh 优化架构详解

增加故障注入类型

当前 chaosd 支持六类故障注入。我们计划实现更多 Chaos Mesh 已支持的故障类型,包括 HTTPChaos 和 IOChaos。

欢迎认领改进任务参与共建!

立即体验!

若想深入探索 chaosd,请查阅官方文档。遇到问题或功能建议时,欢迎提交 issue,期待您的反馈!