オンデマンドインスタンスとスポットインスタンスを管理する - AWS Elastic Beanstalk

オンデマンドインスタンスとスポットインスタンスを管理する

1 つの Auto Scaling グループ内で、オンデマンドインスタンスとスポットインスタンスのフリートを起動してオートスケールできます。以下のオプションを並行して使用して、Auto Scaling サービスが環境内のスポットインスタンスとオンデマンドインスタンスを管理する方法を設定できます。

Elastic Beanstalk コンソール名前空間設定オプションAWS CLI、または EB CLI を使用して、環境のこれらのオプションを設定できます。

これらのオプションは、aws:ec2:instances 名前空間の一部です。

  • EnableSpottrue に設定すると、この設定により環境のスポットインスタンスリクエストが有効になります。

  • SpotFleetOnDemandBase ‐ 環境のスケールアップ時にスポットインスタンスを考慮する前に、Auto Scaling グループがプロビジョニングするオンデマンドインスタンスの最小数を設定します。

  • SpotFleetOnDemandAboveBasePercentage ‐ Auto Scaling グループが SpotOnDemandBase インスタンスを超えてプロビジョニングする追加容量の一部としてのオンデマンドインスタンスの割合。

前に一覧表示されたオプションは、aws:autoscaling:asg 名前空間の以下のオプションと相関しています。

  • MinSize ‐ Auto Scaling グループで使用するインスタンスの最小数。

  • MaxSize ‐ Auto Scaling グループで使用するインスタンスの最大数。

重要

EnableSpot オプション設定により、Elastic Beanstalk は起動設定から起動テンプレートに既存の環境を移行することができます。これを行うには、起動テンプレートを管理するために必要なアクセス許可が必要です。これらのアクセス許可は、マネージドポリシーに含まれています。マネージドポリシーの代わりにカスタムポリシーを使用した場合、環境設定を更新すると、環境の作成または更新が失敗する可能性があります。詳細情報と重要な考慮事項については、「Elastic Beanstalk 環境を起動テンプレートに移行する 」を参照してください。

両方の名前空間オプションのセットを適用する

以下のポイントは、これらのオプション設定の組み合わせが環境のスケーリングにどのように影響するかを示しています。

  • MinSize のみが、環境の初期容量 (最小で実行するインスタンスの数) を決定します。

  • SpotFleetOnDemandBase は初期容量には影響しません。スポットが有効である場合、このオプションは任意のスポットインスタンスが考慮される前に、プロビジョニングされるオンデマンドインスタンス数を決定します。

  • SpotFleetOnDemandBaseMinSize よりも小さい場合を考慮します。それでも、初期容量どおりの MinSize インスタンスが得られます。そのうち少なくとも SpotFleetOnDemandBase はオンデマンドインスタンスである必要があります。

  • SpotFleetOnDemandBaseMinSize よりも大きい場合を考慮します。環境のスケールアウト時には、2 つの値の差に等しい数のインスタンスが追加されることが保証されます。つまり、SpotFleetOnDemandBase 要件を満たす前に、少なくともオンデマンドである追加の (SpotFleetOnDemandBase - MinSize) インスタンスを取得することが保証されています。

単一インスタンス環境

本稼働環境では、スポットインスタンスは、スケーラブルな負荷分散された環境の一部として特に便利です。単一インスタンス環境でスポットを使用することはお勧めしません。スポットインスタンスが使用できない場合、環境の容量全体(単一インスタンス)が失われる可能性があります。開発またはテストを目的として、単一インスタンス環境でのスポットインスタンスの使用を希望する場合があるとします。その場合は、SpotFleetOnDemandBaseSpotFleetOnDemandAboveBasePercentage の両方を必ずゼロに設定してください。その他の設定を行うと、オンデマンドインスタンスになります。

スケーリングオプション設定の例

次の例は、幅広いスケーリングオプションを設定するさまざまなシナリオを示しています。すべての例において、スポットインスタンスリクエストを有効にした負荷分散環境が想定されています。

例 1: 初期容量の一部としてのオンデマンドとスポット
オプション設定
オプション Namespace

MinSize

aws:autoscaling:asg

10

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

この例では、環境は 10 個のインスタンスから始まります。そのうちの 7 個はオンデマンド(4 つのベース、上記 6 つのベースの 50%)で、3 個はスポットです。環境はインスタンスを最大 24 個にスケールアウトできます。スケールアウトすると、4 つのベースオンデマンドインスタンスの上にあるフリートの部分のオンデマンド部分は 50% に保たれ、全体では最大 24 のインスタンスが維持されます。そのうちの 14 はオンデマンド(4 つのベース、上記 20 のうち 50%)、10 はスポットです。

例 2: すべてのオンデマンドの初期容量
オプション設定
オプション Namespace

MinSize

aws:autoscaling:asg

4

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

この例では、環境は 4 つのインスタンスから始まり、そのすべてがオンデマンドです。環境はインスタンスを最大 24 個にスケールアウトできます。スケールアウトすると、4 つのベースオンデマンドインスタンスの上にあるフリートの部分のオンデマンド部分は 50% に保たれ、全体では最大 24 のインスタンスが維持されます。そのうちの 14 はオンデマンド(4 つのベース、上記 20 のうち 50%)、10 はスポットです。

例 3: 初期容量を超える追加のオンデマンドベース
オプション設定
オプション Namespace

MinSize

aws:autoscaling:asg

3

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

この例では、環境は 3 つのインスタンスから始まり、そのすべてがオンデマンドです。環境はインスタンスを最大 24 個にスケールアウトできます。初期の 3 つ上の最初の追加インスタンスはオンデマンドで、4 つのベースオンデマンドインスタンスを完成させます。さらにスケールアウトすると、4 つのベースオンデマンドインスタンスの上にあるフリートの部分のオンデマンド部分は 50% に保たれ、全体では最大 24 のインスタンスが維持されます。そのうちの 14 はオンデマンド(4 つのベース、上記 20 のうち 50%)、10 はスポットです。