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

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

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

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

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

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

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

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

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

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

属性ベースのインスタンスタイプの選択では、特定のインスタンスタイプのリストの代わりに、以下のようなインスタンスに必要なインスタンス属性のリストが提供されます。

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

  • メモリ – インスタンスあたりのメモリの最小および最大 GiB。

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

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

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

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

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

あるいは、希望するキャパシティの値を vCPU の数またはメモリ量に設定することもできます。そのためには、 の Desired capacity type ドロップダウンフィールド、 AWS Management Console または CreateAutoScalingGroupまたは UpdateAutoScalingGroup API オペレーションの DesiredCapacityTypeプロパティを使用します。その後 Amazon EC2 Auto Scaling により、希望する vCPU またはメモリ容量を満たすのに必要な数のインスタンスが起動されます。例えば、希望する容量タイプとして vCPU を使用し、それぞれ 2 つの vCPU を持つインスタンスを使用する場合、10 個の vCPU 容量で 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) を vCPU またはメモリ GiB に設定した場合、料金の保護は、インスタンスごとの料金ではなく、vCPU あたりまたはメモリあたりの料金に基づいて適用されます。

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

注記

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

パフォーマンス保護

パフォーマンス保護は、Auto Scaling グループが、指定されたパフォーマンスベースラインと類似またはそれ以上のインスタンスタイプを使用するようにする機能です。パフォーマンス保護を使用するには、ベースラインリファレンスとしてインスタンスファミリーを指定します。指定されたインスタンスファミリーの機能は、許容される最低レベルのパフォーマンスを確立します。Auto Scaling がインスタンスタイプを選択するときは、指定した属性とパフォーマンスベースラインが考慮されます。パフォーマンスベースラインを下回るインスタンスタイプは、他の指定された属性と一致しても、自動的に選択から除外されます。選択したすべてのインスタンスタイプが、指定されたインスタンスファミリーによって確立されたベースラインと同等以上のパフォーマンスを提供できるようにします。Auto Scaling はこのベースラインを使用してインスタンスタイプの選択をガイドしますが、選択したインスタンスタイプがすべてのアプリケーションのベースラインを常に超える保証はありません。

現在、この機能はベースラインパフォーマンス係数として CPU パフォーマンスのみをサポートしています。指定されたインスタンスファミリーの CPU パフォーマンスはパフォーマンスベースラインとして機能し、選択したインスタンスタイプがこのベースラインと類似しているか、それを超えていることを確認します。同じ CPU プロセッサを持つインスタンスファミリーは、ネットワークまたはディスクのパフォーマンスが異なっても、同じフィルタリング結果になります。例えば、ベースラインリファレンスとして c6in または c6i を指定すると、両方のインスタンスファミリーが同じ CPU プロセッサを使用するため、パフォーマンスベースのフィルタリング結果が同じになります。

サポートされていないインスタンスファミリー

次のインスタンスファミリーはパフォーマンス保護でサポートされていません。

  • c1

  • g3 | g3s

  • hpc7g

  • m1 | m2

  • mac1 | mac2 | mac2-m1ultra | mac2-m2 | mac2-m2pro

  • p3dn | p4d | p5

  • t1

  • u-12tb1 | u-18tb1 | u-24tb1 | u-3tb1 | u-6tb1 | u-9tb1 | u7i-12tb | u7in-16tb | u7in-24tb | u7in-32tb

サポートされているインスタンスファミリーを指定してパフォーマンス保護を有効にした場合、返されるインスタンスタイプは上記のサポートされていないインスタンスファミリーを除外します。

例: CPU パフォーマンスベースラインの設定

次の例では、インスタンス要件は、c6i インスタンスファミリーと同等のパフォーマンスの CPU コアを持つインスタンスタイプで起動することです。性能が下回る CPU プロセッサーが指定した他のインスタンス要件 (vCPU 数など) を満たしても、その CPU プロセッサーを持つインスタンスタイプを除外します。例えば、指定したインスタンス属性に 4 つの vCPUs および 16 GB のメモリが含まれている場合、これらの属性を持っても c6i より CPU パフォーマンスが低いインスタンスタイプは選択から除外されます。

"BaselinePerformanceFactors": { "Cpu": { "References": [ { "InstanceFamily": "c6i" } ] }
考慮事項

パフォーマンス保護を使用する場合は、次の点を考慮してください。

  • インスタンスタイプまたはインスタンス属性のいずれかを指定できますが、両方を同時に指定することはできません。

  • リクエスト設定では、最大 4 つの InstanceRequirements 構造を指定できます。

前提条件

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

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

ほとんどの汎用的なワークロードでは、必要な 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)

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

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

設定例

AWS CLIを使用して、属性ベースのインスタンスタイプを選択した Auto Scaling グループを作成するには、次の 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] (一致するインスタンスタイプのプレビュー) セクションに、インスタンスタイプのプレビューが表示されます。

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

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

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