容量の再調整 - Amazon Elastic Compute Cloud

容量の再調整

Amazon EC2 が再調整に関する推奨を発して、スポットインスタンスが中断リスクが高まっていることを通知したとき、代替スポットインスタンスを起動するようにスポットフリートを設定できます。容量の再調整は、実行中のインスタンスが Amazon EC2 により中断される前に、新しいスポットインスタンスでフリートを事前に拡張することにより、ワークロードの可用性を維持するのに役立ちます。詳細については、「EC2 インスタンスの再調整に関する推奨事項」を参照してください。

代替スポットインスタンスを起動するようにスポットフリートを設定するには、Amazon EC2 コンソールまたは AWS CLI を使用できます。

制限事項

  • 容量の再調整は、タイプ maintain のフリートでのみ使用可能です。

  • フリートが実行されているときは、容量の再調整設定を変更できません。容量の再調整設定を変更するには、フリートを削除し、新しいフリートを作成する必要があります。

設定オプション

スポットフリートの 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 分間の警告を行い、その後古いインスタンスを中断する可能性があることに注意してください。

また、lowestPrice 配分戦略を launch-before-terminate と組み合わせて使用することは、中断のリスクが高い代替スポットインスタンスを持つことになるため、強く推奨されません。

launch

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

考慮事項

容量の再調整用にスポットフリートを設定する場合は、次の点を考慮してください。

リクエストでは可能な限り多くのスポットキャパシティープールを指定する

複数のインスタンスタイプとアベイラビリティーゾーンを使用するように、スポットフリートを設定します。これにより、さまざまなスポットキャパシティープールでスポットインスタンスを起動するための柔軟性が得られます。詳細については、「インスタンスタイプとアベイラビリティーゾーンについて柔軟に対応する」を参照してください。

代替スポットインスタンスが中断されるリスクの増大を回避する

lowestPrice 割り当て戦略を使用している場合、代替スポットインスタンスが中断するリスクが高くなることがあります。これは、置換先スポットインスタンスが起動後すぐに中断される可能性があっても、Amazon EC2 は、その時点で利用可能な容量を持つ最低価格のプールでインスタンスを常に起動するためです。中断のリスクが高くなるのを避けるため、lowestPrice アロケーションストラテジー、代わりに推奨する capacityOptimized または capacityOptimizedPrioritized 配分戦略。これらの戦略により、代替スポットインスタンスが最適なスポットキャパシティプールで起動されるため、近い将来中断される可能性が低くなります。詳細については、「価格と容量を最適化する配分戦略を使用する」を参照してください。

Amazon EC2 は、可用性が同じかそれ以上の場合にのみ、新しいインスタンスを起動します

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

Amazon EC2 が新しいインスタンスをプロアクティブに起動しないと、既存のインスタンスが中断する可能性があります。これが発生する場合、Amazon EC2 は、新しいインスタンスの中断リスクが高いかどうかに関らず、新しいインスタンスの起動を試みます。

キャパシティーの再調整は、スポットインスタンスの中断率を増加させるものではありません

キャパシティの再調整を有効にしても、スポットインスタンスの中断率 (Amazon EC2 がキャパシティを取り戻す必要があるときに再利用されるスポットインスタンスの数) は増加しません。ただし、インスタンスに中断のリスクがあることを容量の再調整が検出した場合、Amazon EC2 Auto Scaling は直ちに新しいインスタンスの起動を試みます。その結果、リスクのあるインスタンスが中断された後に Amazon EC2 が新しいインスタンスを起動するのを待つ場合よりも多くのインスタンスが置き換えられる可能性があります。

キャパシティーの再調整が有効になっているインスタンスをさらに置き換える可能性がありますが、インスタンスが中断される前にアクションを実行するための時間をより長く確保できるため、事後対応ではなくプロアクティブに対応できるというメリットがあります。スポットインスタンスの中断通知では、通常、インスタンスを正常にシャットダウンするための猶予期間が最大 2 分しかありません。キャパシティーの再調整で新しいインスタンスを事前に起動することで、既存のプロセスがリスクのあるインスタンスで完了する可能性が高くなり、インスタンスのシャットダウン手順を開始して、リスクのあるインスタンスで新しい作業がスケジュールされないようにできます。新しく起動したインスタンスの準備を開始して、アプリケーションを引き継ぐこともできます。キャパシティーの再調整のプロアクティブな置き換えにより、正常な継続性の恩恵を受けることができます。

キャパシティーの再調整を使用するリスクとメリットを示す理論的な例として、次のシナリオを検討してください。

  • 午後 2 時 – インスタンス A の再調整の推奨が受信され、Amazon EC2 は直ちに置換先インスタンス B の起動の試行を開始するため、シャットダウン手順を開始する時間を確保できます。*

  • 午後 2 時 30 分 – インスタンス B の再調整の推奨が受信され、インスタンス C に置き換えられるため、シャットダウン手順を開始する時間を確保できます。*

  • 午後 2 時 32 分 – キャパシティーの再調整が有効になっておらず、インスタンス A のスポットインスタンスの中断通知が午後 2 時 32 分に受信されていたとすれば、アクションを実行するための猶予期間は最大でも 2 分だけでしたが、インスタンス A はこの時間まで稼働していたことでしょう。

* launch-before-terminate が指定されている場合、Amazon EC2 は、置換先インスタンスがオンラインになった後、リスクのあるインスタンスを終了します。

Amazon EC2 フリート は、満たされた容量がターゲット容量の 2 倍になるまで、新しい置換先スポットインスタンスを起動できます

スポットフリートが容量の再調整用に設定されている場合、Amazon EC2 は、再調整に関する推奨を受け取るすべてのスポットインスタンスに対して、新しい置換先スポットインスタンスを起動しようとします。スポットインスタンスが再調整勧告を受け取った後は、満たされた容量の一部としてカウントされなくなります。交換戦略に応じて、Amazon EC2 は事前設定された終了遅延の後にインスタンスを終了するか、インスタンスを実行のままにします。これにより、インスタンスで 再調整アクション を実行できるようになります。

フリートがターゲットキャパシティの 2 倍に達すると、代替インスタンス自体が再調整に関する推奨事項を受け取った場合でも、新しい代替インスタンスの起動を停止します。

例えば、100 個のスポットインスタンスのターゲット容量を持つスポットフリートを作成するとします。すべてのスポットインスタンスは、再調整に関するレコメンデーションを受け取ります。これにより、Amazon EC2 は 100 個の置換先スポットインスタンスを起動します。これにより、満たされたスポットインスタンスの数が 200 になり、ターゲットキャパシティの 2 倍になります。一部の代替インスタンスは再調整に関する推奨事項を受け取りますが、フリートがターゲット容量の 2 倍を超えることができないため、代替インスタンスはそれ以上起動されません。

インスタンスの実行中は、すべてのインスタンスに対して課金されることに注意してください。

再調整通知を受け取ったスポットインスタンスを終了させるようにスポットフリートを設定することをお勧めします

容量再調整のためにスポットフリートを設定する場合、インスタンスのシャットダウン手順が完了するまでの時間を予測できる場合に限り、適切な終了遅延を持つ launch-before-terminate を選択することをお勧めします。これにより、シャットダウン手順が完了した後にのみ、古いインスタンスが確実に終了されます。

再調整のために推奨されるインスタンスを終了する場合は、フリートのスポットインスタンスが受信する再調整レコメンデーションシグナルをモニタリングすることをお勧めします。シグナルをモニタリングすることで、Amazon EC2 が中断する前に、影響を受けるインスタンスで 再調整のアクション をすばやく実行し、手動で終了できます。インスタンスを終了しない場合、インスタンスの実行中、課金が継続します。Amazon EC2 は、再調整に関する推奨を受け取るインスタンスを自動的に終了しません。

Amazon EventBridge またはインスタンスメタデータを使用して通知を設定できます。詳細については、「再調整に関する推奨事項シグナルのモニタリング」を参照してください。

スポットフリートは、スケールインまたはスケールアウト中に満たされた容量を計算するとき、再調整に関する推奨を受け取るインスタンスはカウントしません

容量の再調整のためにスポットフリートを設定し、ターゲット容量をスケールインまたはスケールアウトするように変更した場合、フリートは次のように、再調整の対象としてマークされたインスタンスを、満たされた容量の一部としてカウントしません。

  • スケールイン – 希望するターゲット容量を減らすと、Amazon EC2 は目的の容量に達するまで、再調整の対象としてマークされていないインスタンスを終了します。再調整の対象としてマークされたインスタンスは、満たされた容量にはカウントされません。

    例えば、100 個のスポットインスタンスをターゲット容量を持つスポットフリートを作成するとします。10 個のインスタンスは再調整に関する推奨事項を受け取ります。そのため、Amazon EC2 は 10 個の新しい代替インスタンスを起動し、その結果、110 個のインスタンスの容量が満たされます。その後、ターゲット容量を 50 個に減らしますが (スケールイン)、再調整の対象としてマークされた 10 個のインスタンスは Amazon EC2 によって終了されないため、満たされた容量は実際には 60 インスタンスになります。このようなインスタンスは手動で終了する必要があります。または、実行したままにしておくことができます。

  • スケールアウト – 目的のターゲット容量を増やすと、目的の容量に達するまで Amazon EC2 は新しいインスタンスを起動します。再調整の対象としてマークされたインスタンスは、満たされた容量にはカウントされません。

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