のインスタンスの重み付け Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling (日本語)

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

のインスタンスの重み付け Amazon EC2 Auto Scaling

構成する場合 Auto Scaling 複数のインスタンス タイプを起動するには、グループの目的の容量に各インスタンスが貢献する容量単位の数を定義するオプションがあります。 インスタンスの重み付け. これにより、アプリケーションのパフォーマンスに直接マップする方法で、各インスタンスタイプの相対的な重みを指定できます。たとえば、特定のアプリケーションのニーズに合わせて、たとえば必要なコア (vCPU) またはメモリ (GiB) に応じて、インスタンスに重みを付けることができます。

たとえば、少なくとも 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 が起動するインスタンスタイプがラージかスモールかにかかわらず、各インスタンスはグループの希望する容量に対してカウントされます。

ただし、インスタンスの重み付けでは、各インスタンスタイプに関連付ける容量の単位数を指定します。たとえば、インスタンスのサイズが異なる場合、 c5.2xlarge インスタンスの重みは2で、 c5.4xlarge (これは2倍大きい)重量は4などになります。次に、Amazon EC2 Auto Scaling によってインスタンスが起動されると、それらの重みが希望する容量に対してカウントされます。

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

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

例: 。インスタンス時間あたりのスポット価格
インスタンスタイプ 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

Considerations

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

  • まず、アプリケーションの実際のパフォーマンス要件を反映するいくつかのインスタンスタイプを選択します。次に、各インスタンスタイプの重みを指定することで、Auto Scaling グループの希望する容量に対してカウントされるインスタンスの量を決定します。重みは、グループ内の現在および今後のインスタンスに適用されます。

  • 選択する重みの範囲が広すぎる場合は注意してください。たとえば、インスタンスタイプの重みに 1 を指定し、次に大きいインスタンスタイプの重みに 200 を指定することはお勧めしません。最小の重みと最大の重みの差が極端にならないようにしてください。インスタンスタイプの重みの差が大きすぎると、進行中のコストパフォーマンスの最適化に悪影響を与える可能性があります。

  • のサイズ Auto Scaling グループは、インスタンスではなく、容量単位で測定されます。たとえば、重みが vCPU に基づいている場合、必要なコアの希望する数、最小数、最大数を指定する必要があります。

  • 重みと希望する容量を設定して、希望する容量が最大容量の少なくとも 2 〜 3 倍になるようにします。

  • Spotの独自の最高価格を設定する場合は、価格を指定する必要があります インスタンス時間ごと 最も高価なインスタンスタイプに十分な高さがあります。 Amazon EC2 Auto Scaling は、可用性ゾーンの現在のスポット価格が最大価格を下回り、容量が利用可能な場合、スポットインスタンスをプロビジョニングします。スポットインスタンスのリクエストに 1 つのスポットインスタンスプールで対応できない場合、スポットインスタンスのコスト削減を活用するために、他のスポットプールで対応が引き続き試みられます。

インスタンスの重み付けに関連して、以下の新しい動作が導入されました。

  • 現在の容量は、希望する容量と同じかそれ以上になります。なぜなら Amazon EC2 Auto Scaling は、目的の容量が完全に満たされるまでインスタンスをプロビジョニングしたいと考えており、超過が発生する場合があります。たとえば、 c5.2xlarge および c5.12xlarge2のインスタンス重みを c5.2xlarge と12は c5.12xlarge。 希望する容量を満たすために5個のユニットが残っている場合、および Amazon EC2 Auto Scaling 規定a c5.12xlarge、希望する容量を7個超過します。

  • いつ Amazon EC2 Auto Scaling は、目的の容量に達するようにインスタンスをプロビジョニングし、可用性ゾーンにインスタンスを分散し、オンデマンド インスタンスとスポット インスタンスの割り当て戦略を尊重することが、超過を回避するよりも優先されます。

  • Amazon EC2 Auto Scaling は、優先される配分戦略を使用して、アベイラビリティーゾーン間のバランスを維持するために、最大容量の制限を超えることがあります。によって強制されるハード リミット Amazon EC2 Auto Scaling は、目的の容量に最大の重量を加えた値です。

既存のグループの重みを付けたり変更したりするときは、以下のことに注意してください。

  • インスタンスの重みを既存の Auto Scaling グループに付けるときは、グループですでに実行されているインスタンスタイプを含める必要があります。

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

  • インスタンスタイプを削除した場合、そのインスタンスタイプの削除後であっても、そのインスタンスタイプの実行中のインスタンスは最後に更新された重み値を保持します。

のウェイトを追加または変更します Auto Scaling グループ

既存の Auto Scaling グループ、または新しい Auto Scaling グループを作成します。既存の Auto Scaling グループを更新して、新しい設定オプション (スポット/オンデマンド使用方法、スポット配分戦略、インスタンスタイプ) を定義することもできます。必要なスポットインスタンスまたはオンデマンドインスタンスの数を変更した場合、Amazon EC2 Auto Scaling は新しい購入オプションに一致するように、既存のインスタンスを段階的に置き換えます。

インスタンスの重み付けを使用して Auto Scaling グループを作成する前に、複数のインスタンスタイプを含むグループの起動を理解しておくことをお勧めします。詳細および追加の例については、「」を参照してください。Auto Scaling 複数のインスタンスタイプと購入オプションを持つグループ.

次の例は、 AWS CLI 作成時にウェイトを追加 Auto Scaling グループ、および既存の Auto Scaling グループ。JSON ファイルでさまざまなパラメータを設定し、その JSON ファイルを Auto Scaling グループの唯一のパラメータとして参照できます。

作成時に Auto Scaling グループに重みを付けるには

  • _を使用 create-auto-scaling-group コマンドを使って新しい Auto Scaling グループ。たとえば、次のコマンドは新しい Auto Scaling グループを作成し、以下を指定してインスタンスに重みを付けます。

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

    • 各アベイラビリティーゾーンのスポットインスタンスの配分戦略 (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": { "OnDemandBaseCapacity": 10, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 160, "MaxSize": 720, "DesiredCapacity": 480, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags": [] }

既存の Auto Scaling グループの重みを付けるまたは変更するには

  • _を使用 update-auto-scaling-group 加重を追加または変更します。たとえば、ここで示すコマンドは、以下を指定して既存の Auto Scaling グループのインスタンスタイプに重みを付けます。

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

    • インスタンスタイプ間の相対的なサイズの違い (vCPU) に対応するインスタンスの重み (、、、)18, 24, 2, 4)

    • 増やす新しい希望する容量 (最大重みよりも大きい)

    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 }

の重量を確認するには Auto Scaling グループ

  • 以下を使用します describe-auto-scaling-groups コマンドで重量を確認します。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    以下に、レスポンスの例を示します。

    { "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0b97f1e282EXAMPLE", "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "m4.16xlarge", "WeightedCapacity": "16" }, { "InstanceType": "m5.24xlarge", "WeightedCapacity": "24" } ] }, "InstancesDistribution": { "OnDemandAllocationStrategy": "prioritized", "OnDemandBaseCapacity": 10, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 160, "MaxSize": 720, "DesiredCapacity": 480, "DefaultCooldown": 300, "AvailabilityZones": [ "us-west-2a", "us-west-2b", "us-west-2c" ], "LoadBalancerNames": [], "TargetGroupARNs": [], "HealthCheckType": "EC2", "HealthCheckGracePeriod": 0, "Instances": [ { "InstanceId": "i-027327f0ace86f499", "InstanceType": "m5.24xlarge", "AvailabilityZone": "us-west-2a", "LifecycleState": "InService", "HealthStatus": "Healthy", "LaunchTemplate": { "LaunchTemplateId": "lt-0b97f1e282EXAMPLE", "LaunchTemplateName": "my-launch-template", "Version": "7" }, "ProtectedFromScaleIn": false, "WeightedCapacity": "24" }, { "InstanceId": "i-0ec0d761cc134878d", "InstanceType": "m4.16xlarge", "AvailabilityZone": "us-west-2a", "LifecycleState": "Pending", "HealthStatus": "Healthy", "LaunchTemplate": { "LaunchTemplateId": "lt-0b97f1e282EXAMPLE", "LaunchTemplateName": "my-launch-template", "Version": "7" }, "ProtectedFromScaleIn": false, "WeightedCapacity": "16" }, ... } ] }