インスタンスの重みを使用するように Auto Scaling グループを設定する - Amazon EC2 Auto Scaling

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

インスタンスの重みを使用するように Auto Scaling グループを設定する

複数のインスタンスタイプを使用する場合、各インスタンスタイプに関連付けるユニット数を指定し、同じ測定単位でグループの容量を指定できます。この容量仕様オプションは、重みと呼ばれます。

たとえば、少なくとも 8 個の vCPU と 15 GiB の RAM で最高のパフォーマンスを発揮する、コンピューティング集約型のアプリケーションを実行するとします。基本単位として c5.2xlarge を使用する場合、以下の EC2 インスタンスタイプのいずれかがアプリケーションのニーズを満たします。

インスタンスタイプの例
インスタンスタイプ vCPU メモリ (GiB)
c5.2xlarge 8 16
c5.4xlarge 16 32
c5.12xlarge 48 96
c5.18xlarge 72 144
c5.24xlarge 96 192

デフォルトでは、すべてのインスタンスタイプは、サイズにかかわらず同じ重みを持ちます。つまり、Amazon EC2 Auto Scaling が起動するインスタンスタイプの規模の大小にかかわらず、各インスタンスは Auto Scaling グループの希望するキャパシティに対して同じようにカウントされます。

ただし、重みでは、各インスタンスタイプに関連付けるユニット数を指定する数値を割り当てます。例えば、インスタンスのサイズが異なる場合、c5.2xlarge インスタンスには 2 の重みを付け、c5.4xlarge (2 倍大きい) インスタンスには 4 の重みを付けます。その後、Amazon EC2 Auto Scaling がグループをスケールするときに、これらの重みは、各インスタンスが希望するキャパシティとしてカウントするユニット数に変換されます。

重みは、Amazon EC2 Auto Scaling が起動するインスタンスタイプを変更しません。代わりに、割り当て戦略がそれを行います。詳細については、「配分戦略」を参照してください。

重要

vCPU の数または各インスタンスタイプのメモリ量を使用して希望するキャパシティを満たすように Auto Scaling グループを設定するには、属性ベースのインスタンスタイプの選択を使用することをお勧めします。DesiredCapacityType パラメータを設定すると、このパラメータに設定した値に基づいて、各インスタンスタイプに関連付けるユニットの数が自動的に指定されます。詳細については、「属性ベースのインスタンスタイプの選択を使用して混合インスタンスグループを作成する」を参照してください。

考慮事項

このセクションでは、重みを効果的に実装するための重要な考慮事項について説明します。

  • アプリケーションのパフォーマンスニーズに合ったインスタンスタイプをいくつか選択します。各インスタンスタイプが、その機能に基づいて Auto Scaling グループの希望するキャパシティーに対してカウントされる重みを決定します。これらの重みは、現在および将来のインスタンスに適用されます。

  • 重みの間の広い範囲は避けてください。例えば、次に大きいインスタンスタイプの重みが 200 の場合、インスタンスタイプに 1 の重みを指定しないでください。最小の重みと最大の重みの差も極端であってはなりません。重みの違いは、コストパフォーマンスの最適化に悪影響を及ぼす可能性があります。

  • グループの希望する容量を、インスタンスではなくユニットで指定します。例えば、vCPU ベースの重みを使用する場合は、必要なコア数と最小値と最大値を設定します。

  • 重みと希望するキャパシティを設定して、希望するキャパシティが最も大きい重みの少なくとも 2〜3 倍になるようにします。

既存のグループを更新する際には、次の点に注意してください。

  • 既存のグループに重みを追加するときは、現在使用されているすべてのインスタンスタイプの重みを含めます。

  • 重みを追加または変更すると、Amazon EC2 Auto Scaling は新しい重み値に基づいて希望する容量に達するようにインスタンスを起動または終了します。

  • インスタンスタイプを削除した場合、そのタイプの実行中のインスタンスは、定義されなくなった場合でも、最後の重みを維持します。

インスタンスの重みの動作

インスタンスの重みを使用すると、Amazon EC2 Auto Scaling は次のように動作します。

  • 現在のキャパシティーは、希望するキャパシティーと同じかそれ以上になります。現在のキャパシティは、起動されたインスタンスが残りの希望するキャパシティユニットを超えると、希望するキャパシティを超える可能性があります。例えば、2 つのインスタンスタイプ c5.2xlargec5.12xlarge を指定し、c5.2xlarge にインスタンスの重み 2 を割り当て、c5.12xlarge にインスタンスの重み 12 を割り当てるとします。希望するキャパシティを満たすためのキャパシティが 5 ユニット分残っており、Amazon EC2 Auto Scaling が c5.12xlarge をプロビジョニングする場合、希望するキャパシティは 7 ユニット分超過します。

  • インスタンスを起動する場合、Amazon EC2 Auto Scaling は、アベイラビリティーゾーン間での容量の分散と、希望する容量を超える割り当て戦略の尊重を優先します。

  • Amazon EC2 Auto Scaling は、任意の配分戦略を使用して、アベイラビリティーゾーン間のバランスを維持するために、最大容量制限を超えることがあります。Amazon EC2 Auto Scaling によって適用されるハード制限は、希望する容量と最大の重みです。

重みを使用するように Auto Scaling グループを設定する

次の AWS CLI の例に示すように、重みを使用するように Auto Scaling グループを設定できます。コンソールを使用する手順については、「インスタンスタイプを手動で選択して混合インスタンスグループを作成する」を参照してください。

重みを使用するように新しい Auto Scaling グループを設定するには (AWS CLI)

create-auto-scaling-groupコマンドを実行します。例えば、次のコマンドは新しい Auto Scaling グループを作成し、次を指定して重みを割り当てます。

  • オンデマンドインスタンスとして起動するグループの割合 (0)

  • 各アベイラビリティーゾーンのスポットインスタンスの配分戦略 (capacity-optimized)

  • 優先度に従って起動するインスタンスタイプ (m4.16xlargem5.24xlarge)

  • インスタンスタイプ間の相対的なサイズの違い (vCPU) に対応するインスタンスの重み (1624)

  • インスタンスを起動するサブネット (subnet-5ea0c127subnet-6194ea3bsubnet-c934b782)。それぞれ異なるアベイラビリティーゾーンに対応

  • 起動テンプレート (my-launch-template) とそのバージョン ($Latest)

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

config.json ファイルには次のコンテンツが含まれます。

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "m4.16xlarge", "WeightedCapacity": "16" }, { "InstanceType": "m5.24xlarge", "WeightedCapacity": "24" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 160, "MaxSize": 720, "DesiredCapacity": 480, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags": [] }
重みを使用するように既存の Auto Scaling グループを設定するには (AWS CLI)

update-auto-scaling-groupコマンドを実行します。例えば、ここで示すコマンドは、次を指定して既存の Auto Scaling グループのインスタンスタイプに重みを割り当てます。

  • 優先度に従って起動するインスタンスタイプ (c5.18xlargec5.24xlargec5.2xlargec5.4xlarge)

  • インスタンスタイプ間の相対的なサイズの違い (vCPU) に対応するインスタンスの重み (182424)

  • 増やす新しい希望するキャパシティー (最大重みよりも大きい)

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

config.json ファイルには次のコンテンツが含まれます。

{ "AutoScalingGroupName": "my-existing-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "Overrides": [ { "InstanceType": "c5.18xlarge", "WeightedCapacity": "18" }, { "InstanceType": "c5.24xlarge", "WeightedCapacity": "24" }, { "InstanceType": "c5.2xlarge", "WeightedCapacity": "2" }, { "InstanceType": "c5.4xlarge", "WeightedCapacity": "4" } ] } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 100 }
コマンドラインを使用して重みを検証するには

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

ユニット時間あたりのスポット料金の例

次の表では、米国東部 (バージニア北部) の異なるアベイラビリティーゾーンでのスポットインスタンスの時間単位の使用料金と、同じリージョンでのオンデマンドインスタンスの使用料金を比較しています。ここで示している料金は例であり、現在の料金ではありません。これらはインスタンス時間単位のコストです。

例: インスタンス時間単位のスポット料金
インスタンスタイプ us-east-1a us-east-1b us-east-1c オンデマンド料金
c5.2xlarge 0.180 USD 0.191 USD 0.170 USD 0.34 USD
c5.4xlarge 0.341 USD 0.361 USD 0.318 USD 0.68 USD
c5.12xlarge 0.779 USD 0.777 USD 0.777 USD 2.04 USD
c5.18xlarge 1.207 USD 1.475 USD 1.357 USD 3.06 USD
c5.24xlarge 1.555 USD 1.555 USD 1.555 USD 4.08 USD

インスタンスの重みにより、ユニット時間あたりの使用料金に基づいてコストを評価できます。時間単位の使用料金はインスタンスタイプの料金をその単位となる時間数で割って決定できます。オンデマンドインスタンスの場合、時間単位の使用料金は、1 つのインスタンスタイプをデプロイするときと、異なるサイズの同じインスタンスタイプをデプロイするときで同じです。一方、時間単位のスポット料金はスポットプールによって異なります。

次の例は、ユニット時間あたりのスポット料金の計算がインスタンスの重みでどのように機能するかを示しています。計算が容易になるように、スポットインスタンスを us-east-1a でのみ起動するとします。ユニット時間あたりの料金を次の表に示します。

例: 時間単位のスポット料金
インスタンスタイプ us-east-1a インスタンスの重み ユニット時間あたりの価格
c5.2xlarge 0.180 USD 2 0.090 USD
c5.4xlarge 0.341 USD 4 0.085 USD
c5.12xlarge 0.779 USD 12 0.065 USD
c5.18xlarge 1.207 USD 18 0.067 USD
c5.24xlarge 1.555 USD 24 0.065 USD