Amazon EC2 Auto Scaling のメリット - Amazon EC2 Auto Scaling

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

Amazon EC2 Auto Scaling のメリット

Amazon EC2 Auto Scaling をアプリケーションアーキテクチャに追加することは、 AWS クラウドの利点を最大化する方法の 1 つです。Amazon EC2 Auto Scaling を使用する場合、アプリケーションには次のようなメリットがあります。

  • 耐障害性の向上。Amazon EC2 Auto Scaling では、インスタンスに異常が発生したタイミングを検出し、インスタンスを削除して、その代わりに新しいインスタンスを起動することができます。複数のアベイラビリティーゾーンを使用するように Amazon EC2 Auto Scaling を設定することもできます。1 つのアベイラビリティーゾーンが利用できなくなると、Amazon EC2 Auto Scaling は別のアベイラビリティーゾーンでインスタンスを起動して補正します。

  • 可用性の向上。Amazon EC2 Auto Scaling は、現在のトラフィック需要を処理するための適切なキャパシティを、お使いのアプリケーションに常に持たせるのに役立ちます。

  • コスト管理の強化。Amazon EC2 Auto Scaling では、必要に応じて動的に処理能力を増減できます。使用する EC2 インスタンスの料金を支払うので、必要なときにインスタンスを起動し、不要な場合は削除することで費用を節約できます。

例: 変化する需要に対応する

Amazon EC2 Auto Scaling のいくつかのメリットを示すために、 AWSで実行されている基本的なウェブアプリケーションを例として取り上げます。このアプリケーションでは、従業員は会議に使用できる会議室を検索できます。週の始めと終わりには、このアプリケーションの使用量は最小になります。週の中盤では、より多くの従業員が会議をスケジュールしているため、アプリケーションの使用量が大幅に増加します。

以下のグラフは、1 週間を通じてアプリケーションの処理能力がどのくらい使用されているかを示しています。


					アプリケーションの処理能力の使用量に関する例。

従来、このような処理能力の変化に対応した計画を立てるには 2 通りの方法がありました。最初の方法は、アプリケーションが使用量に応じて十分な処理能力を常に確保できるように、十分な数のサーバーを追加する方法です。ただし、この方法の欠点は、アプリケーションがこの十分な処理能力を必要としない日数が発生することです。余分な処理能力が未使用のままになり、実質的には、アプリケーションの実行を維持するためのコストが増加します。


					必要を上回る処理能力の購入によって発生するコスト効率の低下を示す例。

2 番目の方法は、アプリケーションの平均的な使用量を処理するための十分な処理能力を確保する方法です。この方法では、使用される機会が少ない機器を購入しないため、コストはあまりかかりません。ただし、アプリケーションの使用量が処理能力を超えた場合に、カスタマーエクスペリエンスが低下するというリスクがあります。


					必要を下回る処理能力の購入によって発生するカスタマーエクスペリエンスの低下を示す例。

このアプリケーションに Amazon EC2 Auto Scaling を追加することによって、3 番目の方法が利用可能になります。必要な場合にのみアプリケーションに新しいインスタンスを追加し、それらのインスタンスが不要になった場合は、インスタンスを終了できます。Amazon EC2 Auto Scaling では EC2 インスタンスを使用するため、インスタンスを使用した場合に、それらのインスタンスの料金のみを支払うだけで済みます。この方法により、費用効率が高いアーキテクチャの利用が可能になります。このようなアーキテクチャでは最適なカスタマーエクスペリエンスが提供され、費用を最小限に抑えることができます。


					Amazon EC2 Auto Scaling による必要に応じたキャパシティの調整を示す例。

例: ウェブアプリアーキテクチャ

一般的なウェブアプリケーションのシナリオでは、顧客のトラフィックのボリュームに対応するために、アプリケーションの複数のコピーを同時に実行します。このようなアプリケーションの複数のコピーは、同じ EC2 インスタンス(クラウドサーバー)でホストされ、それぞれが顧客のリクエストを処理します。

Amazon EC2 Auto Scaling は、お客様に代わって、これらの EC2 インスタンスの起動と終了を管理します。Auto Scaling グループが EC2 インスタンスを起動または終了するタイミングを決定する一連の条件 (Amazon CloudWatch アラームなど) を定義します。Auto Scaling グループをネットワークアーキテクチャに追加することによって、アプリケーションの可用性と耐障害性を向上させることができます。


					Auto Scaling グループを使用する基本的な 3 層アーキテクチャ。

Auto Scaling グループは必要な数だけ作成できます。例えば、各層のための Auto Scaling グループを作成できます。

Auto Scaling グループ内のインスタンス間のトラフィックを分散させるために、アーキテクチャにロードバランサーを導入できます。詳細については、「Elastic Load Balancing」を参照してください。

例: 複数のアベイラビリティーゾーン全体にインスタンスを分散させる

アベイラビリティーゾーンは、所定の AWS リージョンにある隔離された場所です。各リージョンには、そのリージョンに対して高可用性を提供するために設計された複数のアベイラビリティーゾーン (AZ) があります。アベイラビリティーゾーンは独立しているため、複数のゾーンを使用するようにアプリケーションを設計すると、アプリケーションの可用性が向上します。詳細については、「Amazon EC2 Auto Scaling のレジリエンス」を参照してください。

アベイラビリティーゾーンは、 AWS リージョン コードとそれに続く文字識別子 (例: ) によって識別されますus-east-1a。デフォルトの VPC を使用する代わりに独自の VPC とサブネットを作成する場合は、各アベイラビリティーゾーンに 1 つ、または複数のサブネットを定義できます。各サブネットが完全に 1 つのアベイラビリティーゾーン内に含まれている必要があり、1 つのサブネットが複数のゾーンに、またがることはできません。詳細については、「Amazon VPC ユーザーガイド」の「Amazon VPC の仕組み」を参照してください。

Auto Scaling グループを作成するときは、Auto Scaling グループをデプロイする VPC とサブネットを選択する必要があります。Amazon EC2 Auto Scaling は、選択されたサブネットにインスタンスを作成します。そのため、各インスタンスは Amazon EC2 Auto Scaling によって選択された特定のアベイラビリティーゾーンに関連付けられます。インスタンスを起動すると、Amazon EC2 Auto Scaling は、可用性と信頼性を高めるためにインスタンスをゾーン間で均等に分散させようと試みます。

以下の画像は、3 つのアベイラビリティーゾーン間にデプロイされた多層アーキテクチャの概要です。


					3 つのアベイラビリティーゾーンにまたがる一般的な Auto Scaling グループ。

インスタンスの分散

Amazon EC2 Auto Scaling は自動的に、有効化された各アベイラビリティーゾーン内で等しい数のインスタンスを維持しようと試みます。Amazon EC2 Auto Scaling は、インスタンス数が最も少ないアベイラビリティーゾーンで新しいインスタンスの起動を試みることによって、これを実行します。アベイラビリティーゾーンに対して複数のサブネットが選択されている場合、Amazon EC2 Auto Scaling はアベイラビリティーゾーンからサブネットをランダムに選択します。この試みが失敗した場合、Amazon EC2 Auto Scaling は成功するまで別のアベイラビリティーゾーンでのインスタンスの起動を試みます。

アベイラビリティーゾーンが異常、または利用不能な状況では、アベイラビリティーゾーン間でのインスタンスの分散が不均等になる可能性があります。アベイラビリティーゾーンが回復すると、Amazon EC2 Auto Scaling は Auto Scaling グループのバランスを自動的に再調整します。これは、インスタンス数が最も少ない有効なアベイラビリティーゾーンでインスタンスを起動し、その他のゾーンでインスタンスを終了することによって行われます。

アクティビティの再分散

再分散アクティビティは、アベイラビリティーゾーンの再調整とキャパシティ再調整の 2 つのカテゴリに分類されます。

アベイラビリティーゾーンの再調整

特定のアクションが発生すると、Auto Scaling グループはアベイラビリティーゾーン間で不均衡になる可能性があります。Amazon EC2 Auto Scaling は、これらのアベイラビリティーゾーンを再調整することによって、これを補正します。再調整アクティビティは、以下のアクションが原因で行われる場合があります。

  • Auto Scaling グループに関連付けられたアベイラビリティーゾーンを変更する。

  • インスタンスを明示的に終了もしくはデタッチする、またはインスタンスをスタンバイにすることでグループのバランスが悪くなる。

  • それまでキャパシティが不足していたアベイラビリティーゾーンが回復し、使用できるキャパシティが増えた。

  • これまでスポット価格が上限価格より高かったアベイラビリティーゾーンで、スポット価格が上限価格より低くなった。

再調整するにあたって、Amazon EC2 Auto Scaling は新しいインスタンスを起動してから古いインスタンスを終了します。そうすることで、再調整によってアプリケーションのパフォーマンスや可用性が損なわれることがなくなります。

Amazon EC2 Auto Scaling は古いインスタンスを終了する前に新しいインスタンスの起動を試みるため、指定された最大キャパシティ、またはそれに近いキャパシティが使用されていると、再調整アクティビティが妨げられる、または完全に停止される可能性があります。

この問題を回避するため、システムは、再調整アクティビティの実行中に指定された最大キャパシティを一時的に超過することができます。デフォルトでは、10% のマージンまたは 1 つのインスタンスのいずれか大きい方で行うことができます。この超過範囲は、グループのキャパシティが最大またはそれに近く、再調整が必要な場合にのみ拡張されます。この追加キャパシティーは、グループの再分散に要する時間にわたってのみ提供されます (通常は数分)。

または、インスタンスのメンテナンスポリシーを使用して Auto Scaling グループのしきい値を設定することもできます。グループは、そのしきい値の範囲内の容量のみを増減できます。これにより、グループのバランスを再調整する速度を制御できます。詳細については、「インスタンスメンテナンスポリシー」を参照してください。

キャパシティーの再調整

スポットインスタンスを使用するときは、Auto Scaling グループのキャパシティの再調整を有効にできます。これは、Amazon EC2 がスポットインスタンスの中断リスクが高まっていることを報告するときに、Amazon EC2 Auto Scaling がスポットインスタンスの起動を試行できるようにします。新しいインスタンスの起動後、Amazon EC2 Auto Scaling は古いインスタンスを終了します。詳細については、「キャパシティの再調整を使用して Amazon EC2 スポットの中断に対処する」を参照してください。