

# EC2 フリートとスポットフリートでキャパシティの再調整を使用して、リスクのあるスポットインスタンスを置き換える
<a name="ec2-fleet-capacity-rebalance"></a>

キャパシティの再調整を使用すると、EC2 フリートまたはスポットフリートは中断のリスクがあるスポットインスタンスをプロアクティブに置き換えることで、目的のスポットキャパシティを維持できます。スポットインスタンスで中断のリスクが高まった場合、Amazon EC2 は[再調整推奨通知](rebalance-recommendations.md)を送信します。キャパシティの再調整が有効になっている場合、リスクのあるインスタンスが中断する前に、再調整推奨通知が新しいスポットインスタンスの起動をトリガーします。

キャパシティの再調整は、実行中のインスタンスが Amazon EC2 によって中断される前に、新しいスポットインスタンスでフリートをプロアクティブに強化することで、ワークロードの可用性を維持するのに効果的です。

**キャパシティの再調整を使用して代替スポットインスタンスを起動するように EC2 フリートを設定するには**  
[create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンド`MaintenanceStrategies` と構造内の関連するパラメータを使用します。JSON 設定の例については、「[例 7: 容量の再調整を設定して代替スポットインスタンスを起動する](ec2-fleet-examples.md#ec2-fleet-config8)」を参照してください。

**キャパシティの再調整を使用して代替スポットインスタンスを起動するようにスポットフリートを設定するには**  
Amazon EC2 コンソールまたは AWS CLI を使用して、キャパシティの再調整を設定できます。

(コンソール) スポットフリートを作成するとき、**[キャパシティの再調整]** チェックボックスをオンにします。詳細については、「[定義済みパラメータを使用してスポットフリートリクエストを作成する](create-spot-fleet.md#create-spot-fleet-advanced)」のステップ 6。d を参照してください。

(AWS CLI) [request-spot-fleet ](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html)コマンドと `SpotMaintenanceStrategies` 構造内の関連するパラメータを使用します。JSON 設定の例については、「[例 8: 容量の再調整を設定して代替スポットインスタンスを起動する](spot-fleet-examples.md#fleet-config8)」を参照してください。

**Topics**
+ [

## 制限事項
](#ec2-fleet-capacity-rebalance-limitations)
+ [

## 設定オプション
](#ec2-fleet-capacity-rebalance-config-options)
+ [

## 考慮事項
](#ec2-fleet-capacity-rebalance-considerations)

## 制限事項
<a name="ec2-fleet-capacity-rebalance-limitations"></a>
+ 容量の再調整は、タイプ `maintain` のフリートでのみ使用可能です。
+ フリートが実行されているときは、容量の再調整設定を変更できません。容量の再調整設定を変更するには、フリートを削除し、新しいフリートを作成する必要があります。

## 設定オプション
<a name="ec2-fleet-capacity-rebalance-config-options"></a>

EC2 フリートとスポットフリートの `ReplacementStrategy` では、次の 2 つの値がサポートされています。

`launch-before-terminate`  
Amazon EC2 フリートは、新しい置換先スポットインスタンスが起動された後に、再調整通知を受信するスポットインスタンスを終了します。`launch-before-terminate` を指定する場合は、`termination-delay` の値も指定する必要があります。新しい置換先インスタンスが起動された後、Amazon EC2 フリートは `termination-delay` の時間だけ待って、古いインスタンスを終了させます。`termination-delay` では、最小値は 120 秒 (2 分)、最大値は 7200 秒 (2 時間) です。  
`launch-before-terminate` は、インスタンスのシャットダウン手順が完了するまでの時間が予測できる場合にのみ使用することをお勧めします。これにより、シャットダウン手順が完了した後にのみ、古いインスタンスが確実に終了されます。Amazon EC2 は、`termination-delay` の前に 2 分間の警告を行い、その後古いインスタンスを中断する可能性があることに注意してください。  
また、`lowest-price` (EC2 フリート) または `lowestPrice` (スポットフリート) 配分戦略を `launch-before-terminate` と組み合わせて使用することは、代替スポットインスタンスが中断するリスクが高まるため、お勧めしません。

`launch`  
Amazon EC2 フリートは、既存のスポットインスタンスに対して再調整通知が送信されると、置換先スポットインスタンスを起動します。Amazon EC2 フリートは、再調整通知を受け取るインスタンスを終了しません。古いインスタンスを終了することも、実行したままにすることもできます。実行中は、すべてのインスタンスに対して課金されます。

## 考慮事項
<a name="ec2-fleet-capacity-rebalance-considerations"></a>

キャパシティの再調整用に EC2 フリートまたはスポットフリートを設定する場合は、次の点を考慮してください。

**リクエストでは可能な限り多くのスポットキャパシティープールを指定する**  
複数のインスタンスタイプとアベイラビリティーゾーンを使用するようにフリートを設定します。これにより、さまざまなスポットキャパシティープールでスポットインスタンスを起動するための柔軟性が得られます。詳細については、「[インスタンスタイプとアベイラビリティーゾーンについて柔軟に対応する](spot-best-practices.md#be-instance-type-flexible)」を参照してください。

**代替スポットインスタンスが中断されるリスクの増大を回避する**  
中断のリスクが高まるのを避けるため、`capacity-optimized` または `capacity-optimized-prioritized` の割り当て戦略をお勧めします。これらの戦略により、代替スポットインスタンスが最適なスポットキャパシティプールで起動されるため、近い将来中断される可能性が低くなります。詳細については、「[価格と容量を最適化する配分戦略を使用する](spot-best-practices.md#use-capacity-optimized-allocation-strategy)」を参照してください。  
`lowest-price` 配分戦略を使用すると、代替スポットインスタンスが中断されるリスクが高まることがあります。これは、置換先スポットインスタンスが起動後すぐに中断される可能性があっても、Amazon EC2 は、その時点で利用可能な容量を持つ最低価格のプールでインスタンスを常に起動するためです。

**Amazon EC2 は、可用性が同じかそれ以上の場合にのみ、新しいインスタンスを起動します**  
容量の再調整の目的の 1 つは、スポットインスタンスの可用性を改善することです。既存のスポットインスタンスが再調整のレコメンデーションを受け取った場合、Amazon EC2 は、新しいインスタンスが既存のインスタンスと同等かそれ以上の可用性を提供する場合にのみ新しいインスタンスを起動します。新しいインスタンスの中断のリスクが既存のインスタンスよりもひどい場合、Amazon EC2 は新しいインスタンスを起動しません。ただし、Amazon EC2 は引き続きスポットキャパシティプールを評価し、可用性が向上したら新しいインスタンスを起動します。  
Amazon EC2 が新しいインスタンスをプロアクティブに起動しないと、既存のインスタンスが中断する可能性があります。これが発生する場合、Amazon EC2 は、新しいインスタンスの中断リスクが高いかどうかに関らず、新しいインスタンスの起動を試みます。

**キャパシティーの再調整は、スポットインスタンスの中断率を増加させるものではありません**  
キャパシティの再調整を有効にしても、[スポットインスタンスの中断率](spot-interruptions.md) (Amazon EC2 がキャパシティを取り戻す必要があるときに再利用されるスポットインスタンスの数) は増加しません。ただし、インスタンスに中断のリスクがあることを容量の再調整が検出した場合、Amazon EC2 Auto Scaling は直ちに新しいインスタンスの起動を試みます。その結果、リスクのあるインスタンスが中断された後に Amazon EC2 が新しいインスタンスを起動するのを待つ場合よりも多くのインスタンスが置き換えられる可能性があります。  
キャパシティーの再調整が有効になっているインスタンスをさらに置き換える可能性がありますが、インスタンスが中断される前にアクションを実行するための時間をより長く確保できるため、事後対応ではなくプロアクティブに対応できるというメリットがあります。[スポットインスタンスの中断通知](spot-instance-termination-notices.md)では、通常、インスタンスを正常にシャットダウンするための猶予期間が最大 2 分しかありません。キャパシティーの再調整で新しいインスタンスを事前に起動することで、既存のプロセスがリスクのあるインスタンスで完了する可能性が高くなり、インスタンスのシャットダウン手順を開始して、リスクのあるインスタンスで新しい作業がスケジュールされないようにできます。新しく起動したインスタンスの準備を開始して、アプリケーションを引き継ぐこともできます。キャパシティーの再調整のプロアクティブな置き換えにより、正常な継続性の恩恵を受けることができます。  
キャパシティーの再調整を使用するリスクとメリットを示す理論的な例として、次のシナリオを検討してください。  
+ 午後 2 時 – インスタンス A の再調整の推奨が受信され、Amazon EC2 は直ちに置換先インスタンス B の起動の試行を開始するため、シャットダウン手順を開始する時間を確保できます。\$1
+ 午後 2 時 30 分 – インスタンス B の再調整の推奨が受信され、インスタンス C に置き換えられるため、シャットダウン手順を開始する時間を確保できます。\$1
+ 午後 2 時 32 分 – キャパシティーの再調整が有効になっておらず、インスタンス A のスポットインスタンスの中断通知が午後 2 時 32 分に受信されていたとすれば、アクションを実行するための猶予期間は最大でも 2 分だけでしたが、インスタンス A はこの時間まで稼働していたことでしょう。
\$1 `launch-before-terminate` が指定されている場合、Amazon EC2 は、置換先インスタンスがオンラインになった後、リスクのあるインスタンスを終了します。

**Amazon EC2 フリート は、満たされた容量がターゲット容量の 2 倍になるまで、新しい置換先スポットインスタンスを起動できます**  
キャパシティの再調整に対応するように設定した場合、フリートはスポットインスタンスが再調整推奨通知を受け取るたびに、新しい代替スポットインスタンスを起動しようとします。スポットインスタンスが再調整勧告を受け取った後は、満たされた容量の一部としてカウントされなくなります。交換戦略に応じて、Amazon EC2 は事前設定された終了遅延の後にインスタンスを終了するか、インスタンスを実行のままにします。これにより、インスタンスで [再調整アクション](rebalance-recommendations.md#rebalancing-actions) を実行できるようになります。  
フリートがターゲットキャパシティの 2 倍に達すると、代替インスタンス自体が再調整に関する推奨事項を受け取った場合でも、新しい代替インスタンスの起動を停止します。  
例えば、100 個のスポットインスタンスをターゲットキャパシティとするスポットフリートを作成するとします。すべてのスポットインスタンスは、再調整に関するレコメンデーションを受け取ります。これにより、Amazon EC2 は 100 個の置換先スポットインスタンスを起動します。これにより、満たされたスポットインスタンスの数が 200 になり、ターゲットキャパシティの 2 倍になります。一部の代替インスタンスが再調整推奨通知を受け取るものの、フリートがターゲットキャパシティの 2 倍を超えることができないため、代替インスタンスはそれ以上起動されません。  
インスタンスの実行中は、すべてのインスタンスに対して課金されることに注意してください。

**再調整推奨通知を受け取ったスポットインスタンスを終了するようにフリートを設定することを推奨する**  
キャパシティの再調整に対応するようにフリートを設定する場合は、インスタンスのシャットダウン手順を完了するまでの時間が予測できる場合に限り、`launch-before-terminate` を選択して適切な終了遅延を設定することをお勧めします。これにより、シャットダウン手順が完了した後にのみ、古いインスタンスが確実に終了されます。  
再調整のために推奨されるインスタンスを終了する場合は、フリートのスポットインスタンスが受信する再調整レコメンデーションシグナルをモニタリングすることをお勧めします。シグナルをモニタリングすることで、Amazon EC2 が中断する前に、影響を受けるインスタンスで [再調整のアクション](rebalance-recommendations.md#rebalancing-actions) をすばやく実行し、手動で終了できます。インスタンスを終了しない場合、インスタンスの実行中、課金が継続します。Amazon EC2 は、再調整に関する推奨を受け取るインスタンスを自動的に終了しません。  
Amazon EventBridge またはインスタンスメタデータを使用して通知を設定できます。詳細については、「[再調整に関する推奨事項シグナルのモニタリング](rebalance-recommendations.md#monitor-rebalance-recommendations)」を参照してください。

**スケールインまたはスケールアウト中に満たされたキャパシティを計算する際、フリートが再調整推奨通知を受け取るインスタンスをカウントしない**  
キャパシティの再調整に対応するようにフリートが設定されている場合に、ターゲットキャパシティをスケールインまたはスケールアウトするように変更すると、次のように、フリートは再調整の対象としてマークされたインスタンスを、満たされたキャパシティの一部としてカウントしません。  
+ スケールイン – 希望するターゲット容量を減らすと、Amazon EC2 は目的の容量に達するまで、再調整の対象としてマークされていないインスタンスを終了します。再調整の対象としてマークされたインスタンスは、満たされた容量にはカウントされません。

  例えば、100 個のスポットインスタンスをターゲットキャパシティとするフリートを作成し、そのうち 10 個のインスタンスが再調整推奨通知を受け取ったとすると、Amazon EC2 が新たに 10 個の代替インスタンスを起動するため、110 個のインスタンスのキャパシティが満たされます。その後、ターゲット容量を 50 個に減らしますが (スケールイン)、再調整の対象としてマークされた 10 個のインスタンスは Amazon EC2 によって終了されないため、満たされた容量は実際には 60 インスタンスになります。このようなインスタンスは手動で終了する必要があります。または、実行したままにしておくことができます。
+ スケールアウト – 目的のターゲット容量を増やすと、目的の容量に達するまで Amazon EC2 は新しいインスタンスを起動します。再調整の対象としてマークされたインスタンスは、満たされた容量にはカウントされません。

  例えば、100 個のスポットインスタンスをターゲットキャパシティとするフリートを作成し、そのうち 10 個のインスタンスが再調整推奨通知を受け取ったとすると、フリートが新たに 10 個の代替インスタンスを起動するため、110 個のインスタンスのキャパシティが満たされます。その後、ターゲット容量を 200 個に増やし (スケールアウトし) ますが、再調整の対象としてマークされた 10 個のインスタンスは、フリートによってターゲット容量の一部としてカウントされないため、実際には 210 個のインスタンスになります。このようなインスタンスは手動で終了する必要があります。または、実行したままにしておくことができます。