我们有一个应用程序,客户可以将数据和文档上传到多个EC2实例。 我们在EBS卷上存储上传内容。
偶尔我们的应用程序将失败。 有时候,这是在我们的应用程序服务器,有时是坏的EC2硬件。
我怎样才能自动恢复一个特定的实例? 换句话说,当一个实例变得不可用超过X分钟时,我想自动终止实例,启动一个新的实例(可能在新硬件上),并附加旧的EBS卷,以保留客户的数据。
有没有办法设置CloudWatch或自动缩放来做到这一点?
我怎样才能自动恢复一个特定的实例? 换句话说,当一个实例变得不可用超过X分钟时,我想自动终止实例,启动一个新的实例(可能在新硬件上),并附加旧的EBS卷,以保留客户的数据。
这可以使用亚马逊API来完成。 基本上,有一个cron每12小时左右拍摄ebs卷的快照….然后有nagios检查主机,并在10次失败后,有nagios执行一个脚本来调用api工具。 那么nagios执行脚本可以:
1)find主机的instanceid(通过ssh'ing进入主机和http'ing aws元数据,或通过grep'ing ec2-describe-instance)
2)终止实例id(ec2-terminate-instance)
3)从快照创build卷(ec2-create-volume)
4)基于ami(ec2-run-instance)启动新实例
5)将新卷附加到实例(ec2-attach-volume)
aws cli api工具: http : //aws.amazon.com/developertools/351
还有其他一些问题,比如dns,弹性IPS,安全组,终止保护以及可能需要解决的应用层服务configuration。 运行ec2-run-instance -h获取更多帮助,或访问aws api论坛…