亚马逊网络服务-AWS是否可以定期自动终止并重新创建自动伸缩组的新实例



我们有一个AWS扩展组,在负载均衡器后面有10-20台服务器。运行了几个星期后,有些服务器就坏了。我们不知道服务器为什么会坏,我们需要一些时间才能调试这个问题。

在此期间,有没有办法告诉AWS以可控的方式(一个接一个)终止缩放组中的所有实例,直到每周左右用新实例替换所有实例?

使用数据管道可以非常有效地实现这一点。

这是关于如何使用AWS数据管道按计划间隔停止和启动Amazon EC2实例的开发人员指南?

"自动缩放"中没有任何功能可以告诉它自动终止和替换实例。但是,您可以编写此类功能的脚本。

假设:

  • 终止超过特定小时的实例
  • 一次执行一次,以避免影响可用容量
  • 您希望立即更换

一个合适的脚本可以执行以下操作:

  • 使用describe-auto-scaling-instances循环遍历给定自动缩放组中的所有实例
  • 如果实例属于所需的"自动缩放"组,请通过describe-instances检索其启动时间
  • 如果实例超过所需的小时数,请使用terminate-instance-in-auto-scaling-group--no-should-decrement-desired-capacity终止实例,以便自动替换它
  • 然后,等待几分钟以允许更换它并继续循环

该脚本可以使用AWS命令行界面(CLI)或Python等编程语言创建。

或者,您可以通过简单地调用操作系统关闭实例,将实例编程为在给定的时间段(例如72小时)后自毁。这将导致自动缩放终止实例并替换它。

有两种方法可以实现您想要的目标,计划的自动缩放操作或将它们从ASG中取出一个实例。

计划缩放

根据时间表进行缩放,可以根据可预测的负载变化来缩放应用程序。例如,每周web应用程序的流量从周三开始增加,周四保持高位,周五开始减少。您可以根据web应用程序的可预测流量模式来规划扩展活动。

https://docs.aws.amazon.com/autoscaling/latest/userguide/schedule_time.html

你很可能想要这个。

自动缩放使您能够将处于InService状态的实例置于待机状态,更新或排除实例故障,然后将实例返回服务。处于待命状态的实例仍然是"自动缩放"组的一部分,但它们不会主动处理应用程序流量。

https://docs.aws.amazon.com/autoscaling/latest/userguide/as-enter-exit-standby.html

截至2019年11月20日,EC2 AutoScaling支持最大实例生存时间:https://aws.amazon.com/about-aws/whats-new/2019/11/amazon-ec2-auto-scaling-supports-max-instance-lifetime/

发件人:

最长实例生存时间指定最长时间(in秒),实例可以在服务中。最长持续时间应用于组中的所有当前实例和未来实例。作为实例接近其最大持续时间时,它被终止,并且已更换,不能再次使用。

配置自动缩放的最大实例生存期时组,您必须指定一个至少86400秒(1天)的值。到清除以前设置的值,指定一个新值0。

最新更新