使用「instant」類型的 EC2 Fleet - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用「instant」類型的 EC2 Fleet

instant 類型的 EC2 Fleet 是同步的一次性請求,只會嘗試啟動您所需的容量一次。API 回應列出已啟動的執行個體,以及無法啟動的執行個體錯誤。使用 instant 類型的 EC2 Fleet 具有本文描述的多種好處。本文末尾處會提供範例組態。

對於需要僅啟動 API 來啟動 EC2 執行個體的工作負載,您可以使用 API。 RunInstances 但是,使用時 RunInstances,您只能啟動隨需執行個體或 Spot 執行個體,但不能在同一個請求中啟動兩者。此外,當您使用 RunInstances 啟動 Spot 執行個體時,您的競價型執行個體請求僅限於一種執行個體類型和一個可用區域。此操作針對單個 Spot 容量集區 (一組具有相同執行個體類型和可用區域的未使用執行個體)。如果 Spot 容量集區沒有足夠的 Spot 執行個體容量供您的請求使用,則 RunInstances 呼叫會失敗。

建議您不 RunInstances 要使用啟動 Spot 執行個體,而是使用type參數設定instant為的 CreateFleet API,以獲得下列好處:

  • 在一個請求中啟動隨需執行個體和 Spot 執行個體。EC2 Fleet 可以啟動隨需執行個體、Spot 執行個體或兩者皆有。如果有可用容量且您的請求中每個小時的價格上限超過 Spot 價格,則會滿足 Spot 執行個體的請求。

  • 增加 Spot 執行個體的可用性。透過使用 instant 類型 EC2 Fleet,您可以按照 Spot 最佳實務啟動 Spot 執行個體,獲得以下好處:

    • Spot 最佳實務:對執行個體類型和可用區域具有彈性。

      好處:透過指定數個執行個體類型和可用區域,您可以增加 Spot 容量集區的數目。這可讓 Spot 服務更有機會尋找並配置您所需的 Spot 運算容量。一個很好的經驗法則是針對每個工作負載的至少 10 個執行個體類型上具有彈性,並確定所有可用區域均已設定為在 VPC 中使用。

    • 發現最佳做法:使用price-capacity-optimized配置策略。

      優點:price-capacity-optimized配置策略可識別最可用的 Spot 容量集區中的執行個體,然後從這些集區中最低價格自動佈建執行個體。由於您的 Spot 執行個體容量來自具有最佳容量的集區,因此可降低 Amazon EC2 需要回收容量時,中斷 Spot 執行個體的可能性。

  • 取得更廣泛的功能組合。對於需要僅啟動 API 的工作負載,以及您希望管理執行個體生命週期而非讓 EC2 叢集為您管理的工作負載,請使用 EC2 叢集類型instant而非 API。RunInstancesEC2 叢集提供比 RunInstances下列範例所示更廣泛的功能組合。對於所有其他工作負載,您應使用 Amazon EC2 Auto Scaling,因為它為各種工作負載提供更全面的功能組合,例如 ELB 後端應用程式、容器化工作負載和佇列處理任務。

您可以使用即時類型的 EC2 Fleet,在容量區塊中啟動執行個體。如需詳細資訊,請參閱 教學課程:在容量區塊中啟動執行個體

AWS Amazon EC2 Auto Scaling 和 Amazon EMR 等服務使用類型即時的 EC2 叢集來啟動 EC2 執行個體。

立即類型 EC2 Fleet 的先決條件

如需建立 EC2 Fleet 的先決條件,請參閱 EC2 Fleet 先決條件

instant 類型的 EC2 Fleet 如何運作

當使用 instant 類型的 EC2 Fleet 時,事件的順序如下所示:

  1. CreateFleet要求類型設定為instant。如需詳細資訊,請參閱 建立 EC2 Fleet。請注意,在您進行 API 呼叫後,將無法修改它。

  2. 在您進行 API 呼叫時,EC2 Fleet 會針對您所需容量送出同步的一次性請求。

  3. API 回應列出已啟動的執行個體,以及無法啟動的執行個體錯誤。

  4. 您可以描述您的 EC2 Fleet、列出與 EC2 Fleet 相關的執行個體,並檢視 EC2 Fleet 的歷史記錄。

  5. 執行個體啟動後,您可以刪除叢集請求。刪除機群請求時,您也可以選擇終止相關聯的執行個體,或讓它們繼續執行。

  6. 您隨時可終止執行個體。

範例

以下範例展示如何為不同的使用案例使用 instant 類型的 EC2 Fleet。如需有關使用 EC2 CreateFleet API 參數的詳細資訊,請參閱亞 Amazon EC2 API 參考CreateFleet中的。

範例 1:使用容量最佳化分配策略啟動 Spot 執行個體

下列範例指定 instant 類型 EC2 Fleet 中所需的參數:啟動範本、目標容量、預設購買選項,以及啟動範本覆寫。

  • 啟動範本由其啟動範本名稱和版本編號識別。

  • 12 個啟動範本覆寫會指定 4 個不同執行個體類型和 3 個不同的子網,每個都位於不同的可用區域。每個執行個體類型和子網組合都定義了一個 Spot 容量集區,從而產生 12 個 Spot 容量集區。

  • 機群的目標容量為 20 個執行個體。

  • 預設購買選項為 spot,這會導致機群嘗試將 20 個 Spot 執行個體啟動到 Spot 容量集區中,且擁有啟動中執行個體數目之最佳容量。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized" }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt1", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5.large", "SubnetId":"subnet-49e41922" }, { "InstanceType":"c5d.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5d.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5d.large", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5.large", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5d.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5d.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5d.large", "SubnetId":"subnet-49e41922" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

範例 2:使用容量最佳化分配策略啟動單一 Spot 執行個體

您可以透過將多個類型的 EC2 叢集 API 呼叫設定 TotalTargetCapacity 為 1instant,一次以最佳方式啟動一個 Spot 執行個體。

下列範例指定 instant 類型 EC2 Fleet 中所需的參數:啟動範本、目標容量、預設購買選項,以及啟動範本覆寫。啟動範本由其啟動範本名稱和版本編號識別。12 個啟動範本覆寫會擁有 4 個不同執行個體類型和 3 個不同的子網,每個都位於不同的可用區域。機群的目標容量為 1 個執行個體,並且預設購買選項為 Spot,這會導致機群嘗試根據容量最佳化的分配策略從 12 個 Spot 容量集區之一啟動 Spot 執行個體,以從最可用的容量集區啟動 Spot 執行個體。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized" }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt1", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5.large", "SubnetId":"subnet-49e41922" }, { "InstanceType":"c5d.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5d.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5d.large", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5.large", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5d.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5d.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5d.large", "SubnetId":"subnet-49e41922" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

範例 3:使用執行個體權重啟動 Spot Fleet

下列範例使用執行個體權重,這表示價格為每單位小時而非每執行個體小時的價格。假設一個工作負載單位需要 15 GB 的記憶體和 4 個 vCPU,每個啟動組態會列出不同的執行個體類型和不同的權重,具體取決於執行個體上可以執行的工作負載單位數。例如,m5.xlarge (4 個 vCPU 和 16 GB 記憶體) 可以執行一個單位,並且權重為 1,m5.2xlarge (8 個 vCPU 和 32 GB 記憶體) 可以執行 2 個單位,並且權重為 2,依此類推。目標總容量設定為 40 個單位。預設購買選項為 Spot,且分配策略容量最佳化,這會產生 40 個 m5.xlarge (40 除以 1)、20 個 m5.2xlarge (40 除以 2)、10 個 m5.4xlarge (40 除以 4)、5 個 m5.8xlarge (40 除以 8),或基於容量最佳化分配策略,權重相加達到所需容量的執行個體類型的混合。

如需詳細資訊,請參閱 EC2 Fleet 執行個體權重

{ "SpotOptions":{ "AllocationStrategy":"capacity-optimized" }, "LaunchTemplateConfigs":[ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt1", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"m5.xlarge", "SubnetId":"subnet-fae8c380", "WeightedCapacity":1 }, { "InstanceType":"m5.xlarge", "SubnetId":"subnet-e7188bab", "WeightedCapacity":1 }, { "InstanceType":"m5.xlarge", "SubnetId":"subnet-49e41922", "WeightedCapacity":1 }, { "InstanceType":"m5.2xlarge", "SubnetId":"subnet-fae8c380", "WeightedCapacity":2 }, { "InstanceType":"m5.2xlarge", "SubnetId":"subnet-e7188bab", "WeightedCapacity":2 }, { "InstanceType":"m5.2xlarge", "SubnetId":"subnet-49e41922", "WeightedCapacity":2 }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-fae8c380", "WeightedCapacity":4 }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-e7188bab", "WeightedCapacity":4 }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-49e41922", "WeightedCapacity":4 }, { "InstanceType":"m5.8xlarge", "SubnetId":"subnet-fae8c380", "WeightedCapacity":8 }, { "InstanceType":"m5.8xlarge", "SubnetId":"subnet-e7188bab", "WeightedCapacity":8 }, { "InstanceType":"m5.8xlarge", "SubnetId":"subnet-49e41922", "WeightedCapacity":8 } ] } ], "TargetCapacitySpecification":{ "TotalTargetCapacity":40, "DefaultTargetCapacityType":"spot" }, "Type":"instant" }

範例 4:在單一可用區域內啟動 Spot 執行個體

您可以將 Spot 選項 SingleAvailabilityZone 設定為 true,將叢集設定為在單一可用區域中啟動所有執行個體。

12 個啟動範本覆寫會擁有不同執行個體類型和子網 (每個都位於不同的可用區域),但權重容量相同。總目標容量為 20 個執行個體,預設購買選項為 Spot,Spot 分配策略為容量最佳化。EC2 Fleet 使用啟動規格,從具有最佳容量的 Spot 容量集區啟動全部在單一可用區域中的 20 個 Spot 執行個體。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized", "SingleAvailabilityZone": true }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt1", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-49e41922" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

範例 5:在單一可用區域內啟動單一執行個體類型的 Spot 執行個體

您可以將叢集設定為 true 和 true,以啟動相同執行個體類型的所有執行個體,並 SingleAvailabilityZone 在單一可用區域中啟動。 SpotOptions SingleInstanceType

12 個啟動範本覆寫會擁有不同執行個體類型和子網 (每個都位於不同的可用區域),但權重容量相同。總目標容量為 20 個執行個體,預設購買選項為 Spot,Spot 分配策略為容量最佳化。EC2 Fleet 使用啟動規格,從具有最佳容量的 Spot 容量集區啟動全部在單一可用區域中,相同執行個體類型的 20 個 Spot 執行個體。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized", "SingleInstanceType": true, "SingleAvailabilityZone": true }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt1", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-49e41922" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

範例 6:僅在可啟動最小目標容量時才啟動 Spot 執行個體

您可以透過將 Spot 選項設定為要一起啟動的最小目標容量,將叢集設定 MinTargetCapacity 為僅在可啟動最小目標容量時啟動執行個體。

12 個啟動範本覆寫會擁有不同執行個體類型和子網 (每個都位於不同的可用區域),但權重容量相同。總目標容量和最小目標容量設定為 20 個執行個體,預設購買選項為 Spot,Spot 分配策略為容量最佳化。只有在能夠同時啟動全部 20 個執行個體時,EC2 Fleet 才能使用啟動範本覆寫,從具有最優容量的 Spot 容量集區啟動 20 個 Spot 執行個體。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized", "MinTargetCapacity": 20 }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt1", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-49e41922" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

範例 7:僅當可在單個可用區域中啟動相同執行個體類型的最低目標容量時,才能啟動 Spot 執行個體

只有當最小目標容量可以在單一可用區域中以單一執行個體類型啟動,方法是將 Spot 選項設定為要與 SingleInstanceType 和 SingleAvailabilityZone 選項 MinTargetCapacity 一起啟動的最小目標容量時,才可以設定叢集啟動執行個體。

覆寫啟動範本的 12 個啟動規格擁有不同執行個體類型和子網 (每個都位於不同的可用區域),但權重容量相同。目標容量總計和最小目標容量都設定為 20 個執行個體,預設的購買選項為 Spot,Spot 配置策略為容量最佳化、真實且 SingleInstanceType SingleAvailabilityZone 為真。只有在能同時啟動全部 20 個執行個體時,EC2 Fleet 才能使用啟動規格,從具有最佳容量的 Spot 容量集區啟動全部在單一可用區域中,相同執行個體類型的 20 個 Spot 執行個體。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized", "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 20 }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt1", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5d.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5.4xlarge", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5d.4xlarge", "SubnetId":"subnet-49e41922" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

範例 8:使用多個啟動範本來啟動執行個體

您可以透過指定多個啟動範本,將機群設定為針對不同執行個體類型或執行個體類型群組,啟動具有不同啟動規格的執行個體。在這個範例中,我們希望針對不同執行個體類型,擁有不同 EBS 磁碟區大小,並且我們在啟動範本 ec2-fleet-lt-4xl、ec2-fleet-lt-9xl 和 ec2-fleet-lt-18xl 中進行設定。

在此範例中,我們根據大小,針對 3 個執行個體類型使用 3 種不同的啟動範本。所有啟動範本上的啟動規格覆寫會根據執行個體類型上的 vCPU,使用執行個體權重。總目標容量為 144 個單位,預設購買選項為 Spot,Spot 分配策略為容量最佳化。EC2 Fleet 可以使用啟動範本 ec2-fleet-4xl 來啟動 9 個 c5n.4xlarge (144 除以 16),或使用啟動範本 ec2-fleet-9xl 來啟動 4 個 c5n.9xlarge (144 除以 36),或使用啟動範本 ec2-fleet-18xl 來啟動 2 個 c5n.18xlarge (144 除以 72),或基於容量最佳化分配策略,權重相加達到所需容量的執行個體類型的混合。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized" }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt-18xl", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5n.18xlarge", "SubnetId":"subnet-fae8c380", "WeightedCapacity":72 }, { "InstanceType":"c5n.18xlarge", "SubnetId":"subnet-e7188bab", "WeightedCapacity":72 }, { "InstanceType":"c5n.18xlarge", "SubnetId":"subnet-49e41922", "WeightedCapacity":72 } ] }, { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt-9xl", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5n.9xlarge", "SubnetId":"subnet-fae8c380", "WeightedCapacity":36 }, { "InstanceType":"c5n.9xlarge", "SubnetId":"subnet-e7188bab", "WeightedCapacity":36 }, { "InstanceType":"c5n.9xlarge", "SubnetId":"subnet-49e41922", "WeightedCapacity":36 } ] }, { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt-4xl", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5n.4xlarge", "SubnetId":"subnet-fae8c380", "WeightedCapacity":16 }, { "InstanceType":"c5n.4xlarge", "SubnetId":"subnet-e7188bab", "WeightedCapacity":16 }, { "InstanceType":"c5n.4xlarge", "SubnetId":"subnet-49e41922", "WeightedCapacity":16 } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 144, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

範例 9:啟動基於隨需執行個體的 Spot 執行個體

下列範例指定機群 20 個執行個體的總目標容量,以及 5 個隨需執行個體的目標容量。預設購買選項為 Spot。機群依照指定啟動 5 個隨需執行個體,但需要再啟動 15 個執行個體才能實現總目標容量。差異的購買選項計算方式為 TotalTargetCapacity — OnDemandTargetCapacity = DefaultTargetCapacityType,這會導致叢集啟動 15 個 Spot 執行個體,根據容量最佳化的配置策略,形成 12 個 Spot 容量集區之一。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized" }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt1", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5.large", "SubnetId":"subnet-49e41922" }, { "InstanceType":"c5d.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"c5d.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"c5d.large", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5.large", "SubnetId":"subnet-49e41922" }, { "InstanceType":"m5d.large", "SubnetId":"subnet-fae8c380" }, { "InstanceType":"m5d.large", "SubnetId":"subnet-e7188bab" }, { "InstanceType":"m5d.large", "SubnetId":"subnet-49e41922" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "OnDemandTargetCapacity": 5, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

範例 10:基於使用容量預留和優先順序分配策略的隨需執行個體,使用容量最佳化分配策略啟動 Spot 執行個體

您可以將容量保留的使用策略設定為,將叢集設定為在啟動具有預設目標容量類型為 Spot 的隨需執行個體基礎時,先使用隨需容量保留 use-capacity-reservations-first。因此,如果多個執行個體集區有未使用的 容量預留,則會套用所選擇的隨需分配策略。在此範例中,隨需分配策略為優先順序。

在此範例中,有 6 個未使用的容量預留可供使用。這小於機群的目標隨需容量 10 個隨需執行個體。

帳戶在 2 個集區中有以下 6 個未使用的容量預留。每個集區中的容量保留數會以表示 AvailableInstanceCount。

{ "CapacityReservationId": "cr-111", "InstanceType": "m5.large", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "AvailableInstanceCount": 3, "InstanceMatchCriteria": "open", "State": "active" } { "CapacityReservationId": "cr-222", "InstanceType": "c5.large", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "AvailableInstanceCount": 3, "InstanceMatchCriteria": "open", "State": "active" }

下列機群組態僅顯示此範例的相關組態。隨需配置策略的優先順序,容量保留的使用策略為。 use-capacity-reservations-firstSpot 分配策略是容量最佳化。目標總容量為 20、隨需目標容量為 10、預設目標容量類型為 spot。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized" }, "OnDemandOptions":{ "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" }, "AllocationStrategy":"prioritized" }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt1", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5.large", "SubnetId":"subnet-fae8c380", "Priority": 1.0 }, { "InstanceType":"c5.large", "SubnetId":"subnet-e7188bab", "Priority": 2.0 }, { "InstanceType":"c5.large", "SubnetId":"subnet-49e41922", "Priority": 3.0 }, { "InstanceType":"c5d.large", "SubnetId":"subnet-fae8c380", "Priority": 4.0 }, { "InstanceType":"c5d.large", "SubnetId":"subnet-e7188bab", "Priority": 5.0 }, { "InstanceType":"c5d.large", "SubnetId":"subnet-49e41922", "Priority": 6.0 }, { "InstanceType":"m5.large", "SubnetId":"subnet-fae8c380", "Priority": 7.0 }, { "InstanceType":"m5.large", "SubnetId":"subnet-e7188bab", "Priority": 8.0 }, { "InstanceType":"m5.large", "SubnetId":"subnet-49e41922", "Priority": 9.0 }, { "InstanceType":"m5d.large", "SubnetId":"subnet-fae8c380", "Priority": 10.0 }, { "InstanceType":"m5d.large", "SubnetId":"subnet-e7188bab", "Priority": 11.0 }, { "InstanceType":"m5d.large", "SubnetId":"subnet-49e41922", "Priority": 12.0 } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "OnDemandTargetCapacity": 10, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

使用上述組態建立 instant 類型機群之後,會啟動以下 20 個執行個體以符合目標容量:

  • us-east-1a 中的 7 個 c5.large 隨需執行個體 – us-east-1a 中的 c5.large 是第一優先順序,並有 3 個未使用 c5.large 容量預留可供使用。容量預留會先用來啟動 3 個隨需執行個體,再根據隨需分配策略啟動額外的 4 個隨需執行個體,即此範例中的優先順序。

  • us-east-1a 中的 3 個 m5.large 隨需執行個體 – us-east-1a 中的 m5.large 是第二優先順序,並有 3 個未使用 c3.large 容量預留可供使用。

  • 來自 12 個 Spot 容量集區中的 10 個 Spot 執行個體,該集區根據容量最佳化的分配策略具有最佳容量。

啟動叢集之後,您可以執行describe-capacity-reservations以查看剩餘的未使用容量保留數量。在此範例中,您應該會看到下列回應,其中顯示了已使用的所有 c5.large 和 m5.large 容量預留。

{ "CapacityReservationId": "cr-111", "InstanceType": "m5.large", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "c5.large", "AvailableInstanceCount": 0 }

範例 11:使用 capacity-optimized-prioritized 配置策略啟動競價型執行個體

下列範例指定 instant 類型 EC2 Fleet 中所需的參數:啟動範本、目標容量、預設購買選項,以及啟動範本覆寫。啟動範本由其啟動範本名稱和版本編號識別。覆寫啟動範本的 12 個啟動規格擁有已指派優先順序的 4 個不同執行個體類型和 3 個不同的子網,每個都位於不同的可用區域。叢集的目標容量為 20 個執行個體,而預設的購買選項為 Spot,這會導致叢集嘗試根據 capacity-optimized-prioritized 配置策略從 12 個 Spot 容量集區中的一個啟動 20 個 Spot 執行個體,這些執行個體會盡最大努力實作優先順序,但會先針對容量進行最佳化。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized-prioritized" }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification":{ "LaunchTemplateName":"ec2-fleet-lt1", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c5.large", "SubnetId":"subnet-fae8c380", "Priority": 1.0 }, { "InstanceType":"c5.large", "SubnetId":"subnet-e7188bab", "Priority": 1.0 }, { "InstanceType":"c5.large", "SubnetId":"subnet-49e41922", "Priority": 1.0 }, { "InstanceType":"c5d.large", "SubnetId":"subnet-fae8c380", "Priority": 2.0 }, { "InstanceType":"c5d.large", "SubnetId":"subnet-e7188bab", "Priority": 2.0 }, { "InstanceType":"c5d.large", "SubnetId":"subnet-49e41922", "Priority": 2.0 }, { "InstanceType":"m5.large", "SubnetId":"subnet-fae8c380", "Priority": 3.0 }, { "InstanceType":"m5.large", "SubnetId":"subnet-e7188bab", "Priority": 3.0 }, { "InstanceType":"m5.large", "SubnetId":"subnet-49e41922", "Priority": 3.0 }, { "InstanceType":"m5d.large", "SubnetId":"subnet-fae8c380", "Priority": 4.0 }, { "InstanceType":"m5d.large", "SubnetId":"subnet-e7188bab", "Priority": 4.0 }, { "InstanceType":"m5d.large", "SubnetId":"subnet-49e41922", "Priority": 4.0 } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }