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 を使用したクライアントトラフィックのシミュレーション
このトピックでは、64 ビット版の Alibaba Cloud Linux 3.2104 を実行するクライアントを例として使用します。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 のトラフィックが表示されます。
-
関連ドキュメント
-
サーバーグループ作成時にスロースタートを有効にする方法については、「サーバーグループの作成と管理」をご参照ください。
-
バックエンドサーバーをサービスから正常に切り離すには、接続ドレインを有効にできます。詳細については、「接続ドレインの設定」をご参照ください。
-
アクセスログをリアルタイムでクエリおよび分析する方法については、「クエリと分析のクイックスタート」をご参照ください。