Auto Scaling は、システム監視タイプのイベントトリガータスクのトリガー条件として、バックエンドサーバーごとの (ALB) QPS システムメトリックを提供します。これにより、ECS インスタンスと Elastic Container Instance の自動スケーリングが可能になります。このトピックでは、バックエンドサーバーごとの (ALB) QPS システムメトリックを使用して、Elastic Container Instance の自動スケーリングを有効にする方法について説明します。
概念
Application Load Balancer (ALB) は、アプリケーション層で動作し、HTTP、HTTPS、QUIC (Quick UDP Internet Connections) などのさまざまなプロトコルをサポートする Alibaba Cloud サービスです。 ALB は高い弾力性を備えており、アプリケーション層で大量のネットワークトラフィックを処理できます。詳細については、「ALB とは」をご参照ください。
1 秒あたりのクエリ数 (QPS) は、ALB が 1 秒あたりに処理できる HTTP または HTTPS クエリまたはリクエストの数を測定します。このメトリックは、レイヤー 7 リスナーに固有のものです。バックエンドサーバーごとの (ALB) QPS は、サーバーのサービスパフォーマンスを評価するために使用されるメトリックです。このメトリックの値は、次の式を使用して計算されます。バックエンドサーバーごとの QPS = ALB が 1 秒あたりに受信するクライアントリクエストの総数 / ALB バックエンドサーバーグループの ECS インスタンスまたは Elastic Container Instance の総数。
シナリオ
ALB インスタンスを使用してクライアントリクエスト (または QPS) を一元的に受信する場合、クライアントリクエストは処理のためにバックエンドサーバーに転送されます。バックエンドサーバーは、ECS インスタンスまたは Elastic Container Instance にすることができます。クライアントリクエストの数が増加した場合、ビジネスシステムは、ビジネスをスムーズかつ安定的に実行し続けるために、バックエンドサーバーを俊敏にスケールアウトする必要があります。
この場合、バックエンドサーバーごとの (ALB) QPS メトリックをアラートトリガー条件として使用するイベントトリガータスクを作成して、バックエンドサーバーの自動スケーリングを有効にすることができます。このソリューションは、ビジネスアプリケーションの高可用性を向上させます。このソリューションには、次の利点があります。
バックエンドサーバーごとの (ALB) QPS メトリックの値が指定されたしきい値を超えると、Auto Scaling はスケールアウトイベントをトリガーしてバックエンドサーバーの数を増やし、各バックエンドサーバーのワークロードを削減します。これにより、システムの応答時間と安定性が向上します。
バックエンドサーバーごとの (ALB) QPS メトリックの値が指定されたしきい値を下回ると、Auto Scaling はスケールインイベントをトリガーしてバックエンドサーバーの数を減らし、コスト効率を向上させます。
前提条件
Resource Access Management (RAM) ユーザーを使用する場合は、ALB リソースを表示および管理する権限が RAM ユーザーに付与されます。詳細については、「Alibaba Cloud RAMの使用」をご参照ください。
少なくとも 1 つの仮想プライベートクラウド (VPC) と 1 つの vSwitch が作成されています。詳細については、「IPv4 CIDR ブロックを使用して VPC を作成する」をご参照ください。
ステップ 1: ALB インスタンスを構成する
ALB インスタンスを作成します。
詳細については、「ALB インスタンスを作成および管理する」をご参照ください。
次の表に、ALB インスタンスの作成に必要なパラメーターを示します。
パラメーター
説明
例
[インスタンス名]
ALB インスタンスの名前を入力します。
alb-qps-instance
[VPC]
ALB インスタンスの VPC を選択します。
vpc-test****-001
[ゾーン]
ALB インスタンスのゾーンと vSwitch を選択します。
説明ALB はゾーンをまたがるデプロイメントをサポートしています。 指定したリージョンで 2 つ以上のゾーンが使用可能な場合は、高可用性を確保するために少なくとも 2 つのゾーンを選択してください。
ゾーン:杭州ゾーン G と杭州ゾーン H。
vSwitch:vsw-test003 と vsw-test002。
ALB インスタンスを作成します。
詳細については、「サーバーグループを作成および管理する」をご参照ください。
次の表に、ALB インスタンスの作成に必要なパラメーターを示します。
パラメーター
説明
例
[サーバーグループの種類]
作成するサーバーグループのタイプを指定します。[サーバー] という値は、サーバーグループにエラスティックコンテナインスタンスが含まれていることを指定します。
サーバー
サーバーグループ名
サーバーグループの名前を入力します。
alb-qps-サーバーグループ
VPC
VPC ドロップダウンリストから VPC を選択します。サーバーグループには、VPC 内にあるサーバーのみを追加できます。
重要このステップでは、「ステップ 1」で指定されている VPC を選択します。
vpc-test****-001
ALB インスタンスのリスナーを設定します。
左側のナビゲーションウィンドウで、
を選択します。[インスタンス] ページで、名前が lb-qps-instance の ALB インスタンスを見つけ、[アクション] 列の [リスナーの作成] をクリックします。
Server Load Balancer の設定ウィザードの [リスナーの設定] ステップで、[リスナーポート] パラメーターを 80 に設定し、その他のパラメーターのデフォルト設定を保持し、[次へ] をクリックします。
説明ビジネス要件に基づいて、[リスナーポート] パラメーターに別のポート番号を指定できます。この例では、ポート番号 80 を使用しています。
Server Load Balancer の設定ウィザードの [サーバーグループの選択] ステップで、サーバーグループ フィールドの下にある サーバータイプ を選択し、ステップ 2 で作成した名前が alb-qps-servergroup のサーバーグループを選択し、[次へ] をクリックします。
Server Load Balancer の設定ウィザードの [設定の確認] ステップで、パラメーター設定を確認し、[送信] をクリックします。表示されるメッセージで、[OK] をクリックします。
構成が完了したら、[インスタンスの詳細] タブをクリックして、ALB インスタンスの Elastic IP アドレス (EIP) を取得します。
ステップ 2: ALB サーバーグループのスケーリンググループを作成する
ECS タイプのスケーリンググループを作成する手順は、Elastic Container Instance タイプのスケーリンググループを作成する手順とは異なります。スケーリンググループを作成するときに表示されるパラメーターが優先されます。このステップでは、Elastic Container Instance タイプのスケーリンググループが作成されます。
スケーリンググループを作成します。
詳細については、「スケーリンググループを作成する」をご参照ください。次の表に、スケーリンググループの作成に必要なパラメーターを示します。次の表に記載されていないパラメーターは、ビジネス要件に基づいて設定できます。
パラメーター
説明
例
[スケーリンググループ名]
スケーリンググループの名前を入力します。
alb-qps-scalinggroup
[タイプ]
計算能力を提供するためにスケーリンググループによって管理されるインスタンスのタイプを指定します。
ECI
[インスタンス構成ソース]
Auto Scaling は、インスタンス構成ソース パラメーターの値に基づいてインスタンスを作成します。
新規作成
[インスタンスの最小数]
Elastic Container Instance の合計数が下限より少ない場合、Auto Scaling は Elastic Container Instance の合計数が下限に達するまで、スケーリンググループに Elastic Container Instance を自動的に作成します。
1
[インスタンスの最大数]
Elastic Container Instance の合計数が上限を超えると、Auto Scaling は Elastic Container Instance の合計数が上限を下回るまで、スケーリンググループから Elastic Container Instance を自動的に削除します。
5
[VPC]
ALB インスタンスが存在する VPC を選択します。
vpc-test****-001
[vSwitch]
ALB インスタンスによって使用される vSwitch を選択します。
この例では、vsw-test003 と vsw-test002 が選択されています。
[ALB および NLB サーバーグループを関連付ける]
ステップ 1 で作成した ALB サーバーグループを選択します。次に、ポート 80 を入力します。
サーバーグループ: sgp-****/alb-qps-servergroup.
ポート: 80.
スケーリング設定を作成して有効にします。
詳細については、「Elastic Container Instance タイプのスケーリング設定を作成する」をご参照ください。次の表に、スケーリング設定の作成に必要なパラメーターを示します。次の表に記載されていないパラメーターは、ビジネス要件に基づいて設定できます。
パラメーター
説明
例
[コンテナグループ設定]
コンテナグループの仕様を選択します。仕様には、vCPU の数とメモリサイズが含まれます。
vCPU: 2 vCPUs
メモリ: 4 GiB
[コンテナ設定]
コンテナイメージとイメージタグを選択します。
コンテナイメージ: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx.
イメージタグ: latest.
スケーリンググループを有効にします。
詳細については、「スケーリンググループを有効または無効にする」をご参照ください。
説明この例では、最小インスタンス数1 パラメーターは に設定されています。この場合、スケーリンググループを有効にした後、Auto Scaling は 1 つの Elastic Container Instance を作成するためのスケールアウトイベントを自動的にトリガーします。
Elastic Container Instance とインスタンス上で実行されているコンテナのステータスを確認し、コンテナが想定どおりに実行されていることを確認します。
ステップ 1 で作成した ALB インスタンスの EIP にアクセスし、
nginx
に想定どおりにアクセスできるかどうかを確認します。
ステップ 3:(ALB)バックエンドサーバーごとの QPS メトリックに基づいてイベント駆動タスクを作成する
Auto Scaling コンソール にログインします。
スケーリングルールを作成します。
この例では、2 つのスケーリングルールが作成されます。Add1 という名前の 1 つのスケールアウトルールは、1 つの Elastic Container Instance を追加するために使用されます。Reduce1 という名前の 1 つのスケールインルールは、スケーリンググループから 1 つの Elastic Container Instance を削除するために使用されます。詳細については、「スケーリングルールを設定する」をご参照ください。
イベント駆動タスクを作成します。
[スケーリンググループ] ページで、alb-qps-scalinggroup という名前のスケーリンググループを見つけ、[アクション] 列の [詳細] をクリックします。
を選択し、[イベント駆動タスクの作成] をクリックします。
この例では、2 つのイベント駆動タスクが作成されます。Alarm1 という名前の 1 つのイベント駆動タスクは、Add1 をトリガーするために使用されます。Alarm2 という名前のもう 1 つのイベント駆動タスクは、Reduce1 をトリガーするために使用されます。詳細については、「イベント駆動タスクを管理する」をご参照ください。
Alarm1 を作成する場合は、[(ALB)バックエンドサーバーごとの QPS] メトリックを選択し、次のアラートトリガー条件を指定します。[平均(平均) >= 100 カウント/秒]。
説明バックエンドサーバーごとの QPS = 合計 QPS ÷ Elastic Container Instance の総数
Alarm2 を作成する場合は、[(ALB)バックエンドサーバーごとの QPS] メトリックを選択し、次のアラートトリガー条件を指定します。[平均(平均) < 50 カウント/秒]。
監視効果を確認する
Apache JMeter、ApacheBench、wrk などのストレステストツールを使用して、手順 1 で作成した ALB インスタンスの EIP に対してストレステストを実行できます。ストレステストを設定する際は、QPS 値が 500 に達するシナリオをシミュレートできます。テスト中は、Auto Scaling [監視] タブで次の傾向を確認できます。
QPS 値がアラートのしきい値を超えると、スケールアウトイベントの監視タスクがトリガーされ、エラスティックコンテナインスタンスが追加されます。新しいエラスティックコンテナインスタンスが追加されるたびに、各インスタンスのワークロードが軽減され、QPS 値が減少します。