Amazon EC2 Auto Scaling (日本語)
ユーザーガイド

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 インスタンス(クラウドサーバー)でホストされ、それぞれが顧客のリクエストを処理します。


					基本的な Auto Scaling グループの図。

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


					基本的な Auto Scaling グループの図。

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

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

例: 複数のアベイラビリティーゾーンへのインスタンスの分散

EC2 インスタンスなどの AWS リソースは、高可用性データセンターに収容されています。スケーラビリティと信頼性を向上させるために、これらのデータセンターは複数の物理的な場所に配置されています。リージョンは大きく、広く分散された地理的位置です。各リージョンには、アベイラビリティーゾーンと呼ばれる複数の独立したロケーションがあります。これは別のアベイラビリティーゾーンで発生した障害から隔離するためです。アベイラビリティーゾーンは、同じリージョン内の他のアベイラビリティーゾーンに低価格かつ低レイテンシーのネットワーク接続を提供します。詳細については、『アマゾン ウェブ サービス全般のリファレンス』の「リージョンとエンドポイント: Amazon EC2 Auto Scaling」を参照してください。

Amazon EC2 Auto Scaling では、Auto Scaling グループをリージョン内の複数のアベイラビリティーゾーンに分散させることで、地理的冗長性の安全性と信頼性を利用できます。1 つのアベイラビリティーゾーンが異常または使用不可になったとき、Auto Scaling は、影響を受けていないアベイラビリティーゾーンで新しいインスタンスを起動します。異常な状態のアベイラビリティーゾーンが正常な状態に戻ったら、指定されたすべてのアベイラビリティーゾーンにわたって均等にアプリケーションインスタンスを自動的に再分散します。

1 つの Auto Scaling グループには、同じリージョン内の 1 つ以上のアベイラビリティーゾーンの EC2 インスタンスを含めることができます。ただし、Auto Scaling グループは複数のリージョンにまたがることはできません。

Auto Scaling グループが同じ VPC にある場合、EC2 インスタンスはサブネットで起動されます。Auto Scaling グループを作成または更新するときは、EC2 インスタンスのサブネットを選択します。アベイラビリティーゾーンにつき、1 つまたは複数のサブネットを選択できます。詳細については、『Amazon VPC ユーザーガイド』の「VPC とサブネット」を参照してください。

インスタンスの分散

Amazon EC2 Auto Scaling は、Auto Scaling グループが使用できるアベイラビリティーゾーンの間で均等にインスタンスを分散しようとします。Amazon EC2 Auto Scaling は、インスタンス数が最も少ないアベイラビリティーゾーンで新しいインスタンスの起動を試みることによって、これを実行します。この試みが失敗すると、Amazon EC2 Auto Scaling は成功するまで別のアベイラビリティーゾーンでインスタンスの起動を試みます。VPC 内の Auto Scaling グループの場合、アベイラビリティーゾーンに複数のサブネットがある場合、Amazon EC2 Auto Scaling はアベイラビリティーゾーンからサブネットをランダムに選択します。


						2 つのアベイラビリティーゾーンを対象とする一般的な Auto Scaling グループ。

アクティビティの再分散

特定のアクションが発生すると、Auto Scaling グループはアベイラビリティーゾーン間で不均衡になる可能性があります。Amazon EC2 Auto Scaling は、アベイラビリティーゾーン間のバランスを再度取って不均衡を補います。次のアクションは、アクティビティの再バランスにつながる可能性があります。

  • グループのアベイラビリティーゾーンを変更する。

  • インスタンスを明示的に終了するかデタッチして、そのグループをアンバランスにする。

  • 容量が不足していたアベイラビリティーゾーンが回復し、使用できる容量が増えた。

  • 以前に、スポット入札価格より高いスポット市場価格があったアベイラビリティーゾーンの、市場価格が入札価格より低くなった。

再分散を実行する場合、Amazon EC2 Auto Scaling は再分散によってアプリケーションのパフォーマンスや可用性が低下しないように、古いインスタンスを終了する前に新しいインスタンスを起動します。

Amazon EC2 Auto Scaling は、古いインスタンスを終了する前に新しいインスタンスの起動を試みるため、指定した最大容量またはそれに近い状態になると、再分散アクティビティの処理が遅くなったり、完全に停止する可能性があります。この問題を回避するため、再分散アクティビティの間、グループに対して指定されている最大容量が一時的に 10% のマージン(または 1 インスタンスのマージンのどちらか大きい方)で増えます。このマージンは、グループが最大容量に達しているか、それに近い状態であり、ユーザーがゾーンの再設定をリクエストしたため、またはゾーンの可用性の問題を補正するために、グループの再分散が必要な場合にのみ追加されます。この追加容量は、グループの再分散に要する時間にわたってのみ提供され、通常は数分です。