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

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

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

次のいずれかの配分戦略を指定できます。

lowest-price

スポットインスタンスは、使用可能な容量を持つ最低価格のプールから取得されます。これはデフォルトの戦略です。

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

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

diversified

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

capacity-optimized

スポットインスタンス は、起動中のインスタンスの数に最適な容量のスポットキャパシティープールから提供されます。オプションで capacity-optimized-prioritized により、フリート内の各インスタンスタイプに優先順位を設定できます。EC2 フリートは最初に容量を最適化しますが、インスタンスタイプの優先順位をベストエフォートベースで尊重します。

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

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

InstancePoolsToUseCount

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

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

ターゲット容量を維持する

スポット料金やスポットキャパシティプールで使用可能な容量の変動に伴って スポットインスタンス が終了すると、maintain 型の EC2 フリート によって代替の スポットインスタンス が起動されます。配分戦略が lowest-price である場合、スポット群は、スポット料金が現在最低値のプールに代替インスタンスを起動します。割り当て戦略が lowest-priceInstancePoolsToUseCount の組み合わせである場合、フリートは最低価格のスポット容量プールを選択し、指定した数のスポット容量プールにわたってスポットインスタンスを起動します。配分戦略が capacity-optimized の場合、フリートは、利用可能なスポットインスタンス容量が最大のプールで交換インスタンスを起動します。配分戦略が diversified である場合には、フリートは残りのプールに代替 スポットインスタンス を分散します。

適切な配分戦略の選択

ユースケースに基づいてフリートを最適化できます。

作業の再開とチェックポイント設定に関連する中断に伴うコストが高くなる可能性があるワークロードをフリートで実行している場合は、capacity-optimized 戦略を使用します。この戦略では中断の可能性を低くすることにより、ワークロードの全体的なコストを削減できます。中断の可能性を最小限に抑える必要があると同時に、適切なインスタンスタイプも重要なワークロードには、capacity-optimized-prioritized 戦略を使用します。

フリートが小規模、あるいは実行が短時間で終了する場合、すべてのインスタンスが単一のスポットキャパシティープールに置かれていても、スポットインスタンス が中断される可能性は低くなります。これより、lowest-price 戦略は、低コストを提供している期間に条件に合いやすくなります。

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

安価で分散型のフリートを作成するには、lowest-price 戦略を InstancePoolsToUseCount と組み合わせて使用します。スポットインスタンス を配分するために、少数または多数のスポットキャパシティープールを選択して使用することができます。たとえば、バッチ処理を実行する場合は、少数のスポットキャパシティープール ( など) を指定することをお勧めします。これにより、キューのコンピューティング性能を常に確保しながら、コストを最大限削減できます。InstancePoolsToUseCount=2ウェブサービスを実行する場合は、スポットキャパシティプールが一時的に使用不可になった場合の影響を最小限に抑えるために、多数のスポットキャパシティプール (InstancePoolsToUseCount=10 など) を指定することをお勧めします。

コスト最適化のための EC2 フリート の設定

スポットインスタンス の使用コストを最適化するには、lowest-price 配分戦略を指定し、EC2 フリート が現在のスポット料金に基づいてインスタンスタイプおよびアベイラビリティーゾーンの最も安価な組み合わせを自動的にデプロイするようにします。

オンデマンドインスタンス のターゲット容量では、EC2 フリート は スポットインスタンス の配分戦略 (lowest-pricecapacity-optimized、または diversified) を引き続き採用しながら、公開オンデマンド価格に基づいて最も安いインスタンスタイプを常に選択します。

コスト最適化と分散のための EC2 フリート の設定

安価で分散型のスポットインスタンスのフリートを作成するには、lowest-price 配分戦略を InstancePoolsToUseCount と組み合わせて使用します。EC2 フリートは、現在のスポット料金に基づく最も安価なインスタンスタイプとアベイラビリティーゾーンの組み合わせを、指定した数のスポットキャパシティープールで自動的にデプロイします。この組み合わせを使用することで、最も高価な スポットインスタンス を回避できます。

例えば、ターゲットのキャパシティが 10 のスポットインスタンスで、2 つのスポットキャパシティプールを (InstancePoolsToUseCount により) 指定した場合、EC2 フリートはスポットキャパシティを満たすために最も安価プールを 2 つ利用します。

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

容量最適化のための EC2 フリート の設定

最も利用可能なスポットキャパシティプールでスポットインスタンスを起動するには、capacity-optimized 割り当て戦略を使用します。設定の例については、「例 9: 容量最適化フリートでスポットインスタンスを起動する」を参照してください。

また、capacity-optimized-prioritized の配分戦略を使用し、インスタンスタイプの順序を優先順位の高い順にすれば、プールの優先順位を表すことができます。優先順位の使用は、フリートが起動テンプレートを使用する場合にのみサポートされます。capacity-optimized-prioritized の優先順位を設定するとき、オンデマンド AllocationStrategyprioritized に設定されていると、同じ優先順位がオンデマンドインスタンスにも適用されるのでご注意ください。設定の例については、「例 10: 優先順位のある容量最適化フリートでスポットインスタンスを起動する」を参照してください。