EC2 スポットを利用するうえでのベストプラクティス - Amazon Elastic Compute Cloud

EC2 スポットを利用するうえでのベストプラクティス

Amazon EC2 スポットインスタンス は、AWS クラウドの予備の EC2 コンピューティング性能であり、オンデマンド料金に比べて最大 90% オフの節約が可能です。オンデマンドインスタンス と スポットインスタンス の唯一の違いは、 Amazon EC2 が容量を必要とするときに、Amazon EC2 が スポットインスタンス を中断できることです。この中断の際には、2 分前に通知があります。

スポットインスタンス は、ステートレスかつフォールトトレラントで、柔軟性の高いアプリケーションに適しています。たとえば、 スポットインスタンス はビッグデータ、コンテナ化されたワークロード、CI/CD、ステートレスウェブサーバー、ハイパフォーマンスコンピューティング (HPC)、レンダリングワークロードに適しています。

実行中、 スポットインスタンス は オンデマンドインスタンス とまったく同じ動作をします。ただし、スポットは、ワークロードが完了するまで十分な期間、実行中のインスタンスが動作し続けることを保証するものではありません。また、スポットは必要としているインスタンスをすぐに取得できること、またはリクエストした総容量がいつでも取得できることを保証するものではありません。さらに、スポットインスタンスの可用性は需要と供給によって変化し、将来のパフォーマンスが過去の実績により保証されるものではないため、スポットインスタンスの容量や発生する中断は、時間の経過とともに変化する可能性があります。

スポットインスタンス は、柔軟性がない、ステートフル、フォールトイントレラント、またはインスタンスノード間で緊密に結合されているワークロードには適していません。また、ターゲット容量がフルに利用できない期間が時折あることに耐えられないワークロードには推奨されません。こうしたワークロードに スポットインスタンス を使用したり、中断を処理するために オンデマンドインスタンス へのフェールオーバーを試みたりしないよう強く警告します。

スポットの使用に慣れている場合でも、スポットインスタンスを使い始めたばかりの場合でも、スポットインスタンスの中断や可用性に関する問題が発生している場合には、スポットサービスを最大限に活用できるよう、これらのベストプラクティスに従うことをお勧めします。

中断に備えて個々のインスタンスを準備する

スポットインスタンスの中断を適切に処理する最善の方法は、耐障害性のあるアプリケーションを設計することです。これを実現するためには、EC2 インスタンスの再調整に関する推奨事項、ならびにスポットインスタンスの中断通知を利用できます。

EC2 インスタンスの再調整に関する推奨事項は、スポットインスタンスで中断のリスクが高まった場合に通知するための新しいシグナルです。ユーザーは、このシグナルにより、スポットインスタンスの中断 2 分前の通知が届いていない段階で、事前にスポットインスタンスの管理を行えます。ワークロードを、中断のリスクが高くない新規または既存の スポットインスタンス に再調整することができます。この新しいシグナルは、Auto Scaling グループとスポットフリートでの容量の再調整機能を通じて、簡単に利用することができます。詳細については、「事前の容量再調整の利用」を参照してください。

スポットインスタンスの中断通知は、Amazon EC2 がスポットインスタンスを中断する 2 分前に発行される警告です。ワークロードに時間の面での柔軟性がある場合は、中断が発生した際にそれを終了するのではなく、停止または休止状態になるようにスポットインスタンスを設定することができます。Amazon EC2 は、中断が発生したスポットインスタンスを自動的に停止または休止状態にし、使用可能な容量が確保できた際にはそのインスタンスを自動的に再開します。

再調整に関する推奨事項と中断通知をキャプチャし、ワークロードの進行状況のチェックポイントをトリガーするか、中断を適切に処理するルールを Amazon EventBridge で作成することをお勧めします。詳細については、「再調整に関する推奨事項シグナルのモニタリング」を参照してください。イベントルールの作成および使用方法の詳細な例については、「Taking Advantage of Amazon EC2 スポットインスタンスInterruption Notices」を参照してください。

詳細については、「EC2 インスタンスの再調整に関する推奨事項」および「スポットインスタンスの中断。」を参照してください。

インスタンスタイプとアベイラビリティーゾーンについて柔軟に対応する

スポットキャパシティープールは、同じインスタンスタイプ (m5.large など) とアベイラビリティーゾーン (us-east-1a など) を持つ、未使用の EC2 インスタンスのセットです。どのインスタンスタイプをリクエストし、どのアベイラビリティーゾーンでワークロードをデプロイするか柔軟に対応することで、スポットが必要な量のコンピューティング容量を見つけ、割り当てられる可能性が高くなります。たとえば、c4、m5、m4 ファミリのラージを使用してもよいのであれば、 c5.large を指定する必要はないということです。

具体的なニーズに応じて、コンピューティング要件を満たすためにどのインスタンスタイプを使用できるか評価できます。ワークロードを垂直にスケーリングできる場合は、より大きいインスタンスタイプ (vCPU とメモリが多い) をリクエストに含めてください。水平にしかスケーリングできない場合は、オンデマンドの顧客からの需要が少ない、旧世代のインスタンスタイプを含めることをお勧めします。

一般的に、ワークロードごとに少なくとも 10 種類のインスタンスタイプに柔軟に対応できれば十分です。さらに、すべてのアベイラビリティーゾーンが VPC で使用するように設定され、ワークロード用に選択されていることを確認してください。

EC2 Auto Scaling グループまたはスポットフリートを使用して総容量を管理する

スポットを使用すると、個々のインスタンスの観点からではなく、総容量 (vCPUs、メモリ、ストレージ、またはネットワークスループットなどの単位) の観点から検討することが可能になります。Auto Scaling グループとスポットフリートは、ターゲット容量の起動および維持のために使用できます。これにより、中断されたり手動で終了されたりしたリソースを置き換えるリソースを自動的に要求できます。Auto Scaling グループまたはスポットフリートを設定する際には、アプリケーションのニーズに基づいてインスタンスタイプとターゲット容量を指定するだけで済みます。詳細については、Amazon EC2 Auto Scaling ユーザーガイドAuto Scaling グループおよびこのユーザーガイドの スポットフリートリクエストを作成します。 をご参照ください。

容量を最適化する配分戦略を使用する

Auto Scaling グループの配分戦略を使えば、予備容量を持つスポットキャパシティープールを手動で探す必要なく、ターゲット容量をプロビジョニングできます。最も利用性の高いスポットキャパシティープールからインスタンスが自動的にプロビジョニングされる、capacity optimized 戦略を使用することをお勧めします。また、スポットフリートの capacity optimized 配分戦略も活用できます。最適な容量を持つプールからスポットインスタンス容量が供給されるため、使用しているスポットインスタンスが再要求される可能性は低くなります。配分戦略の詳細については、このユーザーガイドの「容量最適化のためのスポットフリートの設定」および Amazon EC2 Auto Scaling ユーザーガイドの「スポットインスタンス」を参照してください。

事前の容量再調整の利用

容量の再調整は、実行中のスポットインスタンスが 2 分間のスポットインスタンス中断通知を受け取る前に、新しいスポットインスタンスでフリートを事前に拡張することにより、ワークロードの可用性を維持するのに役立ちます。容量の再調整が有効な場合、Auto Scaling またはスポットフリートは、再調整の推奨事項を受け取ったスポットインスタンスを積極的に置き換えることを試みます。これにより、中断のリスクが高くない新しいスポットインスタンスにワークロードを再調整することができます。

容量の再調整は、容量を最適化する配分戦略 (最適な予備容量を見つけるように設計) と混合インスタンスポリシー (複数のアベイラビリティーゾーンで実行されている複数のインスタンスタイプにインスタンスをデプロイすることで可用性を向上させるように設計) を補完します。

詳細については、「容量の再調整」を参照してください。

統合された AWS のサービスを使用して スポットインスタンス を管理する

他の AWS のサービスは、個々のインスタンスやフリートを管理する必要なく、全体的なコンピューティングコストを削減できるよう、スポットと統合されています。適用可能なワークロードには、Amazon EMR、Amazon ECS、AWS Batch、Amazon EKS、SageMaker、AWS Elastic Beanstalk および Amazon GameLift のソリューションの使用を検討することをお勧めします。これらのサービスでのスポットベストプラクティスの詳細については、Amazon EC2 スポットインスタンス Workshops Website を参照してください。