Auto Scaling は、Application Load Balancer (ALB) サーバーグループの「バックエンドサーバーあたりの QPS」メトリックを使用して、ECS または 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) を取得します。[基本情報] タブで、[IPモード] が [固定IP] であり、各ゾーンに [Elastic IPアドレス] が割り当てられていることを確認できます。たとえば、杭州ゾーン 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
スケーリンググループを有効化します。
詳細については、「スケーリンググループの有効化または無効化」をご参照ください。
説明スケーリンググループを有効にすると、スケールアウトがトリガーされ、ECI インスタンスが 1 つ作成されます (最小インスタンス数が 1 に設定されているため)。
ECI インスタンスとそのコンテナがスケーリンググループで実行されていることを確認します。
ステップ 1 の ALB インスタンスの EIP にアクセスして、
nginxサービスにアクセスできることを確認します。 デフォルトの nginx ウェルカムページ (Welcome to nginx!) が表示されれば、デプロイは成功です。
ステップ3:QPS ベースのイベントトリガーのタスクの設定
Auto Scaling コンソールにログインします。
スケーリングルールを作成します。
シンプルスケーリングルールとして、インスタンスを 1 つ追加する Add1 と、インスタンスを 1 つ削除する Reduce1 の 2 つを作成します。詳細については、「スケーリングルールの管理」をご参照ください。
イベントトリガーのタスクを作成します。
スケーリンググループ ページで、スケーリンググループ (alb-qps-scalinggroup) を見つけ、操作 列の 詳細の表示 をクリックします。
を選択し、アラームタスクの作成 をクリックします。
2 つのイベントトリガーのタスク (Alarm1 (Add1 に関連付け) と Alarm2 (Reduce1 に関連付け)) を作成します。詳細については、「イベントトリガーのタスクの管理」をご参照ください。
イベントトリガーのタスク (Alarm1):[メトリック名] で (ALB) サーバーグループのスタンドアロン QPS を選択します。条件を [平均 >= 100回/秒] に設定します。
説明バックエンドサーバーあたりの QPS = 合計 QPS / バックエンドサーバー数
その他のパラメーターについては、[モニタリングタイプ] を [システムモニタリング] に、[統計期間] を [1分] に設定します。タスクが [3] 回連続で発生した後にアラームをトリガーするように設定します。[有効期間] で [設定しない] を選択します。[スケーリングルール] で [Add1] を選択します。
イベントトリガーのタスク (Alarm2):[メトリック名] で (ALB) サーバーグループのスタンドアロン QPS を選択します。条件を [平均 < 50回/秒] に設定し、[統計期間] を [1分] に設定し、タスクが [3] 回連続で発生した後にアラームをトリガーするように設定します。[スケーリングルール] で [Reduce1] を選択します。
QPS モニタリングの検証
ステップ 1 から、ストレス テスト ツール (Apache JMeter、ApacheBench、または wrk) を使用して ALB インスタンスの EIP に 500 QPS を送信し、Auto Scaling コンソールの モニタリング ページで結果を観察します:
QPS がアラームのしきい値を超えると、イベントトリガーのタスクがスケールアウトをトリガーします。Auto Scaling は ECI インスタンスを一度に 1 つずつ追加し、バックエンドサーバーあたりの QPS が低下するまでインスタンスあたりの負荷を軽減します。