问题描述
服务器在运行良好的情况下突然崩溃了,他想知道是谁导致了这个问题,为什么会发生这样的事情,以及为什么有人要破坏他的服务器。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
概述
Chaos Monkey是Netflix在2010年开发的一种工具,它是Netflix Simian Army中的一员。它基于混沌工程的原则,通过不断引入故障来增加系统的弹性。Chaos Monkey的目标是在工作时间内随机关闭Auto Scaling Group中的实例,以便工程师能够快速发现并解决故障。
Simian Army
Simian Army是一组用于引入故障、检测异常条件和测试系统抗故障能力的服务(也称为Monkeys)。除了Chaos Monkey之外,还有其他一些Monkey,它们通过不同的方式引入故障或帮助移除系统中的弱点。以下是一些常见的Monkey:
– Latency Monkey:向服务引入随机延迟。
– Chaos Gorilla(也称为Chaos Kong):模拟整个可用区的故障。
– Conformity Monkey:关闭不符合最佳实践的实例。
– Security Monkey:检查配置和服务中已知的安全漏洞。
– Doctor Monkey:关闭不符合特定指标的不健康实例。
– Janitor Monkey:查找未使用的资源并回收它们。
失败是不可避免的
在系统中,故障是不可避免的,总会出现问题。你可能无法选择故障的具体形式,但可以尝试选择故障发生的时间。通过在一天中引入小的错误,你可以确保工程师在场并能够快速解决故障。通过快速关闭不符合规范的服务,你可以确保故障在部署之前经常发生。通过使环境更具对抗性,你可以确保开发人员在任何服务进入生产之前就遇到问题。故障将在新服务与旧服务集成的阶段迅速显现,但这没关系,因为旧的生产服务已经具备了弹性。
牛群而非宠物
现在,人们普遍认为不应将服务器视为宠物,而应将其视为牛群。大量可扩展实例的群体将比任何单个故障点更具优势。无论你如何调整和优化服务器,无论你使用多么强大的硬件,它都无法与一群小型可扩展实例相媲美。Chaos Monkey鼓励你考虑消除所有故障点,因为迟早,猴子会来!每个人都会失败,即使是Amazon S3也会发生不可预测的故障。
抗脆弱性
那么这个理论是什么,为什么它有效?纳西姆·尼古拉斯·塔勒布在他的书《反脆弱》中描述了一个概念,即有自我意识的生活系统会从小的随机性中受益,并在面对逆境时变得更好。这类似于退火过程。他还描述了一种进化的方式,即系统中部分的脆弱性转化为整体的反脆弱性。这种转化发生在两个层面上:
1. 通过小的随机变化(开发人员进行更改),适应环境的最适应者将幸存并传播(通过测试并进行部署)。这是标准的开发生命周期。
2. 通过无法承受更大随机性的部分的故障,剩下的部分能够承受更大随机性的系统,整体上比以前更能应对不断变化的环境。这就是Chaos Monkey的作用。
更大程度的随机性可以通过第二种方法承受。