如何在物理机上运行混沌实验
本页面由 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 和物理机环境提供一致的测试体验。以下架构仅为初步示意:

增加故障注入类型
当前 chaosd 支持六类故障注入。我们计划实现更多 Chaos Mesh 已支持的故障类型,包括 HTTPChaos 和 IOChaos。
欢迎认领改进任务参与共建!