Auto Scaling を Application Load Balancer (ALB) のサーバーグループに関連付けることで、イベント駆動型タスクを活用して、そのグループ内の ECS インスタンス数を自動的に調整できます。これにより、ALB の高可用性が向上し、リソースコストを削減できます。
シナリオ例
あるニュースサイトで、注目度の高い記事を公開した直後にトラフィックが急増し、サーバーが過負荷状態に陥り、ユーザーがページを読み込めなくなるケースを想定します。その後、話題の関心が薄れるとトラフィックは通常レベルに戻り、ページの表示も再び可能になります。このようなトラフィックスパイクの予測困難さゆえに、手動でインスタンス数を適切なタイミングで調整したり、追加すべき最適なインスタンス数を判断したりすることが困難です。
この課題に対処するためには、Auto Scaling のイベント駆動型タスクを活用します。CloudMonitor が CPU 使用率などのメトリックに基づいてリソースを自動的に調整します。スケーリンググループを ALB のサーバーグループに関連付けた後、スケーリンググループ内の ECS インスタンス数に関する変更(自動または手動によるもの)はすべて ALB のサーバーグループに同期されます。ALB インスタンスは、トラフィックディストリビューションおよびヘルスチェックポリシーに従って、これらの ECS インスタンスにトラフィックを分散させることで、リソースの可用性および弾力性を大幅に向上させます。
本トピックでは、以下のソリューションを例として説明します。ALB インスタンスは、設定済みの転送ルールに基づき、クライアントからのリクエストをバックエンドサーバー ECS01 に配信します。Auto Scaling を活用し、イベント駆動型タスクを構成することで、ECS01 の CPU 使用率が指定されたしきい値に達すると、新しい ECS インスタンスが自動的に作成され、バックエンドサーバーグループに追加されます。また、ECS01 の CPU 使用率が別の指定しきい値まで低下すると、その ECS インスタンスがバックエンドサーバーグループから自動的に削除され、リリースされます。
前提条件
ステータスが 実行中 である Application Load Balancer (ALB) インスタンスを 1 台以上作成済みである必要があります。詳細については、「ALB インスタンスの作成と管理」をご参照ください。
ALB インスタンスに対して、本トピックでは「RS1」と名付けたサーバーグループを作成済みであり、そのグループに ECS インスタンス(本トピックでは「ECS01」と命名)を追加済みである必要があります。サーバーグループのステータスは 利用可能 である必要があります。
ECS01 インスタンスからカスタムイメージを作成しました。詳細については、「インスタンスからカスタムイメージを作成する」をご参照ください。
ALB インスタンスに対してヘルスチェックが有効化済みである必要があります。詳細については、「ALB のヘルスチェック」をご参照ください。
ALB インスタンスに対して、少なくとも 1 つのリスナーが設定済みである必要があります。詳細については、「HTTP リスナーの追加」をご参照ください。
ALB インスタンスとスケーリンググループは、同一の VPC 内に存在する必要があります。
手順 1:スケーリンググループの作成
-
Auto Scaling コンソール にログインします。
左側のナビゲーションウィンドウで、スケーリンググループ をクリックします。
-
上部のナビゲーションバーで、リージョンを選択します。
スケーリンググループ ページで、スケーリンググループの作成 をクリックします。
以下の表では、主なパラメーターについて説明します。その他のパラメーターについては、「ECS スケーリンググループの作成」をご参照ください。
パラメーター
説明
インスタンス設定ソース
新規作成 を選択します。
最小インスタンス数
スケーリンググループ内の現在のインスタンス数がこの値より少ない場合、Auto Scaling は自動的にインスタンスを追加してこの最小値に達します。本例では、最低でも 1 台のインスタンス(ECS01)が稼働することを保証するために、このパラメーターを 1 に設定します。
最大インスタンス数
スケーリンググループ内の現在のインスタンス数がこの値を超える場合、Auto Scaling は自動的にインスタンスを削除してこの最大値に収めます。本例では、ECS01 に加えて最大 1 台の追加インスタンスを許容できるよう、このパラメーターを 2 に設定します。
デフォルトのクールダウン時間 (秒)
スケーリングアクティビティ終了後の一定期間内は、CloudMonitor からの他のスケーリングトリガーを無視します。本例では、このパラメーターを 0 に設定します。実際の要件に応じて、この値を調整してください。
VPC および VSwitch の選択
ECS01 インスタンスが配置されている VPC および vSwitch を選択します。
SLB ALB、NLB、GWLB サーバーグループを関連付ける
サーバーグループを選択し、ポートおよび重みを設定します。
残りのオプションを必要に応じて設定し、作成 をクリックします。作成したスケーリンググループは、スケーリンググループ管理 ページで確認できます。
手順 2:スケーリング設定の作成
スケーリンググループ管理 ページで、対象のスケーリンググループを見つけ、詳細 をクリックします(操作 列)。次に、インスタンスの設定ソース タブで、スケーリング設定 を選択します。
スケーリング設定 タブで、スケーリング設定の作成 をクリックします。以下の表では、主なパラメーターについて説明します。その他のパラメーターについては、「スケーリング設定の作成」をご参照ください。
パラメーター
説明
課金方法
ECS インスタンスの課金方法です。本例では、Pay-as-you-go を使用します。
イメージの選択
先に作成した ECS01 インスタンスのカスタムイメージを選択します。
インスタンス設定モード
本例では、インスタンスタイプを指定 を使用します。
インスタンスタイプの選択
ECS01 インスタンスと同じインスタンスタイプを選択します。
セキュリティグループ
ECS01 インスタンスが属するセキュリティグループを選択します。
設定を完了したら、作成 をクリックし、続いて 作成する をクリックします。
スケーリング設定の作成 ダイアログボックスで、適応 をクリックし、表示されるダイアログボックスでスケーリング設定およびスケーリンググループを有効化します。
手順 3:スケーリングルールの作成
スケーリンググループ管理 ページで、対象のスケーリンググループを見つけ、詳細 をクリックします(操作 列)。次に、スケーリングルールとアラートタスク タブで、スケーリングルール タブをクリックします。
スケールアウトルールの作成: スケーリングルール タブで、スケーリングルールの作成 をクリックします。以下の表に従ってパラメーターを設定します。その他のパラメーターについては、「スケーリングルールの設定」をご参照ください。設定完了後、OK をクリックします。
パラメーター
説明
ルールの名前
任意の名前を入力します(例:
auto-add-1-instance)。ルールタイプ
シンプルスケーリングルール を選択します。
スケーリングアクティビティ
1 台のインスタンスを追加 を選択します。
スケールインルールの作成: スケーリングルール タブで、スケーリングルールの作成 をクリックします。以下の表および業務要件に従ってパラメーターを設定します。設定完了後、OK をクリックします。
パラメーター
説明
ルールの名前
任意の名前を入力します(例:
auto-remove-1-instance)。ルールタイプ
シンプルスケーリングルール を選択します。
スケーリングアクティビティ
1 台のインスタンスを削除 を選択します。
手順 4:イベント駆動型タスクの作成および関連付け
左側のナビゲーションウィンドウで、イベント駆動型タスク をクリックします。
警告タスク ページで、システムモニタリング タブをクリックし、続いて アラームタスクの作成 をクリックします。
スケールアウトタスクの作成: アラームタスクの作成 ダイアログボックスで、以下の表に従ってパラメーターを設定します。その他のパラメーターについては、「イベント駆動型タスクの管理」をご参照ください。設定完了後、OK をクリックします。
パラメーター
説明
名前
任意の名前を入力します(例:
auto-add-task)。リソースのモニタリング
手順 1 で作成したスケーリンググループを選択します。
アラートメトリックの説明
(Agent) CPU 使用率、最大値 >= 60% を選択します。
統計サイクル
1 分 を選択します。
アラーム発報までの回数
1 回 を選択します。
アラート後にルールを実行する
手順 3 で作成したスケールアウトルールを選択します。
スケールインタスクの作成: アラームタスクの作成 ダイアログボックスで、以下の表および業務要件に従ってパラメーターを設定します。設定完了後、OK をクリックします。
パラメーター
説明
名前
任意の名前を入力します(例:
auto-remove-task)。リソースのモニタリング
手順 1 で作成したスケーリンググループを選択します。
アラートメトリックの説明
(Agent) CPU 使用率、最大値 <= 30% を選択します。
統計サイクル
1 分 を選択します。
アラーム発報までの回数
1 回 を選択します。
アラート後にルールを実行する
手順 3 で作成したスケールインルールを選択します。
手順 5:既存のインスタンスの追加
Auto Scaling は、既存のサーバーをモニタリングしてスケーリングアクティビティをトリガーします。そのため、モニタリング対象とするために、既存のインスタンスをスケーリンググループに追加する必要があります。
スケーリンググループ管理 ページで、対象のスケーリンググループを見つけ、詳細 をクリックします(操作 列)。次に、インスタンス タブをクリックし、続いて 手動で追加済み タブをクリックします。
既存の ECS インスタンスを追加 をクリックし、ECS01 インスタンスを選択して、追加 をクリックします。
手動で追加済み タブで、ECS01 インスタンスが正常に追加されたことを確認します。
手順 6:自動スケーリングの検証
ストレステストツールを使用して、ECS01 インスタンスの CPU 使用率を 60 % 超に引き上げます。これによりスケールアウトのイベント駆動型タスクがトリガーされ、コンソール上で新しい ECS インスタンスが自動的に追加されることを確認できます。ストレステスト終了後、ECS01 の CPU 使用率が 30 % 未満に低下すると、スケールインタスクがトリガーされて、先ほど追加したインスタンスが削除されます。
ECS01 インスタンスにログインし、以下のコマンドを実行して stress ツールをインストールします。
sudo yum install -y epel-release sudo yum install -y stress以下のコマンドを実行して、ECS01 インスタンスに対して 60 秒間のストレステストを実行します。
sudo stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 60s &警告タスク ページに戻ります。数分後、タスクの ステータス が アラート に変更されます。
スケーリンググループ管理 ページに移動します。インスタンス/容量 列で、インスタンスの総数 が 1 増加していることを確認します。これにより、新しい ECS インスタンスがスケーリンググループに追加されたことが確認できます。
ALB コンソール にログインします。
左側のナビゲーションウィンドウで、 の順に選択します。
対象のサーバーグループの ID をクリックし、バックエンドサーバー タブをクリックします。2 台のバックエンドサーバーが表示されます。名前が
ESS-XXのような形式のインスタンスは、Auto Scaling によって自動的に追加された ECS インスタンスです。60 秒間のストレステストが完了した後、Auto Scaling コンソールおよび Application Load Balancer コンソールに再度ログインして、新たに追加されたインスタンスが自動的に削除されたことを確認できます。
参考文献
Auto Scaling の詳細については、「Auto Scaling とは」をご参照ください。
定期タスクを活用してサーバー台数を自動調整する方法については、「定期タスクを用いたスケーリンググループのインスタンス数の設定」をご参照ください。
CloudMonitor のメトリックをトリガーとしてさまざまなスケーリングルールを実行することで、メトリックベースのスケーリングや予測スケーリングといった高度な機能を実現できます。詳細については、「スケーリングルールの設定」をご参照ください。