【发布时间】:2020-08-15 16:20:50
【问题描述】:
我正在使用自动缩放组为我的应用程序添加和删除其他实例。我使用 CPU 利用率作为我的扩展参数,想知道当实例运行程序并且 CPU 利用率低于 65%(即阈值)时会发生什么。
它是等待实例完成程序还是在那一刻终止实例?如果它在那个时刻终止实例,则可能会导致数据丢失/数据不一致。
任何帮助将不胜感激。
【问题讨论】:
标签: amazon-web-services aws-auto-scaling
我正在使用自动缩放组为我的应用程序添加和删除其他实例。我使用 CPU 利用率作为我的扩展参数,想知道当实例运行程序并且 CPU 利用率低于 65%(即阈值)时会发生什么。
它是等待实例完成程序还是在那一刻终止实例?如果它在那个时刻终止实例,则可能会导致数据丢失/数据不一致。
任何帮助将不胜感激。
【问题讨论】:
标签: amazon-web-services aws-auto-scaling
如果您希望在扩展事件期间阻止或延迟实例,您可以查看lifecycle hooks。
通过启用此自动缩放可以发送一个notification 一个特定的实例操作即将发生(扩大或缩小)。使用服务组合(例如 SNS、Lambda、SSM 等),您将能够以编程方式通知即将终止的实例,然后您可以采取任何必要的措施。
实例终止将等待,直到自动缩放组有一个confirmation,它已经完成,这将导致它被终止。另外一个生命周期钩子会有一个超时,如果超过超时时没有收到确认,那么终止仍然会发生。
【讨论】:
我认为您正在寻找终止政策
看看这个链接:
根据我的经验,无论实例运行什么,它都会被终止
【讨论】:
是等待实例完成程序还是在那一刻终止实例。
很遗憾,我不等。 ASG 在您的实例之外工作,不关心在您的实例上运行的任何程序。
话虽如此,您可以做的事情很少,其中一些描述如下:
一般而言,您应该将应用程序开发为无状态。这意味着应用程序应该“意识到”它们可以随时终止。一种实现方法是使用外部存储系统,例如 S3 或 EFS,它们将在终端之间保持数据。
其他方法是使用termination protection。在这种情况下,应用程序将在处理开始时将其实例置于此状态,然后当计算完成时,终止保护将被移除。
【讨论】: