設定の概要 - Amazon EC2 Auto Scaling

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

設定の概要

このトピックでは、混合インスタンスグループを作成するための概要とベストプラクティスについて説明します。

概要

混合インスタンスグループを作成するには、次の 2 つのオプションがあります。

Manual selection

次のステップでは、インスタンスタイプを手動で選択して混合インスタンスグループを作成する方法を説明します。

  1. EC2 インスタンスを起動するためのパラメータを含む起動テンプレートを選択します。起動テンプレートのパラメータはオプションですが、Amazon マシンイメージ (AMI) ID が起動テンプレートにない場合、Amazon EC2 Auto Scaling はインスタンスを起動できません。

  2. 起動テンプレートをオーバーライドするオプションを選択します。

  3. ワークロードに合ったインスタンスタイプを手動で選択します。

  4. 起動するオンデマンドインスタンスとスポットインスタンスの割合を指定します。

  5. Amazon EC2 Auto Scaling が可能なインスタンスタイプからオンデマンドとスポットのキャパシティーを満たす方法を決定する割り当て戦略を選択します。

  6. インスタンスを起動するアベイラビリティーゾーンと VPC サブネットを選択します。

  7. グループの初期サイズ (希望するキャパシティ) と、グループの最小サイズおよび最大サイズを指定します。

オーバーライドは、起動テンプレートで宣言されたインスタンスタイプをオーバーライドし、Auto Scaling グループ独自のリソース定義に埋め込まれている複数のインスタンスタイプを使用するために必要です。利用可能なインスタンスタイプの詳細については、[Linux インスタンス用の Amazon EC2 ユーザーガイド] の [インスタンスタイプ] を参照してください。

インスタンスタイプごとに次のオプションパラメータを設定することもできます。

  • LaunchTemplateSpecification – 必要に応じて、インスタンスタイプに別の起動テンプレートを割り当てることができます。このオプションは現在、コンソールからは利用できません。詳細については、「インスタンスタイプに異なる起動テンプレートを使用する」を参照してください。

  • WeightedCapacity – グループ内の残りのインスタンスと比較して、必要な容量に対してインスタンスがどれだけカウントされるかを決定します。1 つのインスタンスタイプに WeightedCapacity の値を指定する場合は、すべてのインスタンスタイプに WeightedCapacity の値を指定する必要があります。デフォルトでは、各インスタンスは希望するキャパシティに対して 1 個としてカウントされます。詳細については、「インスタンスの重みを使用するように Auto Scaling グループを設定する」を参照してください。

Attribute-based selection

Amazon EC2 Auto Scaling が特定のインスタンス属性に基づいてインスタンスタイプを自動的に選択できるようにするには、次のステップに従って、コンピューティング要件を指定することによって混合インスタンスグループを作成します。

  1. EC2 インスタンスを起動するためのパラメータを含む起動テンプレートを選択します。起動テンプレートのパラメータはオプションですが、Amazon マシンイメージ (AMI) ID が起動テンプレートにない場合、Amazon EC2 Auto Scaling はインスタンスを起動できません。

  2. 起動テンプレートをオーバーライドするオプションを選択します。

  3. vCPU およびメモリ要件などのコンピューティング要件に一致するインスタンス属性を指定します。

  4. 起動するオンデマンドインスタンスとスポットインスタンスの割合を指定します。

  5. Amazon EC2 Auto Scaling が可能なインスタンスタイプからオンデマンドとスポットのキャパシティーを満たす方法を決定する割り当て戦略を選択します。

  6. インスタンスを起動するアベイラビリティーゾーンと VPC サブネットを選択します。

  7. グループの初期サイズ (希望するキャパシティ) と、グループの最小サイズおよび最大サイズを指定します。

オーバーライドは、起動テンプレートで宣言されたインスタンスタイプをオーバーライドし、コンピューティング要件を記述するインスタンス属性のセットを使用するために必要です。サポートされている属性については、InstanceRequirements「Amazon EC2 Auto Scaling API リファレンス」の「」を参照してください。あるいは、既にインスタンス属性が定義されている起動テンプレートを使用することもできます。

必要に応じて、オーバーライド構造内で LaunchTemplateSpecification パラメータを設定して、一連のインスタンス要件に別の起動テンプレートを割り当てることもできます。このオプションは現在、コンソールからは利用できません。詳細については、「Amazon EC2 Auto Scaling API リファレンスLaunchTemplateOverrides」の「」を参照してください。

デフォルトでは、Auto Scaling グループの希望するキャパシティとしてインスタンスの数を設定します。

あるいは、希望するキャパシティの値を vCPU の数またはメモリ量に設定することもできます。これを実行するには、CreateAutoScalingGroup API オペレーションの DesiredCapacityType プロパティを使用するか、または AWS Management Consoleの [希望する容量タイプ] ドロップダウンフィールドを使用します。これは、インスタンスの重みに代わる便利な方法です。

インスタンスタイプの柔軟性

可用性を高めるには、複数のインスタンスタイプにアプリケーションをデプロイします。キャパシティ要件を満たすために複数のインスタンスタイプを使用するのがベストプラクティスです。そうすることで、選択したアベイラビリティーゾーンに十分なインスタンスのキャパシティがない場合、Amazon EC2 Auto Scaling は別のインスタンスタイプを起動できます。

スポットインスタンスで十分なインスタンスのキャパシティがない場合、Amazon EC2 Auto Scaling は他のスポットインスタンスプールからの起動を試みようとし続けます。(使用するプールは、インスタンスタイプと配分戦略の選択によって決まります)。Amazon EC2 Auto Scaling では、オンデマンドインスタンスの代わりにスポットインスタンスを起動することで、スポットインスタンスのコスト削減効果を活用できます。

ワークロードごとに少なくとも 10 個のインスタンスを使用して柔軟性を持たせることをお勧めします。インスタンスタイプを選択する際には、最も人気のある新しいインスタンスタイプに限定しないでください。旧世代のインスタンスタイプを選択すると、オンデマンドの顧客からの需要が少ないため、スポット中断が少なくなる傾向があります。

アベイラビリティーゾーンの柔軟性

Auto Scaling グループが複数のアベイラビリティーゾーンにまたがるようにすることを強くお勧めします。複数のアベイラビリティーゾーンを使用すると、ゾーン間で自動的にフェイルオーバーして回復力を高めるアプリケーションを設計できます。

追加のメリットとして、単一のアベイラビリティーゾーン内のグループと比較して、より深い Amazon EC2 キャパシティプールにアクセスできます。キャパシティは各アベイラビリティーゾーンのインスタンスタイプごとに個別に変動するため、多くの場合、より多くのコンピューティングキャパシティを得ることができ、インスタンスタイプとアベイラビリティーゾーンの両方を柔軟に選択できます。

複数のアベイラビリティーゾーンの使用の詳細については、「例: 複数のアベイラビリティーゾーン全体にインスタンスを分散させる」を参照してください。

最大スポット料金

AWS CLI または SDK を使用して Auto Scaling グループを作成するときに、 SpotMaxPriceパラメータを指定できます。SpotMaxPrice パラメータは、お客様がスポットインスタンス時間について支払ってもよいと考える最大料金を決定します。

オーバーライド (またはグループレベルで "DesiredCapacityType": "vcpu" もしくは "DesiredCapacityType": "memory-mib") で WeightedCapacity パラメータを指定すると、最大料金はインスタンス全体の最大料金ではなく、最大単価を表します。

最大料金を指定しないことを強くお勧めします。低すぎる上限価格が設定されるなどの理由で、スポットインスタンスを取得できない場合には、アプリケーションが実行されないことがあります。上限料金を指定しない場合、デフォルトの上限料金はオンデマンド価格となります。 起動するスポットインスタンスのスポット価格のみを支払います。スポットインスタンスによって提供される大幅な割引は、そのまま受けることができます。これらの割引を実現できるのは、スポット料金モデルを使用して適用されるスポット料金が安定しているためです。詳細については、「Amazon Elastic Compute CloudLinux インスタンス用ユーザーガイド」の「料金と削減額」を参照してください。

プロアクティブなキャパシティの再調整

ユースケースで可能な場合は、キャパシティの再調整をお勧めします。容量の再調整は、実行中のスポットインスタンスが 2 分間のスポットインスタンス中断通知を受け取る前に、新しいスポットインスタンスでフリートを事前に拡張することにより、ワークロードの可用性を維持するのに役立ちます。

キャパシティの再調整が有効になっている場合、Amazon EC2 Auto Scaling は、再調整に関するレコメンデーションを受け取ったスポットインスタンスをプロアクティブに置き換えようとします。これは、中断のリスクが低い新しいスポットインスタンスにワークロードを再調整する機会を提供します。

詳細については、「キャパシティの再調整を使用して Amazon EC2 スポットの中断に対処する」を参照してください。

スケーリングの動作

混合インスタンスグループを作成すると、デフォルトでオンデマンドインスタンスが使用されます。スポットインスタンスを使用するには、オンデマンドインスタンスとして起動されるグループの割合を変更する必要があります。オンデマンドインスタンスの割合には、0 から 100 までの任意の数を指定できます。

オプションで、開始時のオンデマンドインスタンスのベース数を指定することもできます。その場合、Amazon EC2 Auto Scaling は、グループがスケールアウトする際にオンデマンドインスタンスのベースキャパシティが起動された後までは、スポットインスタンスの起動を待機します。ベースキャパシティーを超える場合、オンデマンドインスタンスの割合を使用して、起動するオンデマンドインスタンスとスポットインスタンスの数が決まります。

Amazon EC2 Auto Scaling は、その割合を同等のインスタンス数に変換します。結果が小数になる場合、オンデマンドインスタンスを優先して次の整数に切り上げられます。

次の表は、サイズが増減した場合における Auto Scaling グループの動作について示しています。

例: スケーリング動作
購入オプション 各購入オプションのグループのサイズと実行中のインスタンスの数
10 20 30 40

例 1: 10 を基準、50/50% オンデマンド/スポット

On-Demand Instances (base amount) 10 10 10 10
On-Demand Instances 0 5 10 15
Spot Instances 0 5 10 15

例 2: 0 を基準、0/100% オンデマンド/スポット

On-Demand Instances (base amount) 0 0 0 0
On-Demand Instances 0 0 0 0
Spot Instances 10 20 30 40

例 3: 0 を基準、60/40% オンデマンド/スポット

On-Demand Instances (base amount) 0 0 0 0
On-Demand Instances 6 12 18 24
Spot Instances 4 8 12 16

例 4: 0 を基準、100/0% オンデマンド/スポット

On-Demand Instances (base amount) 0 0 0 0
On-Demand Instances 10 20 30 40
Spot Instances 0 0 0 0

例 5: 12 を基準、0/100% オンデマンド/スポット

On-Demand Instances (base amount) 10 12 12 12
On-Demand Instances 0 0 0 0
Spot Instances 0 8 18 28

グループのサイズが大きくなると、Amazon EC2 Auto Scaling は、指定されたアベイラビリティーゾーン全体でキャパシティのバランスを均等にすることを試みます。次に、指定された配分戦略に従ってインスタンスタイプを起動します。

グループのサイズが小さくなると、Amazon EC2 Auto Scaling は、まず 2 つのタイプ (スポットまたはオンデマンド) のどちらを終了する必要があるかを特定します。その後、指定されたアベイラビリティーゾーン全体でバランスの取れた方法でインスタンスを終了することを試みます。また、優先的に、割り当て戦略に近い方法でインスタンスを終了します。終了ポリシーの詳細については、「Amazon EC2 Auto Scaling の終了ポリシーを設定する」を参照してください。

リージョン別のインスタンスタイプの可用性

EC2 インスタンスタイプの可用性は、 によって異なります AWS リージョン。例えば、最新世代のインスタンスタイプは、特定のリージョンではまだ利用できない可能性があります。リージョンによってインスタンスの可用性が異なるため、オーバーライドする複数のインスタンスタイプをリージョンで利用できない場合、プログラムでリクエストを行う際に問題が発生する可能性があります。リージョンで利用できない複数のインスタンスタイプを使用すると、リクエストが完全に失敗する可能性があります。この問題を解決するには、異なるインスタンスタイプでリクエストを再試行し、各インスタンスタイプがリージョンで利用可能であることを確認してください。ロケーションによって提供されるインスタンスタイプを検索するには、 describe-instance-type-offerings コマンドを使用します。詳細については、「 Amazon EC2 Linux インスタンス用ユーザーガイド」の「Amazon EC2 インスタンスタイプの検索」を参照してください。

スポットインスタンスのベストプラクティスの詳細については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「EC2 スポットのベストプラクティス」を参照してください。

制限事項

混合インスタンスポリシー を使用して Auto Scaling グループにオーバーライドを追加した後、 UpdateAutoScalingGroup API コールでオーバーライドを更新できますが、削除することはできません。上書きを完全に削除するには、まず Auto Scaling グループを切り替えて、混合インスタンスポリシーの代わりに起動テンプレートまたは起動設定を使用する必要があります。その後、上書きせずに混合インスタンスポリシーを再度追加できます。