当我尝试在Amazon EC2 Auto Scaling组中启动实例时,出现了“InsufficientInstanceCapacity”或“UnfulfillableCapacity”错误。
由于云计算的性质,实例容量是波动的。无论是按需实例还是Spot实例的可用性是无法保证的。确保实例可用性的方法是购买预留实例或使用容量预留。如果您选择的实例类型在可用区内的EC2实例容量不足,则可能会出现启动失败。为了减少在EC2 Auto Scaling组中出现启动失败的几率,请参考以下最佳实践:
在EC2 Auto Scaling组中指定多个实例类型,这为您启动实例提供了更多选项。
在EC2 Auto Scaling组的实例覆盖中指定多个实例类型。最佳实践是指定至少10种不同的实例类型或系列。指定的实例类型或系列越多,出现启动失败的可能性就越小。
要扩大可用的实例类型范围,请使用基于属性的实例选择。
您可以指定诸如vCPU数量或内存等属性,或其他属性如实例系列或代数。
在指定实例属性时,通过Auto Scaling组预览匹配的实例类型。或者,使用AWS命令行界面(AWS CLI)中的GetInstanceTypesFromInstanceRequirements API。
注意: 如果在运行AWS CLI命令时遇到错误,请参阅排查AWS CLI错误,还请确保您使用的是最新的AWS CLI版本。
默认情况下,基于属性的实例类型选择会阻止选择最昂贵的实例。要配置EC2 Auto Scaling如何通过价格限制实例,请使用价格保护属性。
在AWS区域中,为Auto Scaling组添加并包括更多或所有可用区。这将实例分布在多个可用区,当某个可用区出现实例不足,Auto Scaling会自动从其他可用区启动实例,从而帮助增加获取所需实例的可能性。
要在可用区中预留特定实例类型,请使用按需容量预留。
要维持一定数量的按需实例,请指定按需基础容量。按需基础容量为您的EC2 Auto Scaling组提供一定数量的按需实例。这确保了即使您的Spot实例不可用,应用程序也有最小的基础按需实例可用。
当Spot实例容量不足时,您的Auto Scaling组会反复尝试从不同的Spot容量池启动Spot实例。
为了减少可能的导致启动失败和Spot实例中断风险,请指定Spot实例分配策略。根据您的使用案例指定最佳策略:
要在Spot实例召回/中断风险增加时提前自动替换这些实例,请使用容量再平衡。当您的实例有较高风险被召回/中断时,此功能会主动用中断风险较低的实例来替换。
注意: 容量再平衡可能不适用于所有用例,在某些情况下可能会对您的分配策略造成影响。如果此方法无法解决您的问题,请评估容量再平衡的考虑因素以适应您的使用案例。
如何在启动或启动EC2实例时排除InsufficientInstanceCapacity错误?
为什么在尝试启动Amazon EC2 Spot实例时会收到“无Spot容量可用”错误? *本文翻译自:How do I resolve “InsufficientInstanceCapacity” or “UnfulfillableCapacity” launch errors in my Amazon EC2 Auto Scaling group?