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