时不时地,弹性负载均衡器(ELB)会因为我的某个服务器不可用而将其踢出。这很好——几乎没有中断。
通常,在AWS控制台上重新启动实例就可以解决问题。
我希望当我的EC2实例不可用时,它能够自动重启。
最佳方法是什么?(它恰巧是一个Windows实例,但理论上这不应该有影响)
时不时地,弹性负载均衡器(ELB)会因为我的某个服务器不可用而将其踢出。这很好——几乎没有中断。
通常,在AWS控制台上重新启动实例就可以解决问题。
我希望当我的EC2实例不可用时,它能够自动重启。
最佳方法是什么?(它恰巧是一个Windows实例,但理论上这不应该有影响)
同意 @agmin 的观点,lambda函数是实现这个功能的好方法。您可以通过SNS主题配置CloudWatch警报来触发lambda函数。
我编写了这个实现,它似乎运行良好。可以完全通过命令行设置和配置:
使用自动扩展组并将其设置为保持1个活动实例。如果您的实例崩溃,它将从预定义的实例映像中生成一个新实例。这很容易和方便。
编写一个Lambda函数!
相比运行微实例,它更便宜,并且您可以将其设置为运行在任何您想要的时间间隔。您还可以使用CloudWatch监控它,因此无需单独检查微实例的健康状况。
我正在使用ElasticBeanstalk,它提供了describeInstancesHealth
端点。或者,您可以使用ec2的describeInstanceStatus
端点。
然后,如果检测到不良实例,则ec2的rebootInstances
允许您重新启动一个或多个实例。
您可以通过 CloudWatch Alarm 自动执行此操作。当实例死亡时触发警报,您可以让警报采取的其中一项操作是重新启动实例。无需花费时间制作 Lambda 或让微型实例为您处理此操作。