Auto Scaling は、Application Load Balancer (ALB) のサーバーグループから取得したバックエンドサーバーあたりの QPS メトリクスを使用して、ECS または Elastic Container Instance (ECI) インスタンスを自動的に追加または削除するスケーリングアクティビティをトリガーできます。
基本概念
-
Application Load Balancer (ALB):高い弾力性と大規模な処理能力を備えた、HTTP、HTTPS、QUIC トラフィック向けのアプリケーション層ロードバランシングサービスです。詳細については、「Application Load Balancer とは」をご参照ください。
-
QPS (Query per Second、秒間クエリ数):ALB インスタンスが 1 秒間に処理する HTTP/HTTPS リクエストの数 (レイヤー 7 リスナーのみ) です。バックエンドサーバーあたりの QPS = ALB の合計 QPS / サーバーグループ内のバックエンドインスタンス数。
ユースケース
ALB がクライアントトラフィックをバックエンドの ECS または ECI インスタンスに分散する際、QPS が急増した場合は、パフォーマンスと安定性を維持するために迅速なスケールアウトが必要になります。
バックエンドサーバーあたりの QPS メトリクスに基づくイベントトリガー型タスクを設定することで、スケーリングアクティビティを自動的にトリガーできます。
-
バックエンドサーバーあたりの QPS がしきい値を超えた場合、スケールアウトによってインスタンスが追加され、インスタンスあたりの負荷が軽減され、応答時間が改善されます。
-
バックエンドサーバーあたりの QPS がしきい値を下回った場合、スケールインがインスタンスを削除し、コストを削減します。
前提条件
-
RAM ユーザーを使用する場合は、ALB リソースを管理するための権限を付与してください。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
-
VPC と vSwitch が作成されていること。詳細については、「VPC と vSwitch の作成」をご参照ください。
ステップ 1:Application Load Balancer の設定
-
Application Load Balancer (ALB) インスタンスを作成します。
詳細については、「ALB インスタンスの作成と管理」をご参照ください。
主要なパラメータ:
パラメータ
説明
例
[インスタンス名]
インスタンスの名前を入力します。
alb-qps-instance
VPC
インスタンスの VPC を選択します。
vpc-test****-001
[ゾーン]
ゾーンと vSwitch を選択します。
説明ALB はマルチゾーンデプロイをサポートしています。利用可能な場合は、高可用性を確保するために少なくとも 2 つのゾーンを選択してください。
-
ゾーン:杭州ゾーン G と杭州ゾーン H
-
vSwitch:vsw-test003 と vsw-test002
-
-
ALB サーバーグループを作成します。
詳細については、「サーバーグループの作成と管理」をご参照ください。
主要なパラメータ:
パラメータ
説明
例
[サーバーグループのタイプ]
サーバーグループタイプを選択します。ECI インスタンスをバックエンドサーバーとして追加するには、[サーバー] を選択します。
サーバー
サーバーグループ名
サーバーグループの名前を入力します。
alb-qps-servergroup
VPC
VPC を選択します。この VPC 内のサーバーのみがサーバーグループに参加できます。
重要ステップ 1 で ALB インスタンスに使用したものと同じ VPC を選択してください。
vpc-test****-001
-
リスナーを設定します。
-
左側のナビゲーションバーで、 を選択します。
-
インスタンス ページで、ALB インスタンス (alb-qps-instance) を見つけ、操作 列の リスナーの作成 をクリックします。
-
[リスナーの設定] ウィザードで、[リスナーポート] を 80 に設定し、他のパラメーターはデフォルト設定のままにして、次へ をクリックします。
説明この例では、[リスナーポート] を 80 に設定します。必要に応じて、別のポートを使用してください。
-
[サーバーグループの選択] ウィザードで、[サーバーグループ] リストからサブステップ 2 で作成したサーバーグループ (alb-qps-servergroup) を選択し、次へ をクリックします。
-
[設定確認] ウィザードで設定を確認し、 送信 をクリックします。その後、 [OK] をクリックします。
-
-
設定が完了したら、インスタンスの詳細 タブをクリックして、ALB インスタンスの Elastic IP アドレス (EIP) を取得します。インスタンスの詳細 タブでは、インスタンスの詳細 が インスタンスの詳細 であり、各ゾーンに インスタンスの詳細 が割り当てられていることを確認できます。たとえば、杭州ゾーン G と杭州ゾーン H には、それぞれ一意の EIP があります。
ステップ 2:スケーリンググループの作成と ALB サーバーグループの関連付け
この例では、ECI スケーリンググループを使用します。ECS スケーリンググループの手順も同様です。
-
スケーリンググループを作成します。
詳細については、「スケーリンググループの作成」をご参照ください。主要なパラメータ (その他は必要に応じて設定):
パラメータ
説明
例
[スケーリンググループ名]
スケーリンググループの名前を入力します。
alb-qps-scalinggroup
[タイプ]
スケーリンググループ内のコンピューティングリソースのインスタンスタイプです。
ECI
[インスタンス設定ソース]
インスタンスの作成に使用する設定です。
[ゼロから作成]
[最小インスタンス数]
Auto Scaling は、インスタンス数がこの値を下回ると、インスタンスを追加します。
1
[最大インスタンス数]
Auto Scaling は、インスタンス数がこの値を超えると、インスタンスを削除します。
5
[VPC]
ALB インスタンスと同じ VPC を選択します。
vpc-test****-001
[VSwitch の選択]
ALB インスタンスと同じ vSwitch を選択します。
vsw-test003 と vsw-test002
ALB および NLB サーバーグループの関連付け
ステップ 1 で作成した ALB サーバーグループを選択します。ポートを 80 に設定します。
-
サーバーグループ:sgp-****/alb-qps-servergroup
-
ポート:80
-
-
スケーリング設定を作成して有効化します。
詳細については、「ECI インスタンスのスケーリング設定の作成」をご参照ください。主要なパラメータ (その他は必要に応じて設定):
パラメータ
説明
例
[コンテナーグループの設定]
コンテナグループの vCPU とメモリの仕様を選択します。
-
CPU:2 vCPU
-
メモリ:4 GiB
[コンテナーの設定]
コンテナイメージとイメージバージョンを選択します。
-
コンテナイメージ:registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx
-
イメージバージョン:latest
-
-
スケーリンググループを有効化します。
詳細については、「スケーリンググループの有効化または無効化」をご参照ください。
説明スケーリンググループを有効化すると、スケールアウトがトリガーされ、1 つの ECI インスタンスが作成されます (最小数が 1 に設定されているため)。
-
スケーリンググループ内で ECI インスタンスとそのコンテナが実行されていることを確認します。
-
手順1 から ALB インスタンスの EIP にアクセスし、
nginxサービスにアクセスできることを確認します。デフォルトの nginx ウェルカムページ (Welcome to nginx!) は、デプロイが成功したことを示しています。
ステップ 3:QPS ベースのイベントトリガー型タスクの設定
Auto Scalingコンソールにログインします。
-
スケーリングルールを作成します。
インスタンスを 1 つ追加する「Add1」と、インスタンスを 1 つ削除する「Reduce1」の 2 つのシンプルなスケーリングルールを作成します。詳細については、「スケーリングルールの管理」をご参照ください。
-
イベントトリガー型タスクを作成します。
-
スケーリンググループ ページで、スケーリンググループ (alb-qps-scalinggroup) を見つけ、操作 列の 詳細の表示 をクリックします。
-
を選択し、アラームタスクの作成 をクリックします。
「Add1」に関連付けられた「Alarm1」と、「Reduce1」に関連付けられた「Alarm2」の 2 つのイベントトリガー型タスクを作成します。詳細については、「イベントトリガー型タスクの管理」をご参照ください。
-
イベントトリガー型タスク (アラーム 1): [メトリック名] には (ALB) サーバーグループのスタンドアロン QPS を選択し、条件を [平均 >= 100 回/秒] に設定します。
説明バックエンドサーバーあたりの QPS = 合計 QPS / バックエンドサーバー数
その他のパラメータについては、[監視タイプ] を [システム監視] に、[統計期間] を [1 分] に設定します。タスクが [3] 回連続して発生した後にアラームをトリガーするように設定します。[有効期間] では、[設定なし] を選択します。[スケーリングルール] では、[Add1] を選択します。
-
イベントトリガー型タスク (アラーム 2): [メトリック名] に (ALB) サーバーグループのスタンドアロン QPS を選択します。条件を [平均値 < 50 回/秒]、[統計期間] を [1 分] とし、[3] 回連続で発生した場合にアラームをトリガーするように設定します。[スケーリングルール] に [Reduce1] を選択します。
-
-
QPS 監視の検証
ストレス テスト ツール (Apache JMeter、ApacheBench、または wrk) を使用して ステップ 1 から ALB インスタンス EIP に 500 QPS を送信し、Auto Scaling コンソールの モニタリング ページで結果を観察します。
QPS がアラームしきい値を超えると、イベントトリガー型タスクがスケールアウトをトリガーします。Auto Scaling は、インスタンス数が設定された最大値 (この例では 5) に達するまで ECI インスタンスを 1 つずつ追加します。インスタンス数が増えるにつれて、各インスタンスが処理する負荷は軽減されます。