概要
Auto Scaling では、ユーザーが定義する条件に応じて、Amazon EC2 の容量を自動的に拡張または縮小することができます。Auto Scaling では、使用中の Amazon EC2 インスタンスの数を、需要が急上昇したときはシームレスに増やしてパフォーマンスを維持し、需要が落ちたときに自動的に減らすことにより、コストを最小化することができます。Auto Scaling は、使用量が時間、日、週の単位で変化するアプリケーションに特に適しています。
ただし、Auto Scaling は、サーバーを縮小、拡張するだけではなく、応答しないサーバーを負荷分散が処理するのと似たような方法で、障害を処理するメカニズムでもあります。このラボでは、Elastic Compute Cloud (EC2) インスタンスに関連付けられたロードバランサーを自動的に起動、監視、更新するように Auto Scaling を設定する手順をデモンストレーションします。
Auto Scaling に関して重要なことが 2 つあります。まず、Auto Scaling は「クラウドの温度 (容量)」を設定する方法です。ポリシーを使用して「サーモスタットを設定」すると、Auto Scaling は見えない所で必要に応じて Amazon EC2 リソースを増やしたり減らしたりという制御を行い、「温度」(容量) を維持します。
Auto Scaling ポリシーは以下のように構成されています。
起動設定: 増加した需要に応じて作成されるサーバーを定義します。
Auto Scaling グループ: 起動設定を使用して新しいサーバーインスタンスを作成するタイミング、および新しいサーバーインスタンスを作成するアベイラビリティーゾーンとロードバランサーのコンテキストを定義します。
次に、Auto Scaling では同じインスタンスタイプのサーバーを起動する必要があります。Auto Scaling はサーバー A が 64 ビットのエクストララージインスタンスであっても、32 ビットのスモールインスタンスであっても特に差異がないものとして扱います。実際に、これはクラウドコンピューティングの基本原則です。代替可能なリソースのフリートを使用して水平に拡張します。個別のリソースはフリート自体に対しては二次的です。
取り上げるトピック
このラボを修了すると、次のことができるようになります。
- コマンドラインツールを使用して新しい起動設定を作成する
- コマンドラインツールを使用して新しい Auto Scaling グループを作成する
- インスタンスのリソース使用量が上昇または低下しすぎたときにトリガーされる Auto Scaling 通知を設定する
- リソースの使用状況の変化に応じて実行中のインスタンスの数を増減するためのポリシーを作成する
ラボの前提条件
このラボを修了するには、Linux サーバー管理に関する基本的な知識があり、Linux コマンドラインツールを使用できることが必要です。また、新しい Amazon EC2 サーバーインスタンスの作成および Elastic Load Balancing の設定の基本をよく理解している必要があります。
その他の AWS のサービス
このラボに必要なサービス以外の AWS のサービスは、このラボへのアクセス中 IAM ポリシーによって無効にされています。さらに、このラボで使用されるサービスの機能はラボに必要なものに限定されており、場合によってはラボの設計の観点から意図的にさらに制限されています。このラボガイドで指定されていない他のサービスを利用したりアクションを実行したりするときにエラーが発生する場合があります。
Auto Scaling の重要な要素
サーバーを手動で起動する場合は、起動する Amazon マシンイメージ (AMI)、インスタンスタイプ、セキュリティグループなどのパラメータを入力します。Auto Scaling では、これを起動設定と呼びます。起動設定は、起動するインスタンスの種類が記述されている単なるパラメータのセットです。
Auto Scaling グループは、起動した後のインスタンスに対して行う動作をシステムに指示します。ここで、インスタンスを起動するアベイラビリティーゾーン、トラフィックを受信するロードバランサー、そして最も重要な、任意の時点で実行されるインスタンスの最少数と最大数を指定します。
インスタンスを拡張、縮小するタイミングをシステムに指示するルールが必要になります。これらはスケーリングポリシーと呼ばれ、「フリートを 10% 拡張する」や「1 つずつインスタンスを縮小する」などのルールがあります。
タイミングが重要
Auto Scaling の使用する際にはコストが発生します。AWS のコストに直接関係し、ご使用のアプリケーションの拡張方法にも関係する重要な要素が 2 つあります。それは、コストと時間です。
Amazon EC2 Linux インスタンスは秒単位で課金されます
つまり、アクティビティが多いときはサーバーをスケールアウトし、必要な容量が少ないときにはスケールインしてコストを削減できます。
スケーリングには時間がかかる
次のグラフについて考慮してみます。多くの場合、スケーリングイベントが必要になってから、スケーリングイベントが実際に発生するまでにかなりの時間がかかっています。
- この例では、少なくとも 2 分間、特定の状態に留まる必要があるというルールが示されています。
- CloudWatch は、CPU 使用率などの統計値を監視する基本のデータ収集システムです。これは、ポーリングプロトコルであり、通常、新しいデータを集計するのに 60 秒かかります。
- Auto Scaling もポーリングシステムですが、これは、さらに 60 秒かかります。
- 次に、サーバーの起動時間があります。大規模で複雑なサーバーの場合は、起動するのに何分もかかることがあります。
- 最後に、サーバーが正常に要求を受け入れる状態になるまで、ロードバランサーではサーバーを数回ポーリングする必要があります。