Fault Injection Testing 概览

借助 Fault Injection Testing,您可以进行故障注入实验,这是一种向系统引入故障以测试其弹性,避免故障导致影响客户的真实意外失败的方法。借助 Fault Injection Testing,您可以 将故障注入到环境中的各种组件,以确保 Google Cloud 应用以可预测的方式处理这些故障。

对于 Fault Injection Testing 的初始版本,故障通常等同于目标资源的失败。如果您已在应用中设计了容错功能,这些故障应会触发应用将流量重定向到运行正常的实例。

您需要在注入故障之前、期间和之后观察应用,以验证应用是否按预期处理了故障。

为何使用 Fault Injection Testing?

借助 Fault Injection Testing,您可以针对各种失败场景,对应用的弹性进行实验 Google Cloud 。此范围的主要部分是运行实验,以模拟可用区和区域失败,而您自己很难或无法完全运行这些实验。 Google Cloud 此外,Fault Injection Testing 还是一个有价值的开发和改进工具,让您可以在将设计的弹性机制引入生产环境之前对其进行实验。在问题出现在生产环境中之前发现问题,可以更快地改进设计,避免代价高昂的停机时间和声誉损失,并改善您的整体体验。

如果没有原生故障注入产品,您就必须自己进行实验。 Google Cloud自己进行实验存在问题,因为 Google Cloud 是共享环境,并且在许多情况下,您可能无法直接 访问底层服务和基础架构。这种情况可能会导致实验不足且繁琐,最终可能无法有效实现正确实验应用弹性的目标。 Fault Injection Testing 可帮助您减少自动化这些实验的工作量,让您可以访问诱发您无法访问的失败模式,并提高实验工作的保真度。

对于受监管的客户,定期进行实验通常是遵守行业监管机构的要求。在这些情况下,实验通常采用灾难恢复测试的形式,表明可用区或区域的失败不会阻止应用继续有效运行。

可用于实验的故障

以下故障可用

  • 故障切换 Cloud SQL - 将数据库从主数据库故障切换到备用数据库。
  • 应用流量降级 - 通过第 7 层负载均衡器模拟流量降级

这些故障旨在将实验范围限制为单个区域或更窄范围内的单个项目的资源。实验不会影响超出预期范围的范围。但是,这些故障会导致其环境中的目标资源发生实际故障。

通过以 Cloud SQL 数据库或应用负载平衡器等基础架构组件为目标,以及将来支持的其他组件,您可以在自己的应用上下文中合理地模拟可用区或区域失败。

如何使用 Fault Injection Testing

在使用 Fault Injection Testing 之前,请确保满足以下条件:

  • 要进行实验的环境具有一定的冗余。注入故障后,此环境的应用可以继续在冗余基础架构上运行。
  • 对于资源管理员或所有者:请仔细考虑谁有权设置和运行 Fault Injection Testing 实验。 Google Cloud 在环境中的运行基础架构组件上引发故障会导致中断。 Google Cloud 因此,您必须仅向了解其云环境的架构方式 以及如何安全地实验该架构的弹性 的操作员授予权限,以便他们能够以不会导致意外中断的方式配置实验。

使用 Fault Injection Testing 涉及设置实验。如需设置新实验,您首先需要创建实验模板,该模板定义要注入的故障和目标资源。接下来,您将从模板运行实验。实验是模板中定义的一组操作,这些操作将针对您在模板中选择的资源运行。