在一段时间后自动终止Auto Scaling实例

时间:2017-07-17 23:52:42

标签: amazon-web-services autoscaling

我们使用Amazon EC2 Auto Scaling组来处理大量应用程序 - 众所周知,尽管你最努力的是不要让内存泄漏而其他问题“一直存在问题” - 但这仍然是可能的。

我们希望通过弹回服务器来防止这种可能性 - 即确保一个实例仅持续24小时才能杀死它。但是,我们希望查杀是“安全的” - 例如 - 即使组中只有一个实例,我们想要将另一个实例启动到工作状态,然后杀死旧框。

对此有任何支持吗?例如,实例上的生存时间属性?

2 个答案:

答案 0 :(得分:3)

Amazon EC2和Auto Scaling中没有此类属性。

您可以手动set the instance healthUnhealthy,这会导致Auto Scaling终止并替换该实例。但是,如果您只有一个实例,那么可能会有一个没有实例的时期。

您可以将Auto Scaling termination policy设置为OldestInstance,这意味着当自动缩放需要终止实例时,它将终止具有最多实例的AZ中最旧的实例。这样可以摆脱旧实例,但只有当该组被缩放时才会消除。

因此,您可以使用向外扩展该组的脚本补充终止政策,然后再次使其向内扩展。例如,将实例数加倍,等待它们启动,然后将实例数减半。这应该会导致它们全部刷新(如果您的实例分布在多个AZ中,则会出现一些边缘条件,从而导致非偶数计数。)

另一种选择是重新启动实例。这将使它们对Auto Scaling显得不健康,但它们对Load Balancer来说似乎不健康。 (如果您已在Auto Scaling中激活了ELB运行状况检查,则Auto Scaling实际上会终止实例未通过运行状况检查。)您可以使用Scheduled Events for Your Instances让Amazon CloudWatch Events以特定间隔重启您的实例,或者甚至在实例上有一个脚本告诉操作系统以一定的间隔重新启动。

但是,没有自动选项可以完全按照您的要求进行操作。

答案 1 :(得分:0)

自2019年以来,有一个Maximum Instance Lifetime参数,几乎可以满足您的要求。

但是,不幸的是,无法将实例的最大生存期设置为24小时(86400秒):最小为一周。

最大实例生存期必须等于0,介于604800到31536000秒(含)之间,或者未指定。