Auto Scaling は、Application Load Balancer (ALB) のサーバーグループ内の Elastic Compute Service (ECS) インスタンスを自動的に追加または削除します。イベントトリガータスクを作成することで、リアルタイムのメトリクスに基づいて ECS インスタンスを動的にスケーリングし、コストを削減しながら高可用性を確保します。
例
ニュースサイトが速報を公開すると、ページビュー (PV) が急増し、現在のサーバーのキャパシティを超え、リクエストに応答できなくなる可能性があります。ニュースが落ち着くとトラフィックは通常に戻りますが、これらの変動は予測不可能であり、手動での管理は困難です。
これに対処するために、CloudMonitor を使用して CPU 使用率などのリソース使用量を追跡するイベントトリガータスクを作成できます。これにより、システムは ALB のサーバーグループ内の ECS インスタンスを自動的に追加または削除します。スケーリンググループが ALB のサーバーグループに関連付けられると、スケーリングアクティビティが同期され、トラフィック量とヘルスチェックのステータスに基づいて、リクエストが ECS インスタンスに分散されます。
次の例では、ALB は転送ルールに基づいてリクエストを ECS01 に分散します。ECS01 の CPU 使用率が指定されたしきい値に達すると、新しい ECS インスタンスが作成されてサーバーグループに追加されます。CPU 使用率がしきい値を下回ると、インスタンスは削除・解放されます。
前提条件
-
少なくとも 1 つの ALB インスタンスが作成され、ステータスが 実行中 であること。詳細については、「ALB インスタンスの作成と管理」をご参照ください。
-
ALB インスタンス用にサーバーグループが作成され、ECS インスタンスがサーバーグループに追加されていること。サーバーグループのステータスが 利用可能 であること。この例では、サーバーグループ名は RS1、ECS インスタンス名は ECS01 です。
-
ECS01 のカスタムイメージが作成されていること。詳細については、「インスタンスからのカスタムイメージの作成」をご参照ください。
-
ALB インスタンスのヘルスチェックが有効になっていること。詳細については、「ヘルスチェックの設定と管理」をご参照ください。
-
ALB インスタンスに対して少なくとも 1 つのリスナーが作成されていること。詳細については、「HTTP リスナーの追加」をご参照ください。
-
ALB インスタンスとスケーリンググループが同じ Virtual Private Cloud (VPC) にデプロイされていること。
ステップ 1:スケーリンググループの作成
Auto Scalingコンソールにログインします。
左側のナビゲーションウィンドウで、スケーリンググループをクリックします。
上部のナビゲーションバーで、リージョンを選択します。
-
スケーリンググループ ページで、スケーリンググループの作成 ボタンをクリックして、スケーリンググループの作成 ページに移動します。
-
次のパラメーターを設定します。詳細な手順については、「ECS スケーリンググループの作成」をご参照ください。
パラメーター
説明
[インスタンス設定ソース]
新規作成 を選択します。
[最小インスタンス数]
インスタンス数がこの値を下回ると、Auto Scaling は自動的にスケールアウトします。この例では、1 を選択します。これは、少なくとも 1 つの ECS インスタンスが必要であることを意味します。
[最大インスタンス数]
インスタンス数がこの値を超えると、Auto Scaling は自動的にスケールインします。この例では、2 を選択します。これは、サーバーグループに最大でさらに 1 つの ECS インスタンスを追加できることを意味します。
[デフォルトのクールダウン時間 (秒)]
スケーリングアクティビティが完了してから、新しいスケーリングアクティビティがトリガーされなくなるまでの期間です。このパラメーターは、イベントトリガータスクにのみ適用されます。この例では、0 を選択します。ビジネス要件に基づいて値を指定してください。
[VPC] と [VSwitch の選択]
ECS01 の VPC と vSwitch を選択します。
[SLB ALB、NLB、GWLB サーバーグループを関連付ける]
サーバーグループを選択し、ポートと重みを指定します。
-
ビジネス要件に基づいて他のパラメーターを設定し、作成 をクリックします。スケーリンググループ管理 ページでスケーリンググループを表示できます。
ステップ 2:スケーリンググループのスケーリング設定の作成
-
スケーリンググループ管理 ページで、操作 列の 詳細 をクリックします。インスタンスの設定ソース タブで、スケーリング設定 をクリックします。
-
スケーリング設定 タブで、スケーリング設定の作成 をクリックしてパラメーターを設定します。次の表に、一部のパラメーターを示します。他のパラメーターは、「スケーリング設定の作成 (ECS インスタンス)」を参照して設定してください。
パラメーター
説明
[課金方法]
ECS インスタンスの課金方法を選択します。この例では、Pay-as-you-go を選択します。
[イメージの選択]
この例では、ECS01 のカスタムイメージを選択します。
[インスタンス設定モード]
この例では、[インスタンスタイプの指定] を選択します。
[インスタンスタイプの選択]
この例では、ECS01 のタイプを選択します。
[セキュリティグループ]
この例では、ECS01 のセキュリティグループを選択します。
-
作成 をクリックします。スケーリング設定のプレビューメッセージで、作成する をクリックします。
-
[「The scaling configuration is created」]ダイアログボックスで、適応 をクリックして、設定とスケーリンググループを有効にします。
ステップ 3:スケーリングルールの作成
-
スケーリンググループ管理 ページで、管理するスケーリンググループを探し、操作 列の 詳細 をクリックします。スケーリングルールとアラートタスク タブで、スケーリングルール タブをクリックします。
-
自動スケールアウトルールを作成します。スケーリングルール タブで、スケーリングルールの作成 をクリックし、次の表に基づいて一部のパラメーターを設定し、「スケーリングルールの設定」を参照して他のパラメーターを設定してから、OK をクリックします。
パラメーター
説明
[ルールの名前]
スケーリングルールの名前 (例:1 つの ECS インスタンスを自動的に追加) を入力します。
[ルールタイプ]
この例では、シンプルスケーリングルール を選択します。
[スケーリングアクティビティ]
この例では、[1 個のインスタンスを追加] を選択します。
-
自動スケールインルールを作成します。スケーリングルール タブで、スケーリングルールの作成 をクリックし、次のパラメーターを設定して、OK をクリックします。
パラメーター
説明
[ルールの名前]
スケーリングルールの名前 (例:1 つの ECS インスタンスを自動的に削除) を入力します。
[ルールタイプ]
この例では、シンプルスケーリングルール を選択します。
[スケーリングアクティビティ]
この例では、[1 個のインスタンスを削除] を選択します。
ステップ 4:イベントトリガータスクの作成とスケーリングルールへの関連付け
-
左側メニューで、 を選択します。
-
警告タスク ページの システムモニタリング タブで、アラームタスクの作成 をクリックします。
-
自動スケールアウトをトリガーするイベントトリガータスクを作成します。アラームタスクの作成 をクリックします。表示されたダイアログボックスで、次の表に基づいて一部のパラメーターを設定し、「イベントトリガータスクの設定」を参照して他のパラメーターを設定し、OK をクリックします。
パラメーター
説明
[名前]
タスクの名前 (例:1 つの ECS インスタンスを自動的に追加) を入力します。
[リソースのモニタリング]
ステップ 1 で作成したスケーリンググループを選択します。
[アラートメトリックの説明]
この例では、アラート条件は [(エージェント) CPU 使用率、最大 (最大) >= 60%] に設定されています。
[統計サイクル]
この例では、1 分 を選択します。
[アラーム発報までの回数]
この例では、[1 回] を選択します。
[アラート後にルールを実行する]
ステップ 3 で作成した自動スケールアウトルールを選択します。
-
自動スケールインをトリガーするイベントトリガータスクを作成します。アラームタスクの作成 をクリックします。表示されたダイアログボックスで、パラメーターを設定し、OK をクリックします。次の表に、一部のパラメーターを示します。
パラメーター
説明
[名前]
タスクの名前 (例:1 つの ECS インスタンスを自動的に削除) を入力します。
[リソースのモニタリング]
ステップ 1 で作成したスケーリンググループを選択します。
[アラートメトリックの説明]
この例では、アラート条件は [(エージェント) CPU 使用率、最大 (最大) <= 30%] に設定されています。
[統計サイクル]
この例では、1 分 を選択します。
[アラーム発報までの回数]
この例では、[1 回] を選択します。
[アラート後にルールを実行する]
ステップ 3 で作成した自動スケールインルールを選択します。
ステップ 5:スケーリンググループへの ECS インスタンスの追加
Auto Scaling がバックエンドサーバーを監視および調整できるようにするには、ターゲットの ECS インスタンスをスケーリンググループに追加する必要があります。
-
スケーリンググループ管理 ページで、管理するスケーリンググループを探し、操作 列の 詳細 をクリックします。インスタンス タブで、手動で追加済み タブをクリックします。
-
次に、既存の ECS インスタンスを追加 をクリックします。表示されたページで、ECS01 を選択し、追加 をクリックします。
-
手動で追加済み タブで ECS01 を表示できます。
ステップ 6:バックエンドサーバーの自動追加・削除のテスト
負荷テストツールを使用して ECS01 の CPU 使用率を 60% まで上昇させ、スケールアウトタスクをトリガーします。その後、ALB コンソールで、新しい ECS インスタンスがサーバーグループに追加されたことを確認します。負荷テストが終了し、CPU 使用率が 30% 以下になると、スケールインタスクによってインスタンスが自動的に削除されることを確認します。
-
ECS01 にログインし、次のコマンドを実行して負荷テストツールをインストールします。
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形式で名前が付けられた ECS インスタンスは、Auto Scaling によって追加されたものです。 -
60 秒間の負荷テストが終了した後、Auto Scaling と ALB のコンソールにログインして、ECS インスタンスがサーバーグループから自動的に削除されたかどうかを確認できます。
関連ドキュメント
-
Auto Scaling の詳細については、「Auto Scaling とは」をご参照ください。
-
Auto Scaling は、サーバーを自動的にスケーリングできるスケジュールされたタスクをサポートしています。詳細については、「スケジュールされたタスクを使用したインスタンス数の設定」をご参照ください。
-
Auto Scaling は CloudMonitor と統合されており、監視メトリクスと予測値に基づいたリソースのスケーリングをサポートしています。詳細については、「スケーリングルールの設定」をご参照ください。