AWS 自动扩展和 Spot 实例
Posted
技术标签:
【中文标题】AWS 自动扩展和 Spot 实例【英文标题】:AWS autoscaling and spot instances 【发布时间】:2020-05-12 09:46:43 【问题描述】:我正在处理我的小项目,并混合使用现场实例和按需实例。我需要设置自动缩放以仅在不同的 AZ 中启动 Spot 实例。 例如,所需的实例数是 3,我们有 4 个可用区来放置它们。自动缩放尝试将实例放置在不同的 AZ 中,但如果失败,它会在同一个 AZ 中启动它们,这是我不想要的。
我想使用另一种逻辑。如果 Autoscaling 无法将所有 Spot 实例放置在不同的 AZ 中,它会改为启动按需实例。是否可以使用我们拥有的工具进行设置?
我想避免几个 Spot 实例最终在同一个 AZ 中的情况,因为如果 AZ 容量下降,亚马逊会迅速终止它们,我将没有时间在其他地方重新启动它们。
【问题讨论】:
您在使用启动模板吗? docs.aws.amazon.com/autoscaling/ec2/userguide/… 使用启动模板而不是带有自动缩放组的启动配置将提供所需的行为 不,不会。一个模板让我可以指定现货和按需实例之间的预设平衡,但它不会让自动缩放首先尝试使用现货实例,如果不可能使用按需实例。 【参考方案1】:如果您希望避免 Spot 实例失去容量,那么一个好的策略是:
使用多种实例类型:如果一种类型的 Spot 实例因容量不足而终止,则其他实例类型不太可能同时受到影响 将实例分布在跨可用区(正如您所做的那样),因为每个 AZ 中的容量池是独立的Auto Scaling 将自动尝试跨可用区平衡 EC2 实例的数量。 Auto Scaling 在任何时候都只能有一个活动的启动配置或启动模板。因此,它不能在按需实例和现场实例之间自动切换。
您可能想查看Launching an EC2 Fleet,它可以跨多个可用区自动启动一系列不同的实例类型。还有一些推荐的EC2 Fleet Configuration Strategies。
【讨论】:
我想应用自动缩放将首先使用现场实例的逻辑,如果失败,请尝试使用按需实例。 有没有办法限制自动缩放以在同一个 AZ 中启动实例?如果不可能将它们全部放在不同的 AZ 中,我完全可以不启动实例。 Auto Scaling 无法使用 Spot,如果失败,请按需使用。您需要进行额外的编码(以某种方式)来实现这一点。如果可能,Auto Scaling 将始终尝试将实例放在单独的 AZ 中。您无法更改此行为。 约翰·罗滕斯坦,够公平的。我预计亚马逊不会提供让他们的客户省钱的工具 :)))))) 现在我正在考虑如何编写此功能。 相反,提供了许多节省资金的工具,例如 Spot Instances、Trusted Advisor 和 Auto Scaling 本身(在不需要容量时进行缩减)。但是,Auto Scaling 一次只能有一个配置。以上是关于AWS 自动扩展和 Spot 实例的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 CloudWatch 警报扩展 AWS Spot 实例吗?