写点什么

AWS 开源混沌工程工具 AWSSSMChaosRunner

  • 2020 年 9 月 30 日
  • 本文字数:1021 字

    阅读完需:约 3 分钟

AWS开源混沌工程工具AWSSSMChaosRunner

AWS 的工程师们最近写了一篇文章,介绍了一个叫作 AWSSSMChaosRunner 的开源混沌工程工具,他们用它来测试 Prime Video 的故障注入。这个工具使用 AWS Systems Manager 构建,可以在 EC2 实例上执行任意命令,团队可以用它缓解与延迟相关的问题。


AWSSSMChaosRunner 是使用 AWS Systems Manager 构建的,用于针对一组特定的 EC2 实例远程执行命令。通过声明方式指定的命令集合创建了一组注入错误。


Prime Video 软件工程师 Varun Jewalikar 和 AWS 首席开发者(架构)布道师 Adrian Hornsby 写道,典型的混沌工程实验包括模拟资源耗尽和缓慢的网络。对于这样的场景有一些对策,但“它们很少得到充分测试,因为单元测试或集成测试通常不能充分验证它们”。


AWS Systems Manager是一个工具,可以通过一个叫作SSM Agent的代理组件跨 AWS 资源执行各种运维任务。默认情况下,代理被预先安装在某些 Windows 和 Linux AMI 上——它们也有“文档”的概念,类似于可以执行的 Runbook。它还可以执行简单的 shell 脚本,AWSSSMChaosRunner 就是利用了这个特性。SSM 的 SendCommand API 允许跨多个实例执行命令,这些实例可以通过 AWS 标记来过滤。CloudWatch 可以用于在一个地方查看来自所有实例的日志。


安全方面的问题由代理负责,比如创建在 EC2 实例上执行的用户。AWSSSMChaosRunner 可以做的事情包括在一个特定端口上悄悄地中断所有传出的 TCP 流量、在一个接口上引入网络延迟、占用 CPU,等等。需要注意的是,当前支持的故障注入要么是在基础设施上,要么是在 AWS 服务层上。


AWSSSMChaosRunner 源自一组SSM文档,这些文档与将故障注入 AWS 资源有关。根据文中所写,在使用标准 SSM Agent API 执行文档之后,负载生成组件根据应用程序模拟真实的流量。AWSSSMChaosRunner 也可以用于 ECS,但不能用于 Lambda,因为后者是一个完全托管的服务。还有其他方法可以在 AWS Lambda 中进行故障注入。


Prime Video 背后使用了 AWS 服务,它利用 AWSSSMChaosRunner 来测试依赖服务出现高延迟时的性能。Jewalikar 和 Hornsby 提到,AWSSSMChaosRunner 助他们修复了 Elasticache 超时配置的一个 bug。


还有其他可用于执行混沌工程实验的库,早期的一个库是 Netflix 的Chaos Monkey。其他公司也开发了自己的框架,比如 LinkedIn 的Waterbear项目和 Twitter 的Python库Gremlin公司还提供了故障注入服务。


AWSSSMChaosRunner 的源代码可以在 GitHub 上找到。


原文链接


An Open Source Chaos Engineering Library from AWS


2020 年 9 月 30 日 10:321195

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布
暂无评论
发现更多内容

面试官:你说说ReentrantLock和Synchronized区别

叫练

AQS 多线程 ReentrantLock lock 独占锁

Java 程序经验小结:反射机制勿滥用

后台技术汇

28天写作

抽奖小助手——利益相关者

墨狂之逸才

面试学习!我们究竟还要学习哪些Android知识?讲的明明白白!

欢喜学安卓

android 程序员 面试 移动开发

Java9模块化指南

程序员小毕

Java 编程 程序员 面试 开发

anyRTC在音频领域的探索

anyRTC开发者

ios android 音视频 WebRTC 在线教育

融资融券系统搭建

v16629866266

MapReduce练习案例1-统计求和

小马哥

大数据 mapreduce 七日更

Spring 是如何解决循环依赖的?

程序员小航

Java spring 源码 循环依赖

拆解 抽奖助手 的利益相关者

小匚

产品经理 产品经理训练营 无码科技

第二章作业

白知之明

产品经理第二周作业

朱琴

Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件

潘潘和他的朋友们

Java 后端 mybatis mybatis源码

作业:挑一个你喜欢的产品平台,列出产品的利益相关方。

嫉妒的耗子

产品训练营 - 对二次作业

Wangyunnfei

70 张图带你彻底掌握红黑树

Java 数据结构 红黑树

产品经理训练营 - 第二周作业

泡面加煎蛋

CNCF CTO解读:2021云原生最新趋势

华为云原生团队

开源 Kubernetes 开发者 云原生 边缘技术

产品经理训练营 - 第二章作业

Ryun

一看就懂的网络传输介质介绍

实习流水帐(一)

YUKI0506

聊聊架构模式的变迁:从分层架构到微服务架构

华为云开发者社区

架构 软件 微服务 分布式架构 软件设计

阿里开源Redis“神级”手册我粉了!理论源码实战起飞(2021最新)

程序员小毕

Java redis 源码 架构 面试

阿里开始“拆”中台?!中台建设何去何从?

博文视点Broadview

低成本更清晰,下一代视频编码技术将如何实现这一目标?

华为云开发者社区

AI 5G RTC 视频编码 vr

Mybatis系列全解(二):Mybatis简介与环境搭建

潘潘和他的朋友们

Java 后端 mybatis mybatis源码

Mybatis系列全解(三):Mybatis简单CRUD使用介绍

潘潘和他的朋友们

Java 后端 mybatis mybatis源码

产品经理的大局观——

小匚

产品经理 产品经理训练营

面试加分项!Android项目开发如何设计整体架构?学习路线+知识点梳理

欢喜学安卓

android 程序员 面试 移动开发

Mybatis系列全解(一):手写一套持久层框架

潘潘和他的朋友们

Java 后端 mybatis mybatis源码

Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解

潘潘和他的朋友们

Java 后端 mybatis mybatis源码

基于英特尔x86平台构建AI软件生态系统

基于英特尔x86平台构建AI软件生态系统

AWS开源混沌工程工具AWSSSMChaosRunner-InfoQ