如何解决在Amazon EC2 Auto Scaling组中启动实例时出现的“InsufficientInstanceCapacity”或“UnfulfillableCapacity”错误?

1 分钟阅读
内容级别:基础
2

当我尝试在Amazon EC2 Auto Scaling组中启动实例时,出现了“InsufficientInstanceCapacity”或“UnfulfillableCapacity”错误。

简短描述

由于云计算的性质,实例容量是波动的。无论是按需实例还是Spot实例的可用性是无法保证的。确保实例可用性的方法是购买预留实例使用容量预留。如果您选择的实例类型在可用区内的EC2实例容量不足,则可能会出现启动失败。为了减少在EC2 Auto Scaling组中出现启动失败的几率,请参考以下最佳实践:

解决方案

1. 指定更多实例类型

在EC2 Auto Scaling组中指定多个实例类型,这为您启动实例提供了更多选项。

在EC2 Auto Scaling组的实例覆盖中指定多个实例类型。最佳实践是指定至少10种不同的实例类型或系列。指定的实例类型或系列越多,出现启动失败的可能性就越小。

2. 增加实例类型范围

要扩大可用的实例类型范围,请使用基于属性的实例选择

您可以指定诸如vCPU数量或内存等属性,或其他属性如实例系列或代数。

指定实例属性时,通过Auto Scaling组预览匹配的实例类型。或者,使用AWS命令行界面(AWS CLI)中的GetInstanceTypesFromInstanceRequirements API。

注意: 如果在运行AWS CLI命令时遇到错误,请参阅排查AWS CLI错误,还请确保您使用的是最新的AWS CLI版本

默认情况下,基于属性的实例类型选择会阻止选择最昂贵的实例。要配置EC2 Auto Scaling如何通过价格限制实例,请使用价格保护属性。

3. 增加多个可用区

在AWS区域中,为Auto Scaling组添加并包括更多或所有可用区。这将实例分布在多个可用区,当某个可用区出现实例不足,Auto Scaling会自动从其他可用区启动实例,从而帮助增加获取所需实例的可能性。

4. 预留特定实例类型

要在可用区中预留特定实例类型,请使用按需容量预留

5. 指定按需基础容量

要维持一定数量的按需实例,请指定按需基础容量。按需基础容量为您的EC2 Auto Scaling组提供一定数量的按需实例。这确保了即使您的Spot实例不可用,应用程序也有最小的基础按需实例可用。

当Spot实例容量不足时,您的Auto Scaling组会反复尝试从不同的Spot容量池启动Spot实例。

6. 评估当前的分配策略

为了减少可能的导致启动失败和Spot实例中断风险,请指定Spot实例分配策略。根据您的使用案例指定最佳策略:

  • 推荐:价格-容量优化(price-capacity-optimized)分配策略同时考虑实例类型在可用区内的价格和可用性。这是减少实例中断的最佳实践。
  • 不推荐:最低价格(lowest-price)分配策略仅考虑实例的成本,不考虑实例类型在可用区内的总体可用性。这可能会导致更高的实例中断。

7. 使用容量再平衡

要在Spot实例召回/中断风险增加时提前自动替换这些实例,请使用容量再平衡。当您的实例有较高风险被召回/中断时,此功能会主动用中断风险较低的实例来替换。

注意: 容量再平衡可能不适用于所有用例,在某些情况下可能会对您的分配策略造成影响。如果此方法无法解决您的问题,请评估容量再平衡的考虑因素以适应您的使用案例。

相关信息

如何在启动或启动EC2实例时排除InsufficientInstanceCapacity错误?

为什么在尝试启动Amazon EC2 Spot实例时会收到“无Spot容量可用”错误?

*本文翻译自:How do I resolve “InsufficientInstanceCapacity” or “UnfulfillableCapacity” launch errors in my Amazon EC2 Auto Scaling group?

profile pictureAWS
支持工程师
Tim
已​发布 3 个月前3590 查看次数