@babydragon
2016-10-31T18:32:16.000000Z
字数 1214
阅读 2094
未分类
最近Netflix发布了Chaos Monkey 2.0,将其与Netlfix的持续交付平台Spinnaker深度结合,增加了多种后端的支持。
Chaos Monkey是在Netflix整体微服务化的形势下开发的。为了增加微服务架构的弹性,需要确保当服务集群中有节点失败或者退出时不会影响整体服务。由于Netflix的内部文化,没有办法通过框架或者编码规范来形成一套能够满足弹性要求的框架。最终,Netflix选择开发了Choas Monkey:一个在生产环境随机选择并关闭服务的工具。对于这个选择,有人会觉得很疯狂,但是通过频繁的服务失败演练,使得开发团队对服务集群稳定性有了更高的重视,以确保不会因为这些演练对最终用户产生影响。
Netflix将Chaos Monkey定位为提升服务质量的高效工具。最近发布的2.0,除了带来更好的可维护性,也带来了一些新的特性。
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页面。