スポットインスタンスの配分戦略
起動設定によって、EC2 フリートがスポットインスタンスを起動できるすべてのスポットキャパシティプール (インスタンスタイプおよびアベイラビリティーゾーン) が決定されます。ただし、インスタンスを起動する際、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
の優先順位を設定するとき、オンデマンドAllocationStrategy
がprioritized
に設定されていると、同じ優先順位がオンデマンドインスタンスにも適用されますのでご注意ください。 diversified
-
スポットインスタンス は、すべてのスポットキャパシティープールに分散されます。
lowest-price
-
スポットインスタンスは、使用可能な容量を持つ最低価格のプールから取得されます。これはデフォルトの戦略です。ただし、
price-capacity-optimized
配分戦略を指定してデフォルトを上書きすることをお勧めします。最低価格のプールに使用可能な容量がない場合、スポットインスタンスは使用可能な容量のある 2 番目に低価格のプールから取得されます。
希望する容量を満たす前にプールの容量が不足した場合、EC2 フリートは 2 番目に低い価格のプールから容量を引き出し、引き続きリクエストを満たします。希望する容量を確実に満たすために、複数のプールからスポットインスタンスを受け取る場合があります。
この戦略では、インスタンスの価格のみが考慮され、容量の可用性は考慮されないため、中断率が高くなる可能性があります。
InstancePoolsToUseCount
-
ターゲットスポット容量を割り当てる先のスポットプールの数。配分戦略が
lowest-price
に設定されている場合にのみ有効です。EC2 フリートでは最低価格のスポットプールを選択し、指定した数のスポットプールにターゲットスポット容量を均等に割り当てます。EC2 フリートは、指定したプール数内のスポットインスタンスを、ベストエフォート方式で利用しようとすることご注意ください。ターゲット容量を満たす前にプールにスポットキャパシティーの残量がなくなった場合、EC2 フリートは次に低い価格のプールの容量を利用してリクエストを満たします。ターゲット容量を確実に満たすために、スポットインスタンスが、指定した数を超えるプールから割り当てられることがあります。また、ほとんどのプールにスポット容量がない場合には、指定した数より少ないプールからターゲット容量のすべてが割り当てられることがあります。
適切な配分戦略の選択
適切なスポット割り当て戦略を選択することで、ユースケースに合わせてフリートを最適化できます。オンデマンドインスタンスのターゲット容量では、EC2 フリートはスポットインスタンス の配分戦略 (price-capacity-optimized
、capacity-optimized
diversified
または lowest-price
) を採用しながら、パブリックオンデマンド料金に基づいて、最低価格のインスタンスタイプを常に選択します。
最低価格と容量可用性のバランスをとる
最低価格のスポット容量プールと容量の可用性が最も高いスポットキャパシティプールとのトレードオフのバランスをとるには、price-capacity-optimized
配分戦略を使用することをお勧めします。この戦略では、プールの価格とプール内のスポットインスタンスの空き容量の両方に基づいて、どのプールからスポットインスタンスをリクエストするかを決定します。つまり、価格を考慮しながらも短期的に中断の可能性が最も低いと思われるプールからスポットインスタンスをリクエストすることになります。
コンテナ化されたアプリケーション、マイクロサービス、ウェブアプリケーション、データおよび分析ジョブ、バッチ処理など、レジリエントでステートレスなワークロードをフリートが実行している場合は、最適なコスト削減とキャパシティアベイラビリティを実現する price-capacity-optimized
配分戦略を使用してください。
作業の再開に関連する中断に伴うコストが高くなる可能性があるワークロードをフリートで実行している場合は、中断があった場合にアプリケーションがそのポイントから再起動できるようにチェックポイントの設定を実装する必要があります。チェックポイントを使用すると、スポットインスタンスの中断率も低い最低価格のプールから容量が割り当てられるため、price-capacity-optimized
配分戦略がこれらのワークロードに適したものになります。
price-capacity-optimized
配分戦略を使用する設定例については、「例 11: price-capacity-optimized フリートでスポットインスタンスを起動する」を参照してください。
ワークロードの中断コストが高い場合
同様の価格のインスタンスタイプを使用するワークロードを実行する場合や、中断のコストが非常に高いため、中断のわずかな増加に比べてコスト削減が不十分な場合、オプションでこの capacity-optimized
戦略を使用できます。この戦略では、中断の可能性がより低く、最も可用性の高いスポットキャパシティプールから容量を割り当てることで、ワークロードの総コストを削減することができます。capacity-optimized
配分戦略を使用する設定例については、「例 9: 容量最適化フリートでスポットインスタンスを起動する」を参照してください。
中断の可能性を最小限に抑える必要があるが、特定のインスタンスタイプの優先順位が重要な場合は、capacity-optimized-prioritized
の配分戦略を使用し、インスタンスタイプの順序を優先順位の高い順に表現することでプールの優先順位を設定することができます。設定の例については、「例 10: 優先順位のある容量最適化フリートでスポットインスタンスを起動する」を参照してください。
優先順位の使用は、フリートが起動テンプレートを使用する場合にのみサポートされることに注意してください。capacity-optimized-prioritized
の優先順位を設定する際に、オンデマンド AllocationStrategy
が prioritized
に設定されていると、同じ優先順位がオンデマンドインスタンスにも適用されるので注意してください。
ワークロードに時間的な柔軟性があり、キャパシティの可用性が問題にならない場合
フリートが小さい場合、または短時間の実行である場合、容量の可用性を考慮しながら、price-capacity-optimized
を使用してコスト削減を最大化できます。
ワークロードに時間的な柔軟性があり、キャパシティの可用性が問題にならない場合は、オプションで lowest-price
配分戦略を使用してコスト削減を最大化できます。この lowest-price
配分戦略では、インスタンスの価格のみが考慮され、容量の可用性は考慮されないため、スポットインスタンス中断率が高くなる可能性があることをご注意ください。
フリートが大きい場合や長時間稼働している場合
フリートが大規模、または長期間実行される場合には、diversified
戦略を使用して複数のプールに スポットインスタンス を分散することで、フリートの可用性を改善できます。例えば、EC2 フリート の条件が 10 プールとして、ターゲット容量が 100 インスタンスとすると、フリートはプールごとに 10 個の スポットインスタンス を起動します。1 つのプールのスポット料金がこのプールの上限料金を超える場合、フリートの 10% のみに影響がおよびます。この戦略を使用すると、いずれのプールにおいても経時的にフリートが受けるスポット料金の上昇の影響を減少させます。diversified
戦略では、EC2 フリート は、オンデマンド価格
安価で分散型のフリートを作成するには、lowest-price
戦略を InstancePoolsToUseCount
と組み合わせて使用します。例えば、ターゲットキャパシティが 10 のスポットインスタンスで、2 つのスポットキャパシティプールを (InstancePoolsToUseCount
により) 指定した場合、EC2 フリートはスポットキャパシティを満たすために最も低い価格のプールを 2 つ利用します。
スポットインスタンス を配分するために、少数または多数のスポットキャパシティープールを選択して使用することができます。たとえば、バッチ処理を実行する場合は、少数のスポットキャパシティープール ( など) を指定することをお勧めします。これにより、キューのコンピューティング性能を常に確保しながら、コストを最大限削減できます。InstancePoolsToUseCount=2
ウェブサービスを実行する場合は、スポットキャパシティプールが一時的に使用不可になった場合の影響を最小限に抑えるために、多数のスポットキャパシティプール (InstancePoolsToUseCount=10
など) を指定することをお勧めします。
EC2 フリートは、指定したプール数内のスポットインスタンスを、ベストエフォート方式で利用しようとすることご注意ください。ターゲット容量を満たす前にプールにスポットキャパシティーの残量がなくなった場合、EC2 フリートは次に低い価格のプールの容量を利用してリクエストを満たします。ターゲット容量を確実に満たすために、スポットインスタンスが、指定した数を超えるプールから割り当てられることがあります。また、ほとんどのプールにスポット容量がない場合には、指定した数より少ないプールからターゲット容量のすべてが割り当てられることがあります。
ターゲット容量の維持
スポット料金やスポットキャパシティプールで使用可能な容量の変動に伴って スポットインスタンス が終了すると、maintain
型の EC2 フリート によって代替の スポットインスタンス が起動されます。配分戦略によって、次のように置換先インスタンスを起動するプールが決まります。
-
割当戦略が
price-capacity-optimized
の場合、フリートは最もスポットインスタンスの容量が利用可能なプールで置換先インスタンスを起動します。また、価格も考慮し、容量利用率の高い価格の低いプールを特定します。 -
配分戦略が
capacity-optimized
の場合、フリートは、利用可能なスポットインスタンス容量が最大のプールで置換先インスタンスを起動します。 -
配分戦略が
diversified
である場合には、フリートは残りのプールに代替 スポットインスタンス を分散します。 -
配分戦略が
lowest-price
である場合、スポット群は、スポット料金が現在最低値のプールに代替インスタンスを起動します。 -
割り当て戦略が
lowest-price
とInstancePoolsToUseCount
の組み合わせである場合、フリートは最低価格のスポット容量プールを選択し、指定した数のスポット容量プールにわたってスポットインスタンスを起動します。