Amazon EC2 を伸縮自在にする Auto Scaling とは

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Auto Scaling とは

Auto Scaling は、Amazon EC2を使う上で操作上の負担を減らすことを助けるように設計されています。 Auto Scaling は、立ち上げたそれぞれのインスタンスの健康状態をモニターします。もし、インスタンスのどれかが不意に終了してしまった場合、 Auto Scaling は終了を検知して代わりのインスタンスを立ち上げます。この機能は、ユーザが予定したインスタンス数を維持する助けとなります。 Auto Scaling は自動的にインスタンス群のサイズを調整することができます。 Auto Scaling はアプケーションの負荷変動に対応してインスタンスを追加または削除することができます。

一般的なシナリオとして、顧客トラフィック量に対応するために、複製されたアプリケーションが同時に実行されます。 顧客は1つのURLを見ていますが、裏ではそれぞれのEC2インスタンスが個別にリクエストを受け付けています。 これらのEC2インスタンスは、Auto Scaling グループでカテゴリ分けされています。これは、Auto Scaling の基本的な概念です。 Auto Scaling グループは、最小/最大のEC2インスタンス数を定義します。 Auto Scaling サービスは、トラフィックの増加に合わせて最大までインスタンスを立ち上げ、 需要が減ったときには効率的なサービス提供のために最小まで減らします。

インターネットトラフィックは、パブリックなURLからWeb層のAuto Scalingグループへリクエストされます。 Auto Scaling グループは、CPU使用率の平均値からインスタンスの追加/削除のトリガーを持ちます。 トリガーが動いたとき、Auto Scalingはインスタンスを立ち上げるために起動コンフィグを読み込みます。 起動コンフィグは最大で100まで設定できます。起動コンフィグを編集した場合、立ち上げ済みのインスタンスには反映されません。 もし、Auto Scaling がインスタンスのスケールダウンか削除をする場合、起動コンフィグは古い順に処理をします。

Auto Scalingは、トリガーによってインスタンスを追加/削除します。Amazon CloudWatch の CPUUtilization のように、メトリクス発行を有効化することで、トリガーを設定できます。有効化されると、Scaling Activity と呼ばれる長期的な処理が走り出します。

Auto Scaling は、必須でないですがAWS Elastic Load Balancing をサポートします。ユーザは、Auto Scaling グループにELBを追加できます。 そしてELBのメトリクス(例えば、リクエスト遅延やリクエストカウント)を追加できます。

まとめ

Auto Scaling は、Amazon EC2 の負荷等に応じてインスタンス数の増減を自動化する仕組みあることが分かりました。AWS Elastic Load Balancing や CloudWatch と組み合わせることで運用を自動化できることも分かりました。次回は、スケジュールやポリシーによる動作についてご紹介する予定です。