我可以在AWS Autoscale组终止运行状况不佳的实例之前对其进行快照吗?

时间:2018-08-04 19:58:18

标签: amazon-web-services amazon-elb amazon-cloudwatch autoscaling

我有一个由ASG控制的ec2实例的3节点群集。当任何在ec2上运行的应用程序服务器行为异常时,elb运行状况检查将失败,因此asg将终止它并重新创建一个新实例。因此,从某种意义上说,我的设置是自我修复的,在这种情况下,我想对实例进行更多调试。我想要一个快照或行为异常的实例,以便深入研究问题。

任何建议如何实现?

谢谢。

1 个答案:

答案 0 :(得分:1)

DetachInstances

最好的方法是调用detach-instances,它会从Auto Scaling组中删除一个实例并有选择地替换它。

但是,在运行状况检查失败后触发此命令并不容易。

Auto Scaling生命周期挂钩

您可以配置Amazon EC2 Auto Scaling Lifecycle Hook,它将在实例终止之前被调用。然后,您的生命周期挂钩可以快照该卷。但是,我不确定运行状况检查失败时(而不是发生放大事件时)是否调用了生命周期终止挂钩,因此这需要进行一些测试。

CloudWatch触发Lambda

另一个选择是:

  • 不要将Auto Scaling配置为使用负载均衡器运行状况检查
  • 如果实例未通过ELB运行状况检查,则ELB将不会向该实例发送流量,因此您的应用程序仍然可以正常运行
  • 当附加到ELB的不正常实例的数量大于零时,使用CloudWatch Alarm触发Lambda函数
  • Lambda函数可以检查状态以确定哪个实例不正常,然后调用detach-instances将其从Auto Scaling组中删除
  • 因此,您可以访问Auto Scaling组之外的运行状况不佳的实例,而不必使用EBS快照