スポットインスタンスの配分戦略 - Amazon Elastic Compute Cloud

スポットインスタンスの配分戦略

起動設定によって、EC2 フリートがスポットインスタンスを起動できるすべてのスポットキャパシティプール (インスタンスタイプおよびアベイラビリティーゾーン) が決定されます。ただし、インスタンスを起動する際、EC2 フリートは指定された配分戦略を使用して、使用可能なすべてのプールから特定のプールを選択します。

注記

(Linux インスタンスのみ) AMD SEV-SNP を有効にして起動するようにスポットインスタンスを設定すると、選択したインスタンスタイプのオンデマンド時間料金の 10% に相当する追加の時間単位使用料が請求されます。配分戦略で価格を入力として使用する場合、EC2 フリートにはこの追加料金は含まれず、スポット料金のみが使用されます。

配分戦略

スポットインスタンスには次のいずれかの配分戦略を指定できます。

price-capacity-optimized (推奨)

EC2 フリートは、起動中のインスタンスの数に最適な容量の可用性を持つプールを識別します。つまり、短期的に中断の可能性が最も低いと思われるプールからスポットインスタンスをリクエストすることになります。次に EC2 フリートは、これらのプールのうち最も価格の低いスポットインスタンスをリクエストします。

price-capacity-optimized 配分戦略は、ステートレスコンテナ化アプリケーション、マイクロサービス、ウェブアプリケーション、データおよび分析ジョブ、バッチ処理など、ほとんどのスポットワークロードに最適です。

capacity-optimized

EC2 フリートは、起動中のインスタンスの数に最適な容量の可用性を持つプールを識別します。つまり、短期的に中断の可能性が最も低いと思われるプールからスポットインスタンスをリクエストすることになります。オプションで capacity-optimized-prioritized により、フリート内の各インスタンスタイプに優先順位を設定できます。EC2 フリートは最初に容量を最適化しますが、インスタンスタイプの優先順位をベストエフォートベースで尊重します。

スポットインスタンス では、価格は需要と供給の長期的な傾向に基づいて時間の経過とともに緩やかに変動しますが、容量はリアルタイムで変動します。capacity-optimized 戦略では、リアルタイムの容量データを調べ、可用性の最も高いプールを予測することで、そのプールから スポットインスタンス を自動的に起動します。この戦略は、作業の再開に関連する中断のコストが高くなる可能性のあるワークロード (長時間の継続的インテグレーション (CI)、画像とメディアのレンダリング、深層学習およびハイパフォーマンスコンピューティング (HPC) など) に対応します。中断の可能性を低くすることにより、capacity-optimized 戦略ではワークロードの全体的なコストを削減できます。

または、優先パラメータで capacity-optimized-prioritized 配分戦略を使用して、インスタンスタイプを優先順位の高い順から低い順へ指定できます。異なるインスタンスタイプに対し同じ優先順位を設定できます。EC2 フリートは最初に容量を最適化しますが、インスタンスタイプの優先順位をベストエフォートベースで決定します (例えば、優先順位を尊重しても、EC2 フリートの最適な容量をプロビジョニングする能力に大きな影響を与えない場合など) 。これは、中断の可能性を最小限に抑える必要があり、特定のインスタンスタイプを優先することが重要なワークロードに適したオプションです。capacity-optimized-prioritized の優先順位を設定するとき、オンデマンド AllocationStrategyprioritized に設定されていると、同じ優先順位がオンデマンドインスタンスにも適用されますのでご注意ください。

diversified

スポットインスタンス は、すべてのスポットキャパシティープールに分散されます。

lowest-price (非推奨)
警告

スポットインスタンスの中断リスクが非常に高いため、lowest-price配分戦略はお勧めしません。

スポットインスタンスは、使用可能な容量を持つ最低価格のプールから取得されます。これはデフォルトの戦略です。ただし、price-capacity-optimized 配分戦略を指定してデフォルトを上書きすることをお勧めします。

最低価格のプールに使用可能な容量がない場合、スポットインスタンスは使用可能な容量のある 2 番目に低価格のプールから取得されます。

希望する容量を満たす前にプールの容量が不足した場合、EC2 フリートは 2 番目に低い価格のプールから容量を引き出し、引き続きリクエストを満たします。希望する容量を確実に満たすために、複数のプールからスポットインスタンスを受け取る場合があります。

この戦略では、インスタンスの価格のみが考慮され、容量の可用性は考慮されないため、中断率が高くなる可能性があります。

InstancePoolsToUseCount

ターゲットスポット容量を割り当てる先のスポットプールの数。配分戦略が lowest-price に設定されている場合にのみ有効です。EC2 フリートでは最低価格のスポットプールを選択し、指定した数のスポットプールにターゲットスポット容量を均等に割り当てます。

EC2 フリートは、指定したプール数内のスポットインスタンスを、ベストエフォート方式で利用しようとすることご注意ください。ターゲット容量を満たす前にプールにスポットキャパシティーの残量がなくなった場合、EC2 フリートは次に低い価格のプールの容量を利用してリクエストを満たします。ターゲット容量を確実に満たすために、スポットインスタンスが、指定した数を超えるプールから割り当てられることがあります。また、ほとんどのプールにスポット容量がない場合には、指定した数より少ないプールからターゲット容量のすべてが割り当てられることがあります。

適切な配分戦略の選択

適切なスポット割り当て戦略を選択することで、ユースケースに合わせてフリートを最適化できます。オンデマンドインスタンスのターゲット容量では、EC2 フリートはスポットインスタンス の配分戦略 (price-capacity-optimizedcapacity-optimized diversified または lowest-price) を採用しながら、パブリックオンデマンド料金に基づいて、最低価格のインスタンスタイプを常に選択します。

最低価格と容量可用性のバランスをとる

最低価格のスポット容量プールと容量の可用性が最も高いスポットキャパシティプールとのトレードオフのバランスをとるには、price-capacity-optimized 配分戦略を使用することをお勧めします。この戦略では、プールの価格とプール内のスポットインスタンスの空き容量の両方に基づいて、どのプールからスポットインスタンスをリクエストするかを決定します。つまり、価格を考慮しながらも短期的に中断の可能性が最も低いと思われるプールからスポットインスタンスをリクエストすることになります。

コンテナ化されたアプリケーション、マイクロサービス、ウェブアプリケーション、データおよび分析ジョブ、バッチ処理など、レジリエントでステートレスなワークロードをフリートが実行している場合は、最適なコスト削減とキャパシティアベイラビリティを実現する price-capacity-optimized 配分戦略を使用してください。

作業の再開に関連する中断に伴うコストが高くなる可能性があるワークロードをフリートで実行している場合は、中断があった場合にアプリケーションがそのポイントから再起動できるようにチェックポイントの設定を実装する必要があります。チェックポイントを使用すると、スポットインスタンスの中断率も低い最低価格のプールから容量が割り当てられるため、price-capacity-optimized 配分戦略がこれらのワークロードに適したものになります。

price-capacity-optimized 配分戦略を使用する設定例については、「例 10: price-capaity-optimized フリートでスポットインスタンスを起動する」を参照してください。

ワークロードの中断コストが高い場合

同様の価格のインスタンスタイプを使用するワークロードを実行する場合や、中断のコストが非常に高いため、中断のわずかな増加に比べてコスト削減が不十分な場合、オプションでこの capacity-optimized 戦略を使用できます。この戦略では、中断の可能性がより低く、最も可用性の高いスポットキャパシティプールから容量を割り当てることで、ワークロードの総コストを削減することができます。capacity-optimized 配分戦略を使用する設定例については、「例 8: 容量最適化フリートでスポットインスタンスを起動する」を参照してください。

中断の可能性を最小限に抑える必要があるが、特定のインスタンスタイプの優先順位が重要な場合は、capacity-optimized-prioritized の配分戦略を使用し、インスタンスタイプの順序を優先順位の高い順に表現することでプールの優先順位を設定することができます。設定の例については、「例 9: 優先順位のある容量最適化フリートでスポットインスタンスを起動する」を参照してください。

capacity-optimized-prioritized の優先順位を設定するとき、オンデマンド AllocationStrategyprioritized に設定されていると、同じ優先順位がオンデマンドインスタンスにも適用されるのでご注意ください。

ワークロードに時間的な柔軟性があり、キャパシティの可用性が問題にならない場合

フリートが小さい場合、または短時間の実行である場合、容量の可用性を考慮しながら、price-capacity-optimized を使用してコスト削減を最大化できます。

フリートが大きい場合や長時間稼働している場合

フリートが大規模、または長期間実行される場合には、diversified 戦略を使用して複数のプールに スポットインスタンス を分散することで、フリートの可用性を改善できます。例えば、EC2 フリート の条件が 10 プールとして、ターゲット容量が 100 インスタンスとすると、フリートはプールごとに 10 個の スポットインスタンス を起動します。1 つのプールのスポット料金がこのプールの上限料金を超える場合、フリートの 10% のみに影響がおよびます。この戦略を使用すると、いずれのプールにおいても経時的にフリートが受けるスポット料金の上昇の影響を減少させます。diversified 戦略では、EC2 フリート は、オンデマンド価格 以上のスポット料金のいずれのプールにも スポットインスタンス を起動しません。

ターゲット容量の維持

スポット料金やスポットキャパシティプールで使用可能な容量の変動に伴って スポットインスタンス が終了すると、maintain 型の EC2 フリート によって代替の スポットインスタンス が起動されます。配分戦略によって、次のように置換先インスタンスを起動するプールが決まります。

  • 割当戦略が price-capacity-optimized の場合、フリートは最もスポットインスタンスの容量が利用可能なプールで置換先インスタンスを起動します。また、価格も考慮し、容量利用率の高い価格の低いプールを特定します。

  • 配分戦略が capacity-optimized の場合、フリートは、利用可能なスポットインスタンス容量が最大のプールで置換先インスタンスを起動します。

  • 配分戦略が diversified である場合には、フリートは残りのプールに代替 スポットインスタンス を分散します。