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 で作成することをお勧めします。詳細については、「再調整に関する推奨事項シグナルのモニタリング」を参照してください。イベントルールの作成および使用方法の詳細な例については、「Amazon EC2 スポットインスタンス 中断通知の利用」を参照してください。

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

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

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

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

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

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

スポットを使用すると、個々のインスタンスの観点からではなく、集約容量 (vCPU、メモリ、ストレージ、またはネットワークスループットを含む単位) の観点から考えることができます。 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 を参照してください。