EC2 フリート の設定戦略 - Amazon Elastic Compute Cloud

EC2 フリート の設定戦略

EC2 フリート は、オンデマンドインスタンス と スポットインスタンス のグループです。

EC2 フリート は、フリートのリクエストで指定したターゲット容量を満たすために必要なインスタンス数の起動を試みます。フリートは、オンデマンドインスタンス のみ、または スポットインスタンス のみで構成するか、オンデマンドインスタンス と スポットインスタンス を組み合わせて構成できます。スポットインスタンス へのリクエストは、利用可能な容量があり、リクエストで指定した 1 時間あたりの上限料金がスポット料金を超えている場合に達成されます。また、スポットインスタンス が中断した場合、フリートはターゲット容量を維持しようとします。

フリートに対する 1 時間あたりの支払い上限容量を設定し、上限料金に達するまで EC2 フリート でインスタンスを起動することもできます。支払い上限料金に達すると、ターゲット容量に満たない場合でも、フリートはインスタンスの起動を停止します。

スポットインスタンス プールは、同様のインスタンスタイプ、オペレーティングシステム、アベイラビリティーゾーン、ネットワークプラットフォームの一連の使われていない EC2 インスタンスです。EC2 フリート を作成する場合に複数の起動条件を含めることができ、これにはインスタンスタイプ、アベイラビリティーゾーン、サブネット、上限価格があります。フリートは、リクエストとそのリクエストの設定を含む起動条件に基づいてリクエストを満たすために使用される スポットインスタンス プールを選択します。スポットインスタンス は選択されたプールから取得されます。

EC2 フリート では、コアまたはインスタンスの数やメモリの量に基づいてアプリケーションにとって意味がある大量の EC2 容量をプロビジョニングできます。たとえば、EC2 フリート が 200 インスタンス (そのうち 130 が オンデマンドインスタンス で、残りが スポットインスタンス) のターゲット容量を起動するように指定できます。

ニーズを満たす EC2 フリート を作成するのに適切な設定戦略を使用してください。

EC2 フリート の計画

EC2 フリート を計画するときは、次の操作を実行することをお勧めします。

  • 目的のターゲット容量の同期または非同期のワンタイムリクエストを送信する EC2 フリート と、ターゲット容量の継続した維持を行うスポットフリートのどちらを作成するかを決定します。詳細については、「EC2 フリート のリクエストタイプ」を参照してください。

  • アプリケーションの要件を満たすインスタンスタイプを決定します。

  • EC2 フリート に スポットインスタンス を含める予定の場合、フリートを作成する前に「Spot Best Practices」を確認してください。フリートを計画するときにこれらのベストプラクティスを使用して、できるだけ低価格でインスタンスをプロビジョニングできるようにします。

  • EC2 フリート のターゲット容量を決定します。インスタンスまたはカスタムユニットでターゲット容量を設定できます。詳細については、「EC2 フリート インスタンスの分量指定」を参照してください。

  • EC2 フリート のターゲットキャパシティーのどの部分がオンデマンド容量およびスポット容量となるかを決定します。オンデマンド容量とスポット容量のいずれか、または両方に対して 0 を指定できます。

  • インスタンス分量指定を使用している場合は、ユニット当りの料金を決定します。インスタンス時間当りの料金の計算は、インスタンス時間当たりの料金をそのインスタンスが表すユニット数 (または分量) で割って算出しますインスタンス分量指定を使用する場合、ユニット当りのデフォルトの料金は 1 インスタンス時間当りの料金となります。

  • フリートに支払う 1 時間あたりの上限料金を設定します。詳細については、「使用量の管理」を参照してください。

  • EC2 フリート に対して可能なオプションを確認します。詳細については、「EC2 フリート JSON 設定ファイルリファレンス」を参照してください。EC2 フリート の設定の例については、「EC2 フリート の設定例」を参照してください。

EC2 フリート のリクエストタイプ

EC2 フリート リクエストには、次の 3 つの種類があります。

instant

リクエストタイプを instant、EC2 フリート として設定した場合、希望する容量に同期ワンタイムリクエストを配置します。API レスポンスで、起動したインスタンスとともに起動できなかったインスタンスのエラーを返します。

request

リクエストタイプを request、EC2 フリート として設定した場合、希望する容量に非同期ワンタイムリクエストを配置します。それ以降は、スポットの中断のために容量が減少した場合、フリートは スポットインスタンス を補充しようとせず、容量が利用できない場合に代替 スポットインスタンス プールでリクエストを送信しません。

maintain

(デフォルト) リクエストタイプを maintain として設定した場合、EC2 フリート は希望する容量に非同期リクエストを配置し、中断された スポットインスタンス を自動的に補充して、容量を維持します。

3 つのタイプすべてのリクエストが、配分戦略の恩恵を受けます。詳細については、「スポットインスタンス の配分戦略」を参照してください。

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

EC2 フリート の配分戦略は、起動条件による スポットインスタンス プールからどのように スポットインスタンス のリクエストを満たすかについて決定します。以下に、フリートで指定できる配分戦略を示します。

lowest-price

スポットインスタンス は、最低価格のプールから取得されます。これはデフォルトの戦略です。

diversified

スポットインスタンス はすべてのプールに分散されます。

capacity-optimized

スポットインスタンス は、起動するインスタンスの数に最適な容量のスポットインスタンスプールから取得されます。

InstancePoolsToUseCount

スポットインスタンス は、指定した数のスポットプールに分散されます。このパラメータは lowest-price と組み合わせて使用する場合にのみ有効です。

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

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

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

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

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

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

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

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

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

適切な配分戦略の選択

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

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

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

diversified 戦略では、EC2 フリート は、オンデマンド価格以上のスポット料金のいずれのプールにも スポットインスタンス を起動しません。

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

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

オンデマンドバックアップのための EC2 フリート の設定

重大なニュースイベントや試合の開始時にニュースウェブサイトをスケールする必要があるなど、予測できない緊急のスケーリングニーズが生じた場合、希望するオプションに十分な容量がないときは、オンデマンドインスタンス の代替インスタンスタイプを指定することをお勧めします。たとえば、c5.2xlarge オンデマンドインスタンス を希望するが使用可能な容量が十分でない場合、ピーク負荷時に c4.2xlarge インスタンスを使用できます。この場合、EC2 フリート は c5.2xlarge インスタンスを使用してすべてのターゲット容量を満たそうとしますが、容量が十分でない場合、c4.2xlarge インスタンスを自動的に起動してターゲット容量を満たします。

オンデマンド容量に基づくインスタンスタイプの優先順位付け

EC2 フリート でオンデマンド容量を達成する場合、デフォルトで最低価格のインスタンスタイプが最初に起動されます。AllocationStrategyprioritized に設定すると、EC2 フリート は優先度に従って、オンデマンド容量を達成するために最初に使用するインスタンスタイプを決定します。優先度は起動テンプレートの上書きに割り当てられ、最も高い優先度が最初に起動されます。

たとえば、3 つの起動テンプレートの上書きにそれぞれ異なるインスタンスタイプとして c3.largec4.largec5.large を設定したとします。c5.large のオンデマンド価格は、c4.large の価格より低くなります。c3.large が最低価格です。順番の決定に優先度を使用しない場合、フリートはオンデマンド容量を達成するために最初に c3.large を起動し、次に c5.large を起動します。c4.large の リザーブドインスタンス は未使用のことが多いため、起動テンプレートの上書きの優先度を設定し、c4.largec3.largec5.large の順にすることができます。

オンデマンドインスタンス のための キャパシティーの予約 の使用

容量予約の使用戦略を use-capacity-reservations-first に設定することで、オンデマンドインスタンス の起動時に最初に オンデマンドキャパシティー予約 を使用するようにフリートを設定できます。この設定は、オンデマンドインスタンス (lowest-price または prioritized) の配分戦略と組み合わせて使用できます。

未使用容量予約がオンデマンド容量を満たすために使用される場合:

  • フリートは、未使用容量予約を使用して、目標オンデマンド容量までのオンデマンド容量を満たします。

  • 複数のインスタンスプールに未使用容量予約がある場合、オンデマンド配分戦略 (lowest-price または prioritized) が適用されます。

  • 未使用容量予約の数が目標オンデマンド容量より少ない場合、残りの目標オンデマンド容量は、オンデマンド配分戦略 (lowest-price または prioritized) に従って満たされます。

タイプ instant のフリートには未使用 オンデマンドキャパシティー予約 のみを使用できます。

オンデマンド容量を満たすために キャパシティーの予約 を使用するようにフリートを設定する方法の例については、「EC2 フリート の設定例」を参照してください。詳細については、「オンデマンドキャパシティー予約」および「オンデマンド容量予約に関するよくある質問」を参照してください。

容量の再調整

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

代替スポットインスタンスを起動するように EC2 フリート を設定するには、create-fleet (AWS CLI) コマンドおよび MaintenanceStrategies 構造内の関連するパラメータを使用します。詳細については、「起動設定の例」を参照してください。

の制限事項

  • タイプ maintain のフリートでのみ使用可能です。

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

考慮事項

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

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

EC2 フリート が容量の再調整用に設定されている場合、 フリートは、再調整に関する推奨事項を受け取るすべてのスポットインスタンスに対して、新しい代替スポットインスタンスを起動しようとします。スポットインスタンスが再調整に関する推奨事項を受け取ると、そのスポットインスタンスは満たされた容量の一部としてカウントされなくなり、EC2 フリート インスタンスは自動的に終了しません。これにより、インスタンスで再調整アクションを実行できるようになります。その後、インスタンスを終了することも、実行したままにすることもできます。

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

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

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

再調整に関する推奨事項を受け取るスポットインスタンスを手動で終了することをお勧めします

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

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

EC2 フリート は、スケールインまたはスケールアウト中に満たされた容量を計算する際、再調整に関する推奨事項を受け取るインスタンスはカウントされない

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

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

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

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

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

リクエストにできる限り多くのスポットインスタンスプールを提供する

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

最適なスポットインスタンスプールを使用するように EC2 フリート を設定する

capacity-optimized 割り当て戦略を使用して、代替スポットインスタンスが最適なスポットインスタンスプールで起動されるようにします。詳細については、「容量を最適化する配分戦略を使用する」を参照してください。

上限価格の優先

各 EC2 フリート には、グローバルな上限料金を含めるか、デフォルト (オンデマンド価格) を使用できます。フリートは、これを起動条件のデフォルト上限料金として使用します。

任意で 1 つまたは複数の起動条件に上限料金を指定することができます。これは、起動条件に指定された料金です。起動条件に特定の料金が含まれる場合、EC2 フリート は起動条件の上限料金としてこの料金を使用し、全体の上限料金に優先することになります。特定の上限料金を含まないそのほかの起動条件は、全体の上限料金を引き続き使用することにご注意ください。

使用量の管理

EC2 フリート は、TotalTargetCapacity パラメータまたは MaxTotalPrice パラメータ (支払い上限料金) のいずれかに達すると、インスタンスの起動を停止します。フリートに支払う 1 時間あたりの料金を管理するには、MaxTotalPrice を指定できます。上限の合計料金に達すると、ターゲット容量に満たない場合でも、EC2 フリート はインスタンスの起動を停止します。

以下の例は、2 つの異なるシナリオを示しています。最初の例では、ターゲット容量に達すると、EC2 フリート はインスタンスの起動を停止します。2 番目の例では、支払い上限料金 (MaxTotalPrice) に達すると、EC2 フリート はインスタンスの起動を停止します。

例: ターゲット容量に達したときにインスタンスの起動を停止する

m4.large オンデマンドインスタンス に対するリクエストの内容が以下のとおりとします。

  • オンデマンド料金: 1 時間あたり 0.10 USD

  • OnDemandTargetCapacity: 10

  • MaxTotalPrice: 1.50 USD

EC2 フリート は 10 オンデマンドインスタンス を起動します。合計料金 1.00 USD (10 インスタンス x 0.10 USD) は オンデマンドインスタンス の MaxTotalPrice (1.50 USD) を超えないためです。

例: 最大の合計料金に達したときにインスタンスの起動を停止する

m4.large オンデマンドインスタンス に対するリクエストの内容が以下のとおりとします。

  • オンデマンド料金: 1 時間あたり 0.10 USD

  • OnDemandTargetCapacity: 10

  • MaxTotalPrice: 0.80 USD

EC2 フリート がオンデマンドターゲット容量 (10 オンデマンドインスタンス) を起動した場合、1 時間あたりの合計コストは 1.00 USD になります。これは オンデマンドインスタンス の MaxTotalPrice として指定した料金 (0.80 USD) を超えます。支払い可能な額を超えないように、EC2 フリート は 8 オンデマンドインスタンス (オンデマンドターゲット容量未満) を起動します。これを超えて起動すると、オンデマンドインスタンス の MaxTotalPrice を超えてしまいます。

EC2 フリート インスタンスの分量指定

EC2 フリート を作成する場合、各インスタンスタイプがアプリケーションのパフォーマンスに寄与する容量単位を定義できます。次に、インスタンスの分量指定を使用して、起動仕様ごとの上限料金を調整できます。

デフォルトでは、指定する料金は 1 インスタンス時間あたりの料金となります。インスタンスの分量指定機能を使用すると、指定した料金は ユニット時間ごとの料金となります。ユニット時間あたりの入札価格は、インスタンスタイプの入札価格をそのユニットの数で割って計算できます。EC2 フリート では、ターゲット容量をインスタンス分量で割ることで起動するインスタンスの数を計算します。その結果が整数でなければ、フリートはその数を次の整数に切り上げ、これによりフリートのサイズがターゲット容量以上になります。起動されたインスタンスの容量がリクエストされたターゲット容量を超えた場合でも、フリートは起動仕様で指定したどのプールでも選択できます。

次の表には、10 のターゲット容量の EC2 フリート のユニット当たり入札価格を特定するために計算の例が含まれています。

インスタンスタイプ インスタンスの分量 ターゲット容量 起動されたインスタンスの数 インスタンス時間あたりのスポット料金 ユニット時間あたりの価格
r3.xlarge

2

10

5

(10 ÷ 2)

0.05 USD

0.025 USD

(.05 ÷ 2)

r3.8xlarge

8

10

2

(10 ÷ 8、結果切り上げ)

0.10 USD

0.0125 USD

(.10 ÷ 8)

次に示すように、EC2 フリート を使用して、受理時のユニットごとの最低価格のプールに指定するターゲット容量をプロビジョニングします。

  1. EC2 フリート のターゲット容量を、インスタンス (デフォルト) あるいは仮想 CPU、メモリ、ストレージまたはスループットからご希望のユニットで設定します。

  2. ユニットあたりの料金を設定します。

  3. 各起動条件で、インスタンスタイプがターゲット容量に対して必要なユニット数である分量を指定します。

インスタンスの分量指定例

次の設定の EC2 フリート を検討します。

  • ターゲット容量 24

  • r3.2xlarge のインスタンスタイプの起動条件と分量 6

  • c3.xlarge のインスタンスタイプの起動条件と分量 5

分量とは、インスタンスタイプがターゲット容量に対して必要なユニット数を表します。最初の起動条件がユニットあたりの料金を最低値で提供する場合 (インスタンス時間あたりの r3.2xlarge の料金を 6 で割ったもの)、EC2 フリート はこれらのインスタンスから 4 つを起動します (24 を 6 で割ったもの)。

2 番目の起動条件がユニットあたりの料金を最低値で提供する場合 (インスタンス時間あたりの c3.xlarge の料金を 5 で割ったもの)、EC2 フリート はこれらのインスタンスから 5 つを起動します (24 を 5 で割ったもの、結果が切り上げられる)。

インスタンスの分量指定と配分戦略

次の設定の EC2 フリート を検討します。

  • ターゲット容量 30 スポットインスタンス

  • c3.2xlarge のインスタンスタイプの起動条件と分量 8

  • m3.xlarge のインスタンスタイプの起動条件と分量 8

  • r3.xlarge のインスタンスタイプの起動条件と分量 8

EC2 フリート は、4 つのインスタンスを起動します (30 を 8 出割ったもの、結果を切り上げ)。lowest-price 戦略では、すべての 4 つのインスタンスはユニットあたりの最低価格を提供するプールから取得されます。diversified 戦略では、フリートは 3 プールごとに 1 つのインスタンスを起動し、そしてこの 3 つのプールのいずれかから取得された 4 つ目のインスタンスがユニットあたりの最低価格を提供することになります。

チュートリアル: EC2 フリート を使ったインスタンスの分量の指定

このチュートリアルでは、サンプル株式会社という名の架空会社で、インスタンス分量指定を使った EC2 フリート リクエストのプロセスを説明します。

目的

製薬会社であるサンプル株式会社は、癌と闘うために使用される可能性のある化合物を選別するために Amazon EC2 の計算処理能力を使用したいと考えています。

計画

サンプル株式会社はまず、「Spot Best Practices」を参照します。次に、サンプル株式会社は EC2 フリート に関する要件を確認します。

インスタンスタイプ

サンプル株式会社には、60 GB 以上のメモリと 8 つの仮想 CPU (vCPU) で最適に実行される、計算能力とメモリに負担がかかるアプリケーションがあります。同社は、できるだけ低価格でアプリケーション用のこれらのリソースを最大化したいと考えています。サンプル株式会社は、以下のいずれかの EC2 インスタンスタイプがそのニーズを満たすと判断します。

インスタンスタイプ メモリ (GiB) vCPU

r3.2xlarge

61

8

r3.4xlarge

122

16

r3.8xlarge

244

32

ユニット単位の目標容量

インスタンスの分量指定を使用すると、ターゲット容量はインスタンスの数 (デフォルト)、またはコア (vCPU)、メモリ (GiB) とストレージ (GB) との要素の組み合わせで表すことができます。アプリケーションのベース (60 GB の RAM と 8 個の vCPU) を 1 ユニットとして考えることで、サンプル株式会社はこの量の 20 倍で十分ニーズに合うと決定します。これにより、会社は EC2 フリート リクエストのターゲット容量を 20 に設定します。

インスタンスの分量

ターゲット容量の決定後、サンプル株式会社はインスタンスの分量を計算します。各インスタンスタイプのインスタンスの分量を計算することは、以下のように、ターゲット容量に達するために必要な各インスタンスタイプのユニットの数を決定することです。

  • r3.2xlarge (61.0 GB、8 個の vCPU) = 1/20 ユニット

  • r3.4xlarge (122.0 GB、16 個の vCPU) = 2/20 ユニット

  • r3.8xlarge (244.0 GB、32 個の vCPU) = 4/20 ユニット

これよりサンプル株式会社は、1、2 と 4 のインスタンス分量を EC2 フリート リクエストのそれぞれの起動設定に割り当てます。

ユニット時間あたりの価格

サンプル株式会社は、料金の出発点としてインスタンス時間あたりの「オンデマンド料金」を使用します。最近のスポット料金または 2 つの組み合わせを使用することもできます。ユニット時間あたりの料金を計算するために、インスタンス時間あたりの出発点の料金を分量で割ります。以下に例を示します。

インスタンスタイプ オンデマンド価格 インスタンスの分量 ユニット時間あたりの価格

r3.2xLarge

$0.7

1

$0.7

r3.4xLarge

$1.4

2

$0.7

r3.8xLarge

$2.8

4

$0.7

サンプル株式会社は、ユニット時間あたりのグローバルな料金として 0.7 USD を使用し、3 つのインスタンスタイプすべてで競争力を高めることもできます。また、r3.8xlarge の起動条件のなかで、1 ユニット時間あたりの全体料金を 0.7 USD、そして 1 ユニット時間あたりの指定入力料金を 0.9 USD とすることもできます。

アクセス許可の確認

EC2 フリート を作成する前に、サンプル株式会社は必要なアクセス許可の IAM ロールがあることを確認します。詳細については、「EC2 フリート の前提条件」を参照してください。

起動テンプレートの作成

次に、Example Corp は起動テンプレートを作成します。起動テンプレート ID は、次のステップで使用されます。詳細については、「起動テンプレートの作成」を参照してください。

EC2 フリート の作成

サンプル株式会社は、その EC2 フリート のために次の設定の config.json ファイルを作成します。次の例では、リソース識別子を独自のリソース識別子に置き換えます。

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-07b3bc7625cdab851", "Version": "1" }, "Overrides": [ { "InstanceType": "r3.2xlarge", "SubnetId": "subnet-482e4972", "WeightedCapacity": 1 }, { "InstanceType": "r3.4xlarge", "SubnetId": "subnet-482e4972", "WeightedCapacity": 2 }, { "InstanceType": "r3.8xlarge", "MaxPrice": "0.90", "SubnetId": "subnet-482e4972", "WeightedCapacity": 4 } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "DefaultTargetCapacityType": "spot" } }

サンプル株式会社は、次の create-fleet コマンドを使用して EC2 フリート を作成します。

aws ec2 create-fleet \ --cli-input-json file://config.json

詳細については、「EC2 フリート の作成」を参照してください。

受理

配分戦略は、スポットインスタンス が取得される スポットインスタンス プールを決定します。

lowest-price 戦略 (デフォルトの戦略) では、受理時にユニットあたりの料金が最低値であるプールから スポットインスタンス が取得されます。20 ユニットの容量を提供するためには、20 の r3.2xlarge インスタンス (20 ÷ 1)、10 の r3.4xlarge インスタンス (20 ÷ 2)、あるいは 5 の r3.8xlarge インスタンス (20 ÷ 4) が EC2 フリート から起動されることになります。

サンプル株式会社が diversified 戦略を採用する場合、スポットインスタンス は 3 つのすべてのプールから取得されます。EC2 フリート は、6 つの r3.2xlarge インスタンス (6 ユニットを提供)、3 つの r3.4xlarge インスタンス (6 ユニットを提供)、そして 2 つの r3.8xlarge インスタンス (8 ユニットを提供) の全部で 20 ユニットを起動します。

チュートリアル: プライマリ容量としてオンデマンドの EC2 フリート を使用する

このチュートリアルでは、ABC Online と呼ばれる架空の会社を使用して、プライマリ容量および使用可能な場合はスポット容量がオンデマンドの EC2 フリート をリクエストするプロセスを説明します。

目的

レストラン配達会社である ABC Online は、EC2 インスタンスタイプおよび購入オプション間で Amazon EC2 容量をプロビジョンし、必要なスケール、パフォーマンス、コストを実現したいと思っています。

プラン

ABC Online には、ピーク期間も機能する固定容量が必要ですが、低価格の容量増加の恩恵を受けたいと思っています。ABC Online は、EC2 フリート について以下の要件を設定します。

  • オンデマンドインスタンス 容量 – ABC Online には、ピーク期間のトラフィックに対応できるように 15 オンデマンドインスタンス が必要です。

  • スポットインスタンス 容量 – ABC Online は、5 スポットインスタンス をプロビジョニングすることで、低価格でパフォーマンスを改善したいと思っています。

アクセス許可の確認

EC2 フリート を作成する前に、ABC Online は必要なアクセス許可の IAM ロールがあることを確認します。詳細については、「EC2 フリート の前提条件」を参照してください。

起動テンプレートの作成

次に、ABC Online によって起動テンプレートが作成されます。起動テンプレート ID は、次のステップで使用されます。詳細については、「起動テンプレートの作成」を参照してください。

EC2 フリート の作成

ABC Online は、その EC2 フリート のために次の設定の config.json ファイルを作成します。次の例では、リソース識別子を独自のリソース識別子に置き換えます。

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-07b3bc7625cdab851", "Version": "2" } } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "OnDemandTargetCapacity":15, "DefaultTargetCapacityType": "spot" } }

ABC Online は、次の create-fleet コマンドを使用して EC2 フリート を作成します。

aws ec2 create-fleet \ --cli-input-json file://config.json

詳細については、「EC2 フリート の作成」を参照してください。

受理

配分戦略により、オンデマンド容量が常に満たされるが、ターゲット容量が容量と可用性がある場合にスポットで満たされることが決定されます。