显然,Amazon EC2 服务器仍在物理硬件上运行,因此可能会发生灾难性故障。从架构上讲,我应该构建一个可以水平扩展并解决这些故障的应用程序。
如何模拟 EC2 实例突然崩溃?这应该具有真实设备故障的特征:
- 进程无法干净地终止。
- 内存中的数据没有机会写入磁盘。
- 文件(例如,在 EBS 卷上)没有完全关闭。
- 打开的套接字不会 FIN,它们只是挂起。
答案1
系统出现故障的方式有很多种,因此你可能无法对所有故障进行测试并尝试解决它们。
也许你应该从另一个角度来看:寻找必不可少的服务,然后找到一种方法来随机地明确终止这些服务。无论原因是什么,这都会模拟你关心的故障。
例如,如果您的实例运行 httpd 和 FTP 服务器,您可以偶尔终止这些守护进程并确保可以从中恢复。如果您愿意,您甚至可以使用 AWS API 以编程方式终止整个服务器。
如果恢复不起作用,这也会锻炼你的监控基础设施:-)