EC2 Fleet 範例組態 - Amazon Elastic Compute Cloud

EC2 Fleet 範例組態

以下範例示範您可以使用 create-fleet 命令來建立 EC2 Fleet 的啟動組態。如需參數的詳細資訊,請參閱 AWS CLI 命令參考中的 create-fleet

範例 1:啟動 競價型執行個體 做為預設購買選項

下列範例指定 EC2 Fleet 中所需的最小參數:啟動範本、目標容量和預設購買選項。啟動範本由其啟動範本 ID 和版本編號識別。機群的目標容量為 2 個執行個體,預設購買選項為 spot,會讓機群啟動 2 個 競價型執行個體。

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0e8c754449b27161c", "Version": "1" } } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 2, "DefaultTargetCapacityType": "spot" } }

範例 2:啟動 隨需執行個體 做為預設購買選項

下列範例指定 EC2 Fleet 中所需的最小參數:啟動範本、目標容量和預設購買選項。啟動範本由其啟動範本 ID 和版本編號識別。機群的目標容量為 2 個執行個體,預設購買選項為 on-demand,會讓機群啟動 2 個 隨需執行個體。

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0e8c754449b27161c", "Version": "1" } } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 2, "DefaultTargetCapacityType": "on-demand" } }

範例 3:啟動 隨需執行個體 做為主要容量

下列範例指定機群 2 個執行個體的總目標容量,以及 1 個隨需執行個體的目標容量。預設購買選項為 spot。機群依照指定啟動 1 個隨需執行個體,但需要再啟動一個執行個體才能實現總目標容量。其差值的購買選項計算式為 TotalTargetCapacityOnDemandTargetCapacity = DefaultTargetCapacityType,這會讓機群啟動 1 個 Spot 執行個體。

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0e8c754449b27161c", "Version": "1" } } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 2, "OnDemandTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } }

範例 4:使用 lowest-price 分配策略啟動 競價型執行個體

如果未指定 競價型執行個體 的分配策略,則會使用 lowest-price 的預設分配策略。下列範例使用 lowest-price 分配策略。覆寫啟動範本的三個啟動規格具有不同的執行個體類型,但具有相同的權重後容量和子網。目標總容量為 2 個執行個體,預設購買選項為 spot。EC2 Fleet 會以最低價格之啟動規格的執行個體類型啟動 2 個 競價型執行個體。

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0e8c754449b27161c", "Version": "1" } "Overrides": [ { "InstanceType": "c4.large", "WeightedCapacity": 1, "SubnetId": "subnet-a4f6c5d3" }, { "InstanceType": "c3.large", "WeightedCapacity": 1, "SubnetId": "subnet-a4f6c5d3" }, { "InstanceType": "c5.large", "WeightedCapacity": 1, "SubnetId": "subnet-a4f6c5d3" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 2, "DefaultTargetCapacityType": "spot" } }

範例 5:使用多個容量預留來啟動隨需執行個體

您可以將容量預留的使用策略設為 use-capacity-reservations-first,以將機群設定為在啟動 隨需執行個體 時首先使用 隨需容量預留。本例示範當容量預留比所需目標容量更多時,機群如何選取要使用的容量預留。

本例使用的機群組態如下:

  • 目標容量:12 個隨需執行個體

  • 總計未使用的容量預留:15 (大於機群的目標容量:12 個隨需執行個體)

  • 容量預留集區數目:3 (m5.largem4.xlargem4.2xlarge)

  • 每個集區的容量預留數目:5

  • 隨需分配策略:lowest-price (當多個執行個體集區中有多個未使用的容量預留時,機群會根據隨需分配策略決定要用來啟動隨需執行個體的集區。)

    請注意,您也可以使用 prioritized 分配策略,而不使用 lowest-price 分配策略。

Capacity Reservations

帳戶在 3 個不同的集區中有以下 15 個未使用的 容量預留。每個集區中的 容量預留 數目由 AvailableInstanceCount 表示。

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

機群組態

下列機群組態僅顯示此範例的相關組態。總目標容量為 12,預設目標容量類型為 on-demand。隨需分配策略為 lowest-price。容量預留的使用策略為 use-capacity-reservations-first

在此範例中, 隨需執行個體 價格如下:

  • m5.large – 每小時 0.096 美元

  • m4.xlarge – 每小時 0.20 美元

  • m4.2xlarge – 每小時 0.40 美元

注意

機群類型必須為 instant。其他機群類型不支援 use-capacity-reservations-first

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-abc1234567example", "Version": "1" } "Overrides": [ { "InstanceType": "m5.large", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 }, { "InstanceType": "m4.xlarge", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 }, { "InstanceType": "m4.2xlarge", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 12, "DefaultTargetCapacityType": "on-demand" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price" "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant", }

使用上述組態建立 instant 叢集之後,會啟動以下 12 個執行個體以符合目標容量:

  • 5 個 m5.large 隨需執行個體在 us-east-1a 中 (us-east-1a 中的 m5.large 價格最低),並且有 5 個可用的未使用 m5.large 容量預留。

  • 5 個 m4.xlarge 隨需執行個體在 us-east-1a 中 – us-east-1a 中的 m4.xlarge 價格次低,並且有 5 個可用的未使用 m4.xlarge 容量預留。

  • 2 個 m4.2xlarge 隨需執行個體在 us-east-1a 中 – us-east-1a 中的 m4.2xlarge 價格第三低,並且有 5 個可用的未使用 m4.2xlarge 容量預留,只需要其中 2 個就可滿足目標容量

啟動機群後,您可以執行 describe-capacity-reservations,以查看還剩餘多少個未使用的 容量預留。在本例中,您會看到下面回應,這顯示所有的 m5.largem4.xlarge 容量預留都已使用,只剩 3 個 m4.2xlarge 容量預留未使用。

{ "CapacityReservationId": "cr-111", "InstanceType": "m5.large", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "m4.xlarge", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-333", "InstanceType": "m4.2xlarge", "AvailableInstanceCount": 3 }

範例 6:當總目標容量超過未使用的容量預留數目時,使用容量預留來啟動隨需執行個體

您可以將容量預留的使用策略設為 use-capacity-reservations-first,以將機群設定為在啟動 隨需執行個體 時首先使用 隨需容量預留。本例示範當總計目標容量超過可用的未使用容量預留數目時,機群會如何選取用來啟動隨需執行個體的執行個體集區。

本例使用的機群組態如下:

  • 目標容量:16 個隨需執行個體

  • 總計未使用的容量預留:15 (小於機群的目標容量:16 個隨需執行個體)

  • 容量預留集區數目:3 (m5.largem4.xlargem4.2xlarge)

  • 每個集區的容量預留數目:5

  • 隨需分配策略:lowest-price (當未使用的容量預留數目小於隨需目標容量時,機群會根據隨需分配策略決定要用來啟動剩餘隨需容量的集區。)

    請注意,您也可以使用 prioritized 分配策略,而不使用 lowest-price 分配策略。

Capacity Reservations

帳戶在 3 個不同的集區中有以下 15 個未使用的 容量預留。每個集區中的 容量預留 數目由 AvailableInstanceCount 表示。

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

機群組態

下列機群組態僅顯示此範例的相關組態。總目標容量為 16,預設目標容量類型為 on-demand。隨需分配策略為 lowest-price。容量預留的使用策略為 use-capacity-reservations-first

在此範例中, 隨需執行個體 價格如下:

  • m5.large – 每小時 0.096 USD

  • m4.xlarge – 每小時 0.20 USD

  • m4.2xlarge – 每小時 0.40 USD

注意

機群類型必須為 instant。其他機群類型不支援 use-capacity-reservations-first

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0e8c754449b27161c", "Version": "1" } "Overrides": [ { "InstanceType": "m5.large", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 }, { "InstanceType": "m4.xlarge", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 }, { "InstanceType": "m4.2xlarge", "AvailabilityZone": "us-east-1a", "WeightedCapacity": 1 } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 16, "DefaultTargetCapacityType": "on-demand" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price" "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant", }

使用上述組態建立 instant 叢集之後,會啟動以下 16 個執行個體以符合目標容量:

  • 6 個 m5.large 隨需執行個體在 us-east-1a 中 – us-east-1a 中的 m5.large 價格最低,並且有 5 個可用的未使用 m5.large 容量預留。會先使用容量預留來啟動 5 個隨需執行個體。在使用了其餘的 m4.xlargem4.2xlarge 容量預留之後,為了滿足目標容量,會根據隨需分配策略啟動額外的隨需執行個體,在本例中為 lowest-price

  • 5 個 m4.xlarge 隨需執行個體在 us-east-1a 中 – us-east-1a 中的 m4.xlarge 價格次低,並且有 5 個可用的未使用 m4.xlarge 容量預留。

  • 5 個 m4.2xlarge 隨需執行個體在 us-east-1a 中 – us-east-1a 中的 m4.2xlarge 價格第三低,並且有 5 個可用的未使用 m4.2xlarge 容量預留。

啟動機群後,您可以執行 describe-capacity-reservations,以查看還剩餘多少個未使用的 容量預留。在此範例中,您應該會看到下列回應,其中顯示所有集區中的所有 容量預留 都已使用。

{ "CapacityReservationId": "cr-111", "InstanceType": "m5.large", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "m4.xlarge", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-333", "InstanceType": "m4.2xlarge", "AvailableInstanceCount": 0 }

範例 7:使用目標容量預留啟動隨需執行個體

您可設定機群,使其在啟動隨需執行個體時首先使用 targeted 隨需容量預留,設定方法是將容量預留的使用策略設為 use-capacity-reservations-first。本例示範如何使用 targeted 容量預留來啟動隨需執行個體,其中容量預留的屬性皆相同,但其可用區域 (us-east-1aus-east-1b) 不同。本例亦示範當總計目標容量超過可用的未使用容量預留數目時,機群會如何選取用來啟動隨需執行個體的執行個體集區。

本例使用的機群組態如下:

  • 目標容量:10 個隨需執行個體

  • 總計未使用的 targeted 容量預留:6 (小於機群的隨需目標容量:10 個隨需執行個體)

  • 容量預留集區數目:2 (us-east-1aus-east-1b)

  • 每個集區的容量預留數目:3

  • 隨需分配策略:lowest-price (當未使用的容量預留數目小於隨需目標容量時,機群會根據隨需分配策略決定要用來啟動剩餘隨需容量的集區。)

    請注意,您也可以使用 prioritized 分配策略,而不使用 lowest-price 分配策略。

如需完成此範例所須執行程序的逐步演練,請參閱 教學課程:使用目標容量預留啟動隨需執行個體

Capacity Reservations

帳戶在 2 個不同的集區中有以下 6 個未使用的容量預留。在本例中,集區的可用區域有所不同。每個集區中的 容量預留 數目由 AvailableInstanceCount 表示。

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

機群組態

下列機群組態僅顯示此範例的相關組態。總目標容量為 10,預設目標容量類型為 on-demand。隨需分配策略為 lowest-price。容量預留的使用策略為 use-capacity-reservations-first

在本例中,us-east-1 中的 c5.xlarge 隨需執行個體價格為每小時 0.17 美元。

注意

機群類型必須為 instant。其他機群類型不支援 use-capacity-reservations-first

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1a" }, { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1b" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 10, "DefaultTargetCapacityType": "on-demand" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant" }

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

  • 會先使用容量預留來啟動 6 個隨需執行個體,如下所示:

    • 3 個隨需執行個體已在 us-east-1a 中啟動至 3 個 c5.xlarge targeted 容量預留

    • 3 個隨需執行個體已在 c5.xlarge 中啟動至 3 個 targeted us-east-1b 容量預留

  • 為了滿足目標容量,會根據隨需分配策略 (在本例中為 lowest-price) 使用一般隨需容量來啟動 4 個額外的隨需執行個體。不過,由於集區的價格相同 (因為價格是按區域而非可用區域計價),因此機群會使用任一個集區來啟動剩餘的 4 個隨需執行個體。

啟動機群後,您可以執行 describe-capacity-reservations,以查看還剩餘多少個未使用的 容量預留。在此範例中,您應該會看到下列回應,其中顯示所有集區中的所有 容量預留 都已使用。

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

範例 8:設定容量重新平衡以啟動替代 競價型執行個體

下列範例會設定 EC2 Fleet,以便 Amazon EC2 在機群中對 Spot 執行個體發出重新平衡建議時啟動替代 Spot 執行個體。若要為 ReplacementStrategy 設定 競價型執行個體 的自動替代,請指定 launch-before-terminate。若要設定從啟動新替代 Spot 執行個體到自動刪除舊 Spot 執行個體的時間延遲,請針對 termination-delay,指定一值 (以秒為單位)。如需詳細資訊,請參閱 組態選項

注意

建議您僅在可以預測執行個體關閉程序需要多長時間才能完成時,才使用 launch-before-terminate,以便只在這些程序完成後才會終止舊執行個體。所有執行個體在執行時,您需要支付所有執行個體的費用。

容量重新平衡策略的有效性取決於 EC2 Fleet 請求中指定的 Spot 容量集區數目。我們建議您使用多樣化的執行個體類型和可用區域的集合來設定機群,若要 AllocationStrategy,請指定 capacity-optimized。如需設定 EC2 Fleet 容量重新平衡時應考量哪些項目的詳細資訊,請參閱 容量重新平衡

{ "ExcessCapacityTerminationPolicy": "termination", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "LaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceType": "c3.large", "WeightedCapacity": 1, "Placement": { "AvailabilityZone": "us-east-1a" } }, { "InstanceType": "c4.large", "WeightedCapacity": 1, "Placement": { "AvailabilityZone": "us-east-1a" } }, { "InstanceType": "c5.large", "WeightedCapacity": 1, "Placement": { "AvailabilityZone": "us-east-1a" } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 5, "DefaultTargetCapacityType": "spot" }, "SpotOptions": { "AllocationStrategy": "capacity-optimized", "MaintenanceStrategies": { "CapacityRebalance": { "ReplacementStrategy": "launch-before-terminate", "TerminationDelay": "720" } } } }

範例 9:在容量最佳化機群中啟動 Spot 執行個體

下列範例示範如何使用可最佳化容量的 Spot 分配策略來設定 EC2 Fleet。若要最佳化容量,您必須將 AllocationStrategy 設為 capacity-optimized

在下列範例中,三個啟動規格指定三個 Spot 容量集區。目標容量為 50 個 Spot 執行個體。EC2 Fleet 嘗試將 50 個 Spot 執行個體啟動到 Spot 容量集區中,且擁有啟動中執行個體數目之最佳容量。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized", }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "r4.2xlarge", "Placement": { "AvailabilityZone": "us-west-2a" }, }, { "InstanceType": "m4.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" }, }, { "InstanceType": "c5.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 50, "DefaultTargetCapacityType": "spot" } }

範例 10:使用優先順序在容量最佳化機群中啟動 Spot 執行個體

下列範例示範在盡最大努力使用優先順序時,如何使用可最佳化容量的 Spot 分配策略來設定 EC2 Fleet。

當您使用 capacity-optimized-prioritized 分配策略時,您可以使用 Priority 參數來指定 Spot 容量集區的優先順序,其中數字越小,優先順序越高。如果您對它們一視同仁,也可以為數個 Spot 容量集區設定相同的優先順序。如果您沒有設定集區的優先順序,集區將被視為最後一個優先順序。

若要排定 Spot 容量集區的優先順序,您必須將 AllocationStrategy 設為 capacity-optimized-prioritized。EC2 Fleet 將首先針對容量進行最佳化,但會盡力實現優先順序 (例如,若實現優先順序不會顯著影響 EC2 Fleet 佈建最佳容量的能力)。對於必須將中斷可能性降至最低的工作負載來說,這是一個很好的選擇,而且某些執行個體類型的偏好也很重要。

在下列範例中,三個啟動規格指定三個 Spot 容量集區。每個集區都有優先順序,其中數字越小,優先順序越高。目標容量為 50 個 Spot 執行個體。EC2 Fleet 嘗試以最高優先順序在 Spot 容量集區中啟動 50 個 Spot 執行個體,但首先針對容量進行最佳化。

{ "SpotOptions": { "AllocationStrategy": "capacity-optimized-prioritized" }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "r4.2xlarge", "Priority": 1, "Placement": { "AvailabilityZone": "us-west-2a" }, }, { "InstanceType": "m4.2xlarge", "Priority": 2, "Placement": { "AvailabilityZone": "us-west-2b" }, }, { "InstanceType": "c5.2xlarge", "Priority": 3, "Placement": { "AvailabilityZone": "us-west-2b" } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 50, "DefaultTargetCapacityType": "spot" }