簡體   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