属性ベースのインスタンスタイプの選択を使用して混合インスタンスグループを作成する - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

属性ベースのインスタンスタイプの選択を使用して混合インスタンスグループを作成する

混合インスタンスグループのインスタンスタイプを手動で選択する代わりに、コンピューティング要件を記述するインスタンス属性のセットを指定できます。Amazon EC2 Auto Scaling がインスタンスを起動するとき、Auto Scaling グループで使用されるインスタンスタイプは、必要なインスタンス属性と一致している必要があります。これは属性ベースのインスタンスタイプの選択と呼ばれます。

このアプローチは、コンテナやビッグデータ、CI/CD など、柔軟にインスタンスタイプを使用するワークロードとフレームワークに最適です。

属性ベースのインスタンスタイプを選択すると、次の利点があります。

  • スポットインスタンスの最適な柔軟性 — Amazon EC2 Auto Scaling は、スポットインスタンスを起動するために幅広いインスタンスタイプから選択できます。これは、インスタンスタイプに対して柔軟であるという、スポットのベストプラクティスを満たしています。これにより、Amazon EC2 スポットサービスが必要なコンピューティング性能を見つけ、割り当てられる機会に恵まれます。

  • 適切なインスタンスタイプを簡単に使用 - 利用可能なインスタンスタイプの数が多いため、ワークロードに適したインスタンスタイプを見つけるには時間がかかることがあります。インスタンス属性を指定すると、インスタンスタイプにはワークロードに必要な属性が自動的に設定されます。

  • 新しいインスタンスタイプの自動使用 – Auto Scaling グループは、リリース時に新しい世代のインスタンスタイプを使用できます。要件に一致し、かつ Auto Scaling グループのために選択した割り当て戦略にマッチする場合には、新しい世代のインスタンスタイプが自動的に使用されます。

属性ベースのインスタンスタイプ選択の仕組み

属性ベースのインスタンスタイプを選択すると、特定のインスタンスタイプのリストを提供する代わりに、インスタンスに必要なインスタンス属性のリストを指定します。次に例を示します。

  • vCPU 数 – インスタンスあたりの vCPU の最小数と最大数。

  • Memory – インスタンスあたりのメモリ GiBs の最小値と最大値。

  • ローカルストレージ – EBS ボリュームとインスタンスストアボリュームのどちらをローカルストレージに使用するか。

  • バースト可能なパフォーマンス – T4g、T3a、T3、および T2 タイプを含む T インスタンスファミリーを使用するかどうか。

インスタンスの要件を定義するには、多くのオプションがあります。各オプションの説明とデフォルト値については、「Amazon EC2 Auto Scaling API リファレンスInstanceRequirements」の「」を参照してください。

Auto Scaling グループがインスタンスを起動する必要がある場合、指定した属性に一致し、そのアベイラビリティーゾーンで使用可能なインスタンスタイプを検索します。次に、配分戦略によって、どの一致するインスタンスタイプを起動するかが決まります。デフォルトでは、属性ベースのインスタンスタイプの選択では料金保護機能が有効になっているため、Auto Scaling グループは予算のしきい値を超えるインスタンスタイプを起動できません。

デフォルトでは、Auto Scaling グループの希望する容量を設定するときに、インスタンス数を測定単位として使用します。つまり、各インスタンスは 1 単位としてカウントされます。

あるいは、希望するキャパシティの値を vCPU の数またはメモリ量に設定することもできます。そのためには、 の希望する容量タイプのドロップダウンフィールド、 AWS Management Console または CreateAutoScalingGroupまたは UpdateAutoScalingGroup API オペレーションの DesiredCapacityTypeプロパティを使用します。Amazon EC2 Auto Scaling は、必要な vCPU またはメモリ容量を満たすために必要なインスタンスの数を起動します。例えば、希望するキャパシティータイプとして vCPUsを使用し、それぞれ 2 つの vCPUs を持つインスタンスを使用する場合、希望するキャパシティー 10 個の vCPUs 5 つのインスタンスが起動されます。これは、インスタンスの重みに代わる便利な方法です。

料金保護

料金保護を使用すると、Auto Scaling グループによって起動された EC2 インスタンスに対して支払う上限価格を指定できます。料金保護は、Auto Scaling グループが、指定した属性に適合した場合でも、高すぎると思われるインスタンスタイプを使用できないようにする機能です。

料金保護はデフォルトで有効になっており、オンデマンドインスタンスとスポットインスタンスの料金しきい値は別々に設定されています。Amazon EC2 Auto Scaling が新しいインスタンスを起動する必要がある場合、関連するしきい値を超える料金のインスタンスタイプは起動されません。

オンデマンド料金保護

オンデマンドインスタンスでは、指定したオンデマンド料金よりも高いパーセンテージで支払うことができる最大オンデマンド料金を定義します。特定されたオンデマンド料金は、指定した属性を持つ最低価格の現行世代の C、M、または R インスタンスタイプの料金です。

オンデマンド料金保護値が明示的に定義されていない場合は、既定の最大オンデマンド料金が、特定されたオンデマンド料金より 20% 高くなる。

スポット料金保護

デフォルトでは、Amazon EC2 Auto Scaling は最適なスポットインスタンス料金保護を自動的に適用し、幅広いインスタンスタイプから一貫して選択します。料金保護を手動で設定することもできます。ただし、Amazon EC2 Auto Scaling に許可することで、スポットキャパシティーが満たされる可能性を高めることができます。

料金保護は、次のいずれかのオプションを使用して手動で指定できます。料金保護を手動で設定する場合は、最初のオプションを使用することをお勧めします。

  • 特定されたオンデマンド料金の割合 – 特定されたオンデマンド料金は、指定した属性を持つ最低の現行世代の C、M、または R インスタンスタイプの料金です。

  • 識別されたスポット料金よりも高いパーセンテージ — 識別されたスポット料金は、指定した属性を持つ最低の現行世代の C、M、または R インスタンスタイプの料金です。スポット料金が変動する可能性があるため、このオプションの使用はお勧めしません。したがって、料金保護のしきい値も変動する可能性があります。

料金保護のカスタマイズ

料金保護のしきい値は、Amazon EC2 Auto Scaling コンソール、または AWS CLI または SDKsを使用してカスタマイズできます。

  • コンソールで、追加のインスタンス属性 のオンデマンド料金保護スポット料金保護の設定を使用します。

  • InstanceRequirements 構造で、オンデマンドインスタンスの料金保護のしきい値を指定するには、 OnDemandMaxPricePercentageOverLowestPriceプロパティを使用します。スポットインスタンスの料金保護のしきい値を指定するには、 MaxSpotPriceAsPercentageOfOptimalOnDemandPriceまたは SpotMaxPricePercentageOverLowestPriceプロパティを使用します。

希望するキャパシティータイプ (DesiredCapacityType) を vCPUs または Memory GiB に設定すると、料金保護は、インスタンスあたりの料金ではなく、vCPU ごとまたはメモリあたりの料金に基づいて適用されます。

料金保護をオフにすることもできます。料金保護のしきい値を指定しない場合は、999999 などの高いパーセンテージ値を指定します。

注記

指定した属性に一致する現行世代の C、M、または R インスタンスタイプがない場合でも、料金保護は適用されます。一致するインスタンスが見つからない場合、識別される料金は、属性に一致する最低価格の現行世代のインスタンスタイプからのものか、最低価格の前世代のインスタンスタイプである失敗したものになります。

前提条件

属性ベースのインスタンスタイプを選択して混合インスタンスグループを作成する (コンソール)

属性ベースのインスタンスタイプの選択を使用して混合インスタンスグループを作成するには、次の手順を実行します。ステップを効率的に進めるために、いくつかのオプションのセクションは省略されています。

ほとんどの汎用的なワークロードでは、必要な vCPU とメモリの数を指定すれば十分です。高度なユースケースでは、ストレージのタイプ、ネットワークインターフェイス、CPU の製造元、アクセラレーターのタイプなどの属性を指定できます。

混合インスタンスグループのベストプラクティスを確認するには、「」を参照してください設定の概要

混合インスタンスグループを作成するには
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. 画面の上部のナビゲーションバーで、起動テンプレートを作成したときに使用したのと同じ AWS リージョン を選択します。

  3. [Auto Scaling グループの作成] を選択します。

  4. [起動テンプレートまたは起動設定を選択する] ページで [Auto Scaling グループ名] にAuto Scaling グループの名前を入力します。

  5. 起動テンプレートを選択するには、以下の手順を実行します。

    1. [起動テンプレート] で、既存の起動テンプレートを選択します。

    2. [起動テンプレートのバージョン] で、スケールアウト時に Auto Scaling グループで使用する起動テンプレートのバージョン (デフォルト、最新、または特定のバージョン) を選択します。

    3. 起動テンプレートが、使用する予定のすべてのオプションをサポートしていることを確認し、[次へ] を選択します。

  6. [インスタンス起動オプションを選択] ページで、次を実行します。

    1. [Instance type requirements] (インスタンスタイプの要件) で、[Override launch template] (起動テンプレートを上書きする) を選択します。

      注記

      vCPU やメモリなどのインスタンス属性のセットが既に含まれている起動テンプレートを選択した場合は、インスタンス属性が表示されます。これらの属性は Auto Scaling グループのプロパティに追加され、Amazon EC2 Auto Scaling コンソールからいつでも更新できます。

    2. [Specify instance attributes] (インスタンスの属性を指定する) で、まず vCPU とメモリの要件を入力します。

      • [vCPUs] に、希望する vCPU の最小数と最大数を入力します。制限なしを指定するには、[No minimum] (最小値なし)、[No maximum] (最大値なし)、または両方を選択します。

      • [Memory (GiB)] (メモリ (GiB)) に、希望するメモリの最小値と最大値を入力します。制限なしを指定するには、[No minimum] (最小値なし)、[No maximum] (最大値なし)、または両方を選択します。

    3. (オプション) [Additional instance attributes] (その他のインスタンス属性) では、オプションで 1 つ以上の属性を指定して、コンピューティング要件をより詳細に表現できます。追加の属性は、リクエストにさらに制約を追加します。

    4. プレビューマッチングインスタンスタイプを展開して、指定した属性を持つインスタンスタイプを表示します。

    5. [インスタンスの購入オプション][インスタンスの分散] で、オンデマンドインスタンスとスポットインスタンスとして起動するグループの割合をそれぞれ指定します。アプリケーションが、ステートレスでフォールトトレラントであり、中断されるインスタンスを扱える場合は、より高い割合のスポットインスタンスを指定できます。

    6. (オプション) スポットインスタンスの割合を指定するときは、[オンデマンドベースキャパシティを含める] を選択してから、オンデマンドインスタンスによって満たされる必要がある Auto Scaling グループの最小初期キャパシティを指定します。ベースキャパシティーを超える場合は、[Instances distribution] (インスタンスの分散) 設定を使用して、起動するオンデマンドインスタンスとスポットインスタンスの数を決定します。

    7. [Allocation strategies] (配分戦略) の[Lowest price] (最低価格) は、[On-Demand allocation strategy] (オンデマンドの配分戦略) によって自動的に選択され、変更できません。

    8. [Spot allocation strategy] (スポット配分戦略) で、配分戦略を選択します。デフォルトでは、[Price capacity optimized] (価格のキャパシティの最適化) が選択されています。[Lowest price] (最低価格) はデフォルトでは非表示になっており、[Show all strategies] (すべての戦略を表示) を選択した場合にのみ表示されます。[最低料金] を選択した場合は、[最低料金のプール] に、分散する最低料金のプールの数を入力します。

    9. [容量の再分散] で、容量の再分散を有効にするか無効にするかを選択します。キャパシティの再調整を使用すると、スポットインスタンスがスポットの中断によって終了に近づいたときに自動的に応答します。詳細については、「キャパシティの再調整を使用して Amazon EC2 スポットの中断に対処する」を参照してください。

    10. [Network] (ネットワーク) の下にある [VPC] で、VPC を選択します。Auto Scaling グループは、起動テンプレートで指定したセキュリティグループと、同じ VPC 内に作成する必要があります。

    11. [Availability Zones and subnets] (アベイラビリティーゾーンとサブネット) で、指定した VPC 内のサブネットを 1 つ以上選択します。複数のアベイラビリティーゾーンのサブネットを使用することで、高可用性を得られます。詳細については、「VPC サブネットを選択する場合の考慮事項」を参照してください。

    12. [次へ][次へ] を選択します。

  7. [Configure group size and scaling policies] (グループサイズとスケーリングポリシーを設定する) ステップでは、以下の手順を実行します。

    1. 希望するキャパシティーをインスタンス以外の単位で測定するには、グループサイズ 希望するキャパシティータイプ に適切なオプションを選択します。[Units] (ユニット)、[vCPUs]、および [Memory GiB] (メモリ GiB) がサポートされています。デフォルトで、Amazon EC2 Auto Scaling は [Units] (ユニット) を指定します。これはインスタンスの数になります。

    2. 希望するキャパシティー の場合、Auto Scaling グループの初期サイズ。

    3. スケーリングセクションのスケーリング制限 で、希望する容量の新しい値が希望する最小容量希望する最大容量 より大きい場合、希望する最大容量は新しい希望する容量値に自動的に増加します。これらの制限は必要に応じて変更できます。詳細については、「Auto Scaling グループのスケーリング制限を設定する」を参照してください。

  8. [Skip to review] を選択します。

  9. [Review (レビュー)]ページで、[Create Auto Scaling group (Auto Scaling グループを作成)] を選択します。

属性ベースのインスタンスタイプを選択して混合インスタンスグループを作成する (AWS CLI)

コマンドラインを使用して混合インスタンスグループを作成するには

以下のいずれかのコマンドを使用します。

設定例

を使用して、属性ベースのインスタンスタイプを選択した Auto Scaling グループを作成するには AWS CLI、次のcreate-auto-scaling-groupコマンドを使用します。

次のインスタンス属性が指定されています。

  • VCpuCount — インスタンスタイプには、4 個以上、最大 8 個の vCPU が必要です。

  • MemoryMiB – インスタンスタイプには最低 16,384 MiB のメモリが必要です。

  • CpuManufacturers — インスタンスタイプには、インテル製の CPU が必要です。

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

次は、config.json ファイルの例です。

{ "AutoScalingGroupName": "my-asg", "DesiredCapacityType": "units", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": {"Min": 4, "Max": 8}, "MemoryMiB": {"Min": 16384}, "CpuManufacturers": ["intel"] } }] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "price-capacity-optimized" } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 4, "DesiredCapacityType": "units", "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

vCPU の数またはメモリーの総量として、希望するキャパシティー値を設定するには、ファイルで "DesiredCapacityType": "vcpu" または "DesiredCapacityType": "memory-mib" を指定します。希望するキャパシティータイプのデフォルトは units で、これはインスタンスの数を、希望するキャパシティー値として設定します。

または、次のcreate-auto-scaling-groupコマンドを使用して Auto Scaling グループを作成することもできます。これは、Auto Scaling グループの唯一のパラメータとして YAML ファイルを参照します。

aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

次は、config.yaml ファイルの例です。

--- AutoScalingGroupName: my-asg DesiredCapacityType: units MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceRequirements: VCpuCount: Min: 2 Max: 4 MemoryMiB: Min: 2048 CpuManufacturers: - intel InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 50 SpotAllocationStrategy: price-capacity-optimized MinSize: 0 MaxSize: 100 DesiredCapacity: 4 DesiredCapacityType: units VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

vCPU の数またはメモリーの総量として、希望するキャパシティー値を設定するには、ファイルで DesiredCapacityType: vcpu または DesiredCapacityType: memory-mib を指定します。希望するキャパシティータイプのデフォルトは units で、これはインスタンスの数を、希望するキャパシティー値として設定します。

インスタンスタイプをプレビューする

インスタンスを起動することなくコンピューティング要件に一致するインスタンスタイプをプレビューでき、必要に応じて要件を調整できます。Amazon EC2 Auto Scaling コンソールで Auto Scaling グループを作成すると、[Choose instance launch options] (インスタンス起動オプションを選択) ページの [Preview matching instance types] (一致するインスタンスタイプのプレビュー) セクションに、インスタンスタイプのプレビューが表示されます。

または SDK を使用して Amazon EC2 GetInstanceTypesFromInstanceRequirements API コールを実行することで、インスタンスタイプ AWS CLI をプレビューすることもできます。Auto Scaling グループの作成または更新のリクエストの中で、正しい形式で InstanceRequirements パラメーターを渡します。詳細については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「指定された属性でインスタンスタイプをプレビューする」を参照してください。

属性ベースのインスタンスタイプの選択の詳細については、 AWS ブログの「EC2 Auto Scaling と EC2 フリートの属性ベースのインスタンスタイプの選択」を参照してください。

AWS CloudFormationを使用して Auto Scaling グループを作成する際に、属性ベースのインスタンスタイプの選択を宣言できます。詳細については、「AWS CloudFormation ユーザーガイド」の「Auto Scaling テンプレートスニペット」セクションのサンプルスニペットを参照してください。