Application Load Balancer (ALB) のサーバーグループに対してスロースタート機能を有効にできます。この機能は、新しく追加されたバックエンドサーバーへのリクエストを段階的に増加させることで、突然のトラフィックの急増による過負荷を防ぎ、サーバーがウォームアップするための時間を確保します。
ユースケース
トラフィック量が多いシナリオでは、手動または自動でバックエンドサーバーを追加すると、ALB はヘルスチェックに合格し次第、設定された重みに従ってリクエストのルーティングを開始します。これにより、新しいサーバーに突然のトラフィックスパイクが発生し、CPU やメモリ使用率が高騰して、多数のアクセスエラーを引き起こす可能性があります。
これを防ぐために、サーバーグループのスロースタートを有効にできます。ALB は、新しいバックエンドサーバーにトラフィックを段階的にルーティングし、突然のトラフィックの急増を防ぎます。
このトピックでは、次のシナリオを使用します。インターネット向けの ALB インスタンスが中国 (杭州) リージョンにデプロイされています。このインスタンスには、HTTP リスナーと 1 台のバックエンドサーバー ECS01 があります。より多くのトラフィックを処理するために、2 台目のサーバー ECS02 を追加します。スロースタートを有効にすることで、リクエストは ECS02 に段階的に増加し、過負荷になるのを防ぎます。
注意事項
-
サーバーグループ内の既存の正常なバックエンドサーバーは、自動的にスロースタートモードに入りません。空のサーバーグループに追加された最初のバックエンドサーバーも、スロースタートモードに入りません。新しいバックエンドサーバーがスロースタートモードに入るのは、スロースタートモードでない正常なバックエンドサーバーが少なくとも 1 つあるサーバーグループに追加された場合のみです。
-
スロースタートモード中のバックエンドサーバーが削除されると、スロースタートモードを終了します。同じバックエンドサーバーが再度追加された場合、ヘルスチェックに合格した後、再びスロースタートモードに入ります。
-
スロースタートモード中のバックエンドサーバーは、ヘルスチェックに失敗するとスロースタートモードを終了します。ヘルスチェックのステータスが正常に戻った後、再びスロースタートモードに入ります。
-
ヘルスチェックが有効になっている場合、スロースタートはバックエンドサーバーがヘルスチェックに合格した後に有効になります。ヘルスチェックが無効になっている場合、スロースタートは直ちに有効になります。
前提条件
-
標準の ALB インスタンスとサーバーグループが作成済みであること。詳細については、「ALB インスタンスの作成と管理」および「サーバーグループの作成と管理」をご参照ください。
-
ALB インスタンスのリスナーを設定し、そのリスナーをサーバーグループに関連付けていること。詳細については、「HTTP リスナーの追加」をご参照ください。
-
ALB インスタンスのアクセスログが作成済みであること。詳細については、「アクセスログの作成」をご参照ください。
-
このトピックでは、2 つの ECS インスタンスを使用します。
ECS01 と ECS02 はバックエンドサーバーとして使用され、各インスタンスで異なる Nginx サービスが実行されます。詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
次の例は、ECS01 と ECS02 にテストアプリケーションをデプロイする方法を示しています。
-
ECS01 インスタンスをサーバーグループに追加済みで、ECS01 上のサービスがクライアントからアクセス可能であること。詳細については、「ALB インスタンスを使用した IPv4 サービスの迅速な負荷分散の実装」および「ALB インスタンスを使用した IPv6 サービスの迅速な負荷分散の実装」をご参照ください。
ステップ1:スロースタートの有効化
このステップでは、既存のサーバーグループでスロースタートを有効にする方法を示します。この機能は、サーバーグループの作成時に有効にすることもできます。
- ALBコンソールにログインします。
-
トップナビゲーションバーで、バックエンドサーバーがデプロイされているリージョンを選択します。このトピックでは [中国 (杭州)] を使用します。
-
左側メニューで、 を選択します。
-
サーバーグループ ページで、対象のサーバーグループを見つけ、その ID をクリックします。
-
詳細 タブの 基本設定 セクションで、 基本情報の変更 をクリックします。
-
基本情報の変更 ダイアログボックスで、 詳細設定 をクリックし、 [スロースタート] スイッチをオンにします。
-
スロースタートの持続時間 を 30 秒に設定し、 保存 をクリックします。
説明これにより、ALB は 30 秒かけて新しいバックエンドサーバーへのトラフィックを増加させます。
ステップ2:wrk を使用したクライアントトラフィックのシミュレーション
このトピックでは、Alibaba Cloud Linux 3.2104 の 64 ビット版を実行するクライアントを例として使用します。wrk ツールのインストール手順は、オペレーティングシステムによって異なる場合があります。
-
クライアントにログインし、コマンドラインインターフェイスを開きます。次のコマンドを順番に実行して wrk ツールをインストールします。
yum -y install git make gcc git clone https://github.com/wg/wrk.git yum install unzip cd wrk make -
次のコマンドを実行して、ALB バックエンドサーバー上のサービスにストレステストを実施します。
./wrk -c 1000 -d 6000s -t 3 -H "Connection:Close" http://<ALB-domain-name>パラメーター:
-
-c: connections。各スレッドで維持される同時接続数。
-
-d: duration。テストの期間。
sは秒を示します。 -
-t: threads。使用するスレッドの数。同時実行ユーザーをシミュレートします。
-
-H: header。各リクエストに追加する HTTP ヘッダー。たとえば、
-H "Connection:Close"は非持続的接続を示すヘッダーを追加します。
-
ステップ3:バックエンドサーバー ECS02 の追加
ストレステストが終了する前に、必ずバックエンドサーバーをサーバーグループに追加してください。
- ALBコンソールにログインします。
-
上部メニューで、ALB インスタンスがデプロイされているリージョンを選択します。
-
左側メニューで、 を選択します。
-
サーバーグループ ページで、対象のサーバーグループを見つけ、 操作 列の バックエンドサーバーの変更 をクリックします。
-
バックエンドサーバー タブで、 バックエンドサーバーの追加 をクリックします。
-
バックエンドサーバーの追加 パネルで、ECS02 インスタンスを選択し、 次へ をクリックします。
-
ポート/重み ウィザードで、ECS02 インスタンスのポートを 80 に設定し、デフォルトの重みである 100 は変更せずに、 OK をクリックします。
ステップ4:結果の確認
- ALBコンソールにログインします。
-
上部メニューで、ALB インスタンスがデプロイされているリージョンを選択します。
-
インスタンス ページで、対象インスタンスの ID をクリックします。
-
アクセスログ タブをクリックします。基本情報 セクションで、 保存先パス の横にあるリンクをクリックして Log Service (SLS) コンソールを開きます。以下の図は、新しいバックエンドサーバー ECS02 のトラフィックを表示する方法を示しています。
アクセスログから、スロースタート期間中にトラフィックが新しいバックエンドサーバー ECS02 に徐々に分散されることを確認できます。

番号
説明
①
新しいバックエンドサーバー ECS02 にルーティングされたトラフィックを表示するには、次のクエリを入力します。
alb-80ri6****** and upstream_addr : "10.0.2.51:80"各フィールドの説明は次のとおりです。
-
alb-80ri6******は、ALB インスタンスの ID を指定します。 -
upstream_addrは、バックエンドサーバーの IP アドレスとポートを指定します。この例では、ECS02 のプライベート IP アドレスとポートを入力します。
②
クエリの時間範囲を選択します。この例では、
1 分が選択されています。③
[検索/分析] をクリックして、新しいバックエンドサーバー ECS02 のトラフィックを表示します。
-
関連ドキュメント
-
サーバーグループの作成時にスロースタートを有効にする方法については、「サーバーグループの作成と管理」をご参照ください。
-
バックエンドサーバーをサービスから正常に削除するには、接続ドレインを有効にします。詳細については、「接続ドレインの設定」をご参照ください。
-
アクセスログをリアルタイムでクエリおよび分析する方法については、「クエリと分析のクイックスタート」をご参照ください。