繁体   English   中英

我应该如何配置 AWS Auto-Scalling 组 mix_instances_policy 以仅允许具有多个 EC2 instance_types 的 spot_instances?

[英]How should I configure an AWS Auto-Scalling Group mixed_instances_policy to only allow for spot_instances with multiple EC2 instance_types?

我有一个 AWS Auto-Scalling Group,它根据特定 SQS 队列中的消息量生成(或关闭)一台 EC2 机器。 这按预期工作,但有时我会收到以下错误:

启动新的 EC2 实例。 状态原因:无法启动 Spot 实例。 InsufficientInstanceCapacity - 没有与您的请求相匹配的 Spot 容量。 启动 EC2 实例失败。

我认识的一个 DevOps 人告诉我“将 spot_instance_pools 的数量增加到 20 并添加更多的 instance_types ”。

我做了一些研究,发现spot_instance_pools 的默认数量是 2 AWS 控制台上显示了相同的数字。 每当我遇到这个问题时,我都会部署一个更改 EC 实例类型的新脚本并且它可以工作,所以这两个建议对我来说似乎都是有效的。

问题是我当前的 Terraform 脚本没有封闭的mixed_instances_policy ,我不确定如何配置它以仅保留on_spot实例(因为它们更便宜)而没有on_demand实例。 到目前为止,我想出了:

  mixed_instances_policy = {
    on_demand_percentage_above_base_capacity = 0
    spot_instance_pools                      = 20   
  }

mixed_instances_policy的其他值与默认值保持mixed_instances_policy对我来说就足够了。

但我不明白如何配置mix_instances_policy launch_template 它是否嵌套在mixed_instances_policy 我也应该添加一个mix_instances_policy launch_template 覆盖吗? 或者也许是一个launch_template_specification

TL; 博士;

如何配置 AWS Auto-Scalling 组 mix_instances_policy 以仅允许具有多个 EC2 instance_types 的 spot_instances?

on_demand_percentage_above_base_capacity = 0行是您想要的。 根据您共享的文档和AWS 文档中结构,我会说它可能在instances_distribution它告诉ASG 按需启动0%(也就是100% 现货)。 mixed_instances_policy您需要为要添加的实例类型添加overrides (权重是可选的。权重是实例类型计入的所需容量单位数)。

此外,现货池的数量对您的用例来说并不重要。 也就是说/如果一切都可用/启动到每个可用区的许多不同的点类型。 不过,拥有更多池确实对可用性有所帮助,因为如果一个池变得供应受限,那么您将不会立即终止所有实例,但这根本不会影响能够启动。

事实上,如果你想要更便宜的成本,你想要的数字更低。 因为如果您将分配策略设为“最便宜的优先”,那么您需要每个可用区的几个池(因为那时它只是最便宜的几个池)。 如果 AZ 中只有 1 个实例类型可用,则无论如何都会启动该实例类型。 因此,您选择的覆盖数量是启动时保持可用性的重要部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM