Auto Scaling は Application Load Balancer(ALB)と統合されており、ALB のサーバーグループのサーバーを自動的にスケールインまたはスケールアウトします。イベントトリガタスクを作成すると、Auto Scaling は ALB のサーバーグループで Elastic Compute Service(ECS)を動的にスケールインまたはスケールアウトできます。これにより、ALB の可用性が確保され、リソースの無駄を防ぎます。
例
ニュース Web サイトが最新ニュースをリリースすると、ページビュー(PV)数が大幅に増加し、現在のサーバーのサービス容量を超える可能性があります。その結果、サーバーが受信リクエストに応答できなくなる可能性があります。時間の経過とともにニュースが薄れるにつれてサーバーのワークロードが減少すると、ユーザーは Web ページを読み込むことができます。この Web サイトのユーザートラフィックの変動は予測不可能であるため、ワークロード管理がより困難になります。
このシナリオでは、CloudMonitor が ECS インスタンスの CPU 使用率などのリソース使用率を監視できるようにするイベントトリガタスクを作成できます。このようにして、システムは ALB サーバーグループに ECS インスタンスを自動的に追加したり、ALB サーバーグループから ECS インスタンスを削除したりできます。スケーリンググループが ALB サーバーグループに関連付けられると、スケーリンググループの ECS インスタンスに対して自動または手動でトリガーされるスケールインおよびスケールアウトアクティビティは、ALB サーバーグループと同期されます。リクエストは、トラフィック量とヘルスチェックステータスに基づいて ECS インスタンスに分散され、高いサービス可用性が確保されます。
次の例では、ALB は転送ルールに基づいて ECS01 にリクエストを分散します。 ECS01 の CPU 使用率が指定されたしきい値に達すると、スケーリングルールとイベントトリガタスクに基づいて ECS インスタンスが作成され、サーバーグループに追加されます。 ECS01 の CPU 使用率が指定されたしきい値を下回ると、ECS インスタンスはサーバーグループから削除され、解放されます。
前提条件
少なくとも 1 つの ALB インスタンスが作成され、[実行中] です。詳細については、「ALB インスタンスの作成と管理」をご参照ください。
ALB インスタンス用にサーバーグループが作成され、サーバーグループに ECS インスタンスが追加されます。サーバーグループは [利用可能] 状態です。この例では、サーバーグループの名前は RS1、ECS インスタンスの名前は ECS01 です。
ECS01 用のカスタムイメージが作成されます。詳細については、「インスタンスからカスタムイメージを作成する」をご参照ください。
ALB インスタンスのヘルスチェックが有効になっています。詳細については、「ヘルスチェック」をご参照ください。
ALB インスタンス用に少なくとも 1 つのリスナーが作成されています。詳細については、「HTTP リスナーを追加する」をご参照ください。
ALB インスタンスとスケーリンググループは、同じ仮想プライベートクラウド(VPC)にデプロイされています。
手順 1:スケーリンググループを作成する
Auto Scaling コンソール にログインします。
左側のナビゲーションウィンドウで、[スケーリンググループ] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。
[スケーリンググループ] ページで、[作成] をクリックして [スケーリンググループの作成] ページに移動します。
次の表に従って、ページの一部の設定パラメーターを設定します。詳細な構成手順については、「ECS タイプのスケーリンググループを作成する」をご参照ください。
パラメーター
説明
[インスタンス構成ソース]
[新規作成] を選択します。
[インスタンスの最小数]
スケーリンググループのインスタンス数が指定された最小インスタンス数より少ない場合、Auto Scaling はインスタンス数が最小数に達するまで自動的にスケールアウトします。この例では、1 が選択されています。これは、少なくとも 1 つの ECS インスタンスが必要であることを指定します。
[インスタンスの最大数]
スケーリンググループのインスタンス数が指定された最大インスタンス数より多い場合、Auto Scaling はインスタンス数が最大数に達するまで自動的にスケールインします。この例では、2 が選択されています。これは、サーバーグループに最大 1 つの ECS インスタンスを追加できることを指定します。
[デフォルトクールダウン時間]
スケールインまたはスケールアウトアクティビティが完了した後、指定されたクールダウン時間が終了するまで、次のスケールインまたはスケールアウトアクティビティは開始されません。このパラメーターは、イベントトリガタスクでのみ使用できます。この例では、0 が選択されています。ビジネス要件に基づいて値を指定します。
[VPC] と [vSwitch]
ECS01 の VPC と vSwitch を選択します。
[ALB および NLB サーバーグループの関連付け]
サーバーグループを選択し、ポートと重みを指定します。
ビジネス要件に基づいて他のパラメーターを設定し、[作成] をクリックします。[スケーリンググループ] ページでスケーリンググループを表示できます。
手順 2:スケーリンググループの構成テンプレートを作成する
[スケーリンググループ] ページで、[アクション] 列の [詳細] をクリックします。[インスタンス構成ソース] タブで、[スケーリング構成] をクリックします。
[スケーリング構成] タブで、[スケーリング構成の作成] をクリックしてパラメーターを設定します。次の表では、一部のパラメーターについて説明します。「ECS タイプのスケーリング構成を作成する」を参照して、他のパラメーターを設定します。
パラメーター
説明
[課金方法]
ECS インスタンスの課金方法を選択します。この例では、[従量課金制] が選択されています。
[イメージの選択]
この例では、ECS01 のカスタムイメージが選択されています。
[インスタンス構成モード]
この例では、[インスタンスタイプを指定] が選択されています。
[インスタンスタイプの選択]
この例では、ECS01 のタイプが選択されています。
[セキュリティグループ]
この例では、ECS01 のセキュリティグループが選択されています。
[作成] をクリックします。[スケーリング構成のプレビュー] メッセージで、[作成] をクリックします。
[スケーリング構成が作成されました] ダイアログボックスで、[有効化] をクリックして構成とスケーリンググループを有効にします。
手順 3:スケーリングルールを作成する
[スケーリンググループ] ページで、管理するスケーリンググループを見つけ、[アクション] 列の [詳細] をクリックします。[スケーリングルールとイベントトリガタスク] タブで、[スケーリングルール] タブをクリックします。
自動スケールアウトルールを作成します。[スケーリングルール] タブで、[スケーリングルールの作成] をクリックし、次の表に基づいて一部のパラメーターを設定し、「スケーリングルールを構成する」を参照して他のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
[ルール名]
スケーリングルールの名前を入力します(例:ECS インスタンスを 1 つ自動的に追加)。
[ルールタイプ]
この例では、[シンプルなスケーリングルール] が選択されています。
[操作]
この例では、[インスタンスを 1 つ追加] が選択されています。
自動スケールインルールを作成します。[スケーリングルール] タブで、[スケーリングルールの作成] をクリックし、次のパラメーターを設定して、[OK] をクリックします。
パラメーター
説明
[ルール名]
スケーリングルールの名前を入力します(例:ECS インスタンスを 1 つ自動的に削除)。
[ルールタイプ]
この例では、[シンプルなスケーリングルール] が選択されています。
[操作]
この例では、[インスタンスを 1 つ削除] が選択されています。
手順 4:イベントトリガタスクを作成し、スケーリングルールに関連付ける
左側のナビゲーションウィンドウで、 を選択します。
[イベントトリガタスク] ページの [システム監視] タブで、[イベントトリガタスクの作成] をクリックします。
自動スケールアウトをトリガーするイベントトリガタスクを作成します。[イベントトリガタスクの作成] をクリックします。表示されるダイアログボックスで、次の表に基づいて一部のパラメーターを設定し、「イベントトリガタスクを管理する」を参照して他のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
[名前]
タスクの名前を入力します(例:ECS インスタンスを 1 つ自動的に追加)。
[監視対象リソース]
手順 1 で作成したスケーリンググループを選択します。
[アラート条件]
この例では、アラート条件は (エージェント) CPU 使用率、最大 (最大) >= 60% に設定されています。
[統計期間]
この例では、[1 分] が選択されています。
[トリガー後]
この例では、[1 回] が選択されています。
[アラート時にトリガーされるスケーリングルール]
手順 3 で作成した自動スケールアウトルールを選択します。
自動スケールインをトリガーするイベントトリガタスクを作成します。[イベントトリガタスクの作成] をクリックします。表示されるダイアログボックスで、パラメーターを設定し、[OK] をクリックします。次の表では、一部のパラメーターについて説明します。
パラメーター
説明
[名前]
タスクの名前を入力します(例:ECS インスタンスを 1 つ自動的に削除)。
[監視対象リソース]
手順 1 で作成したスケーリンググループを選択します。
[アラート条件]
この例では、アラート条件は (エージェント) CPU 使用率、最大 (最大) <= 30% に設定されています。
[統計期間]
この例では、[1 分] が選択されています。
[トリガー後]
この例では、[1 回] が選択されています。
[アラート時にトリガーされるスケーリングルール]
手順 3 で作成した自動スケールインルールを選択します。
手順 5:スケーリンググループに ECS インスタンスを追加する
Auto Scaling は、監視データとイベントトリガタスクに基づいてバックエンドサーバーの数を自動的に調整します。したがって、監視する ECS インスタンスをスケーリンググループに追加する必要があります。
[スケーリンググループ] ページで、管理するスケーリンググループを見つけ、[詳細] を [アクション] 列でクリックします。[インスタンス] タブで、[手動で追加] タブをクリックします。
次に、[既存のインスタンスを追加] をクリックします。表示されるページで、ECS01 を選択し、[追加] をクリックします。
[手動で追加] タブで ECS01 を表示できます。
手順 6:バックエンドサーバーが自動的に追加および削除できるかどうかをテストする
ストレステストツールを使用して ECS01 の CPU 使用率を 60% に増やし、イベントトリガタスクをトリガーして、ECS インスタンスを作成し ALB サーバーグループに追加できるようにします。 ALB コンソールで、ECS インスタンスがサーバーグループに追加されているかどうかを確認できます。ストレステストが終了し、ECS01 の CPU 使用率が 30% を下回ったら、イベントトリガタスクが再度トリガーされて ECS インスタンスが自動的に削除されるかどうかを確認します。
ECS01 にログインし、次のコマンドを実行してストレステストツールをインストールします。
sudo yum install -y epel-release // epel リリースをインストールする sudo yum install -y stress // stress パッケージをインストールする次のコマンドを実行して、ECS01 でストレステストを実行します。ストレステストは 60 秒間続きます。
sudo stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 60s &[スケーリンググループ] ページに戻り、イベントトリガタスクの [ステータス] が [アラート] になるまで数分待ちます。
[スケーリンググループ] ページに移動します。スケールアウトアクティビティの後、[インスタンス/容量] 列に表示される [インスタンスの総数] が 1 つ増えていることがわかります。これは、ECS インスタンスが作成され、スケーリンググループに追加されたことを示します。
ALB コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
サーバーグループの ID をクリックし、[バックエンドサーバー] タブをクリックします。このタブでは、サーバーグループに 2 つのバックエンドサーバーが含まれていることがわかります。
ESS-XX形式で名前が付けられた ECS インスタンスは、Auto Scaling によって追加されます。60 秒のストレステストが終了したら、Auto Scaling コンソールと ALB コンソールにログインして、ECS インスタンスがサーバーグループから自動的に削除されたかどうかを確認できます。
参照
Auto Scaling の詳細については、「Auto Scaling とは」をご参照ください。
Auto Scaling は、サーバーを自動的にスケーリングできるスケジュールタスクをサポートしています。詳細については、「スケジュールタスクを使用してインスタンス数を構成する」をご参照ください。
Auto Scaling は CloudMonitor と統合されており、監視メトリックや予測メトリック値に基づくリソーススケーリングなどの高度な機能をサポートしています。詳細については、「スケーリングルールを構成する」をご参照ください。