使用混沌工程工具检查生产可靠性

让我们来看看如何在混沌工程工具的帮助下保持生产的可靠性。

混沌工程是一门学科,您可以在其中对系统或应用程序进行试验,以揭示其弱点和容量故障。 这些是您在创建它时认为不会发生的事情。 因此,您会故意在系统上造成一些故障,以显示其弱点以进行修复并使您的系统和应用程序更具弹性。

许多流行的组织,如 Netflix、LinkedIn 和 Facebook,执行混沌工程以更好地了解他们的微服务架构和分布式系统。 它有助于比真正的用户投诉更快地发现新问题并采取必要的措施来纠正它们。 这就是这些组织可以为数百万用户提供服务、提高他们的生产力并节省数百万美元的方式 🤑。

混沌工程的好处:

  • 通过发现关键问题来控制收入损失
  • 减少系统或应用程序故障
  • 更好的用户体验,更少的中断和更高的服务可用性
  • 它可以帮助您了解系统并获得信心。

您对生产可靠性的信心如何? 真的是防灾吗?

让我们借助以下流行的混沌测试工具找出答案。

混沌网格

混沌网格 是一种混沌工程管理解决方案,可将故障注入 Kubernetes 系统的每一层。 这包括 pod、网络、系统 I/O 和内核。 Chaos Mesh 可以自动杀死 Kubernetes pod 并模拟延迟。 它可以中断 pod 到 pod 的通信并模拟读/写错误。 它可以为实验安排规则并定义其范围。 这些实验是使用 YAML 文件指定的。

Chaos Mesh 有一个仪表板来查看实验分析。 它运行在 Kubernetes 之上并支持大多数云平台。 它是开源的,最近被接受为 CNCF 沙盒项目。 使用混沌工程原理,您可以将混沌网格添加到您的 DevOps 工作流程中,以构建弹性应用程序。

混沌工程特点:

  • 无需修改部署逻辑即可轻松部署在 Kubernetes 集群上
  • 部署不需要唯一的依赖项
  • 使用 CustomResourceDefinitions (CRD) 定义混沌对象
  • 提供仪表板来跟踪所有实验

混沌工具包 是一个用于混沌工程实验自动化的开源且简单的工具。

您可以使用一组支持 AWS、Google Cloud、Slack、Prometheus 等的驱动程序或插件将 Chaos ToolKit 与您的系统集成。

  如何解决 Surface Pen 无法在 Surface 平板电脑上书写的问题

混沌工具包功能:

  • 提供声明式开放 API 以创建独立于供应商或技术的混沌实验
  • 可轻松嵌入 CICD 管道以实现自动化
  • 还通过以下方式提供商业和企业支持 混沌智商

混沌库贝

正如您可以从名称中猜到的那样,它适用于 Kubernetes。

混沌魔方 是一个开源混沌工具,可以定期杀死 Kubernetes 集群中的随机 pod。 它可以帮助您了解当 pod 发生故障时您的系统将如何反应。 默认情况下,它每 10 分钟杀死任何命名空间中的一个 pod。 您可以使用命名空间、标签、注释等过滤 Chaoskube 中的目标 pod。使用 Chaoskube 可以轻松安装它。

混沌猴

混沌猴 是一种用于检查云系统弹性的工具,通过故意为这些系统制造故障以了解它们的反应。 Netflix 创建它是为了测试其 AWS 基础设施的弹性和可恢复性。 它之所以被命名为混沌猴,是因为它像一只狂野的武装猴子一样制造破坏来测试失败。

也是混沌猴,催生了新的工程实践混沌工程。 它的创建原则是最好重复失败,以避免突然出现任何重大失败。

混沌猴特点:

  • 它可以帮助您为随机实例故障做好准备。
  • 鼓励针对意外故障的冗余
  • 使用 Spinnaker 实现跨云兼容性
  • 提供可配置的时间表来模拟故障
  • 与集成 总督 向 Chaos Monkey 添加任何新的依赖项

西米

西米 是一个故障注入混沌工具,与 .NET 的 Polly 弹性项目集成。 它允许您通过执行代码的 Polly 创建混沌注入策略。 它提供了不同的策略,例如在系统中注入异常的异常策略、注入任何新行为的行为策略等。这些策略旨在随机注入行为。

西米特点:

  • 提供 Monkey 策略或 Chaos 策略以注入混乱
  • 易于测试任何依赖失败
  • 它有助于快速恢复到工作模型并控制爆炸半径。
  • 它已准备好生产级。
  • 它还可以根据外部因素定义故障(例如,由于全局配置导致的故障)

皮斯托尔

皮斯托尔 是一种用于在云原生环境中注入错误注入的工具。 它通过 Kubernetes 操作员监视 ETCD 中的事件。 当执行故障注入操作时,操作员会创建 pod 并运行一些 Ansible 集合。 因此,开发人员无需编写自己的操作来执行。

Pystol 提供现成的操作来测试系统。 不过,如果开发人员想要创建一个新动作,可以使用 GoLang 和 Python 来完成。

  如何在 PowerPoint 中嵌入播客

它提供了一个持续集成仪表板,以提供所有作业操作的摘要视图。 您可以在本地运行 Pystol,也可以使用其 docker 映像将其部署在容器中。 Pystol提供了两种界面,一种是Web UI,一种是通过CLI。 显然,Web UI 是更好的选择。

多汁

多汁 是测试您的弹性和容错模式以应对现实世界分布式系统故障的代理。 它可以篡改传输层(第 4 层)、TCP 会话层(第 5 层)和 HTTP 协议层(第 7 层)。

多变的特点:

  • 模块化架构,易于扩展
  • 有官方 docker 容器
  • 易于安装,无需依赖。
  • 连续测试弹性的理想选择
  • 模拟分布式系统和移动设备的网络连接问题

彭巴

彭巴 是一个命令行工具,用于对 docker 容器进行混沌测试。 使用 Pumba,您可以故意使应用程序的 docker 容器崩溃,以查看系统如何反应。 您还可以对容器资源进行压力测试,例如 CPU、内存、文件系统、输入/输出等。

您还可以在 Kubernetes 集群上运行 Pumba。 您必须使用 DaemonSets 在 Kubernetes 节点上部署 Pumba。 您可以使用多个 Pumba 容器在同一个 DaemonSet 中运行多个 Pumba 命令。

混沌之刃

混沌之刃 是阿里巴巴为系统注入实验的开源工具。 它测试了阿里巴巴在过去十年中面临的所有失败,并应用最佳实践来避免它们。 它遵循混沌工程原理来检查分布式系统的容错性。

混沌之刃特点:

  • 提供CPU、网络、内存、磁盘等多种资源的实验场景。
  • 提供 Kubernetes 平台上节点、网络和 Pod 的实验场景
  • 提供易于使用的 CLI 命令来执行实验

石蕊

石蕊 遵循云原生混沌工程原则。 litmus 工具的任务是提供一个完整的框架,用于发现 Kubernetes 系统和在 Kubernetes 上运行的应用程序中的弱点。

它有一个混沌运算符和围绕它的 CRD (CustomResourceDefinitions),允许即插即用功能。 这一切都是为了将​​您的混沌逻辑放入 docker 映像中,将其放入石蕊框架中,并使用 CRD 进行编排。

石蕊特点:

  • 帮助站点可靠性工程师和开发人员发现 Kubernetes 系统中的弱点
  • 提供即用型通用实验
  • 为混沌工作流管理提供混沌 API
  • Litmus SDK 支持 Go、Python 和 Ansible 来创建您自己的实验。
  识别桌面或附近设备上播放的音乐

小精灵

小精灵 帮助工程师构建更具弹性的软件。 它提供了一个安全、可靠、直接地运行混沌工程实验的平台。

无论它们在哪里,无论是公共云还是您自己的数据中心,您都可以使用 gremlin 将故障注入到主机或容器中。

小鬼特点:

  • 在您的主机或容器上安装轻量级代理以注入故障
  • 提供10+种不同的基础设施攻击模式
  • 状态 gremlins 可让您操纵系统时间、关闭或重新启动主机以及终止处理器。
  • 网络 gremlins 可以注入延迟以引入数据包丢失或丢弃流量。
  • Gremlin 的 Alfi 库攻击可以通过 Web 应用程序进行配置、启动和停止。 API 或 CLI
  • 允许您精确瞄准您想要攻击的爆炸半径
  • 允许您停止所有攻击并将系统回滚到稳定状态

稳定比特

稳定比特 旨在主动减少停机时间并提供对系统问题的可见性。 您可以在基础架构或云即服务 (SaaS) 上本地运行此工具。

要使用 Steadybit,您需要定义情况、模拟实验、在生产环境中执行模拟实验并自动化所有实验。 它在您的系统上运行智能代理以发现潜在问题和弱点。 它可以轻松地与多个系统集成。

结论

继续勇敢地应用混沌工程原理并使用上述工具测试您的产品。 这些工具将帮助您发现系统中的多个未知弱点,并帮助您提高系统的弹性。