アプリケーションアーキテクチャの Auto Scaling の利点 - Amazon EC2 Auto Scaling

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

アプリケーションアーキテクチャの Auto Scaling の利点

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

  • 耐障害性の向上。Amazon EC2 Auto Scaling は、インスタンスに異常があるタイミングを検出して終了し、インスタンスを起動して置き換えることができます。複数のアベイラビリティーゾーンを使用するように Amazon EC2 Auto Scaling を設定することもできます。あるアベイラビリティーゾーンが使用できなくなった場合、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 ユーザーガイド」の「Amazon のVPC仕組み」を参照してください。 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 Auto Scaling は、スポットインスタンスが中断のリスクが高いことを Amazon がEC2報告するたびに、スポットインスタンスの起動を試みます。新しいインスタンスの起動後、Amazon EC2 Auto Scaling は古いインスタンスを終了します。詳細については、「キャパシティの再調整を使用して Amazon EC2 スポットの中断に対処する」を参照してください。