写点什么

Netflix Chaos Monkey 2.0 发布

  • 2016-11-16
  • 本文字数:1045 字

    阅读完需:约 3 分钟

Chaos Monkey 是在 Netflix 整体微服务化的形势下开发的。为了增加微服务架构的弹性,需要确保当服务集群中有节点失败或者退出时不会影响整体服务。由于 Netflix 的内部文化,没有办法通过框架或者编码规范来形成一套能够满足弹性要求的框架。最终,Netflix 选择开发了 Choas Monkey:一个在生产环境随机选择并关闭服务的工具。对于这个选择,有人会觉得很疯狂,但是通过频繁的服务失败演练,使得开发团队对服务集群稳定性有了更高的重视,以确保不会因为这些演练对最终用户产生影响。

Netflix 将 Chaos Monkey 定位为提升服务质量的高效工具。最近发布的 2.0,除了带来更好的可维护性,也带来了一些新的特性。

和 Spinnaker 集成

Spinnaker 是 Netflix 的持续交付平台,Chaos Monkey 2.0 和它结合之后,可以在 Spinnaker 上对其进行配置。同时 Chaos Monkey 可以从 Spinnaker 获取服务部署的相关信息并通过 Spinnaker 关闭服务实例。

由于集成了 Spinnaker,Chaos Monkey 增加了对多种后端的支持,包括:AWS、GCP、Azure、Kubernetes、Cloud Foundry。

Chaos Monkey 2.0 还在配置上进行了优化,用户可以设置两次终止之间的平均时间,而不是在任意时段内的概率。另外,针对服务所在的环境进行分组,分组方式延续了 AWS 的概念,包括应用、应用栈(stack)和集群。配置页面如下:

追踪关闭行为

Chaos Monkey 2.0 可以单独配置外部追踪器,当 Chaos Monkey 对某个实例进行了关闭操作后,它会向配置的追踪器发送通知。对于 Netflix 内部使用来说,Chaos Monkey 会将通知发送到 Atlas (Netflix 的检测系统)和 Chronos (Netflix 的事件追踪系统)。下图是 Atlas 系统的截图,展示了 Chaos Monkey 对于部分服务的关闭操作行为,值得注意的是,Chaos Monkey 还会关闭自己的服务实例。

其他改变

之前版本的 Chaos Monkey,除了支持关闭服务实例之外,还支持其他一些操作系统级别的破坏,例如提高 CPU 占用率、阻塞网络 IO、写满硬盘空间等。Chaos Monkey 2.0 移除了这些功能,只支持关闭服务实例。对于这些功能移除,Netflix 的工程师认为,这些功能应该被放到故障注入服务中进行定向注入,而不是作为 Chaos Monkey 的随机操作之一。关于故障注入,Netflix 也有一些介绍

Chaos Monkey 2.0 源码在其 Github 仓库上已经可以下载和部署。详细部署方式参见 Chaos Monkey 的 wiki 页面


感谢陈兴璐对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-11-16 18:002859

评论

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

在线问题反馈模块实战(九)​:实现图片上传功能(下)

bug菌

springboot 项目实战 10月月更

数据量剧增怎么办?Redis切片集群了解一下

芥末拌个饭吧

后端 redis 底层原理 10月月更

【小程序】一文读懂微信小程序登录流程及获取手机号

言程序

小程序 前端 10月月更

Fabric8 Docker Maven Plugin 如何让部署的时候执行 Docker 打包推送

HoneyMoose

IP报文在阿里云上的神奇之旅:同地域内云上通信

阿里技术

通信 IP 路由

“程”风破浪的开发者|镜像仓库迁移的方法

琦彦

学习方法 Harbor 10月月更 “程”风破浪的开发者

Webpack插件核心原理

Geek_02d948

webpack

Webpack中的高级特性

Geek_02d948

webpack

Webpack完整打包流程分析

Geek_02d948

webpack

Vue虚拟dom是如何被创建的

yyds2026

Vue

Maven docker-maven-plugin 插件 Push 413 错误

HoneyMoose

“程”风破浪的开发者|慢慢踏上算法学习之旅

六月暴雪飞梨花

学习方法 算法 10月月更 “程”风破浪的开发者

Vue中的diff算法深度解析

yyds2026

Vue

在线问题反馈模块实战(七):安装部署swagger2

bug菌

springboot 项目实战 10月月更

深度解读Webpack中的loader原理

Geek_02d948

webpack

Webpack中的plugin插件机制

Geek_02d948

webpack

HashMap源码分析(三)

知识浅谈

HashMap底层原理 10月月更

ScheduledThreadPoolExecutor踩过最痛的坑

小小怪下士

Java 程序员

Visual Studio (VS2017)提交代码到Git服务器流程(GitCode)

DS小龙哥

10月月更

CentOS 上安装 Sonatype Nexus 仓库

HoneyMoose

Sonatype Nexus 管理员初始密码

HoneyMoose

深入浅出--Linux基础命令知识(总结,配图文解释)

木偶

Linux ubuntu 10月月更

银斯微推出跨平台APP生成、发布Non-Stop云服务“W-Hive”

科技热闻

从零到一搭建一个属于自己的博客系统(弌)

木偶

django 前端 10月月更

CentOS部署Harbor镜像仓库

程序员欣宸

Docker 10月月更 habor

Qt|模态窗口如何实现进入页面等待加载数据效果

中国好公民st

c++ qt 10月月更

你知道Redis有哪些潜在的阻塞点吗

芥末拌个饭吧

后端 redis 底层原理 10月月更

Python继承还不会,看这篇就够了

芥末拌个饭吧

继承 python 3.5+ 10月月更

React源码中的dom-diff

夏天的味道123

React

在线问题反馈模块实战(八)​:实现图片上传功能(上)

bug菌

springboot 项目实战 10月月更

Netflix Chaos Monkey 2.0发布_语言 & 开发_金灵杰_InfoQ精选文章