すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:ALB Extensible Edition によるトークンベースのレート制限の実装

最終更新日:Mar 14, 2026

Application Load Balancer (ALB) Extensible Edition は、AI ワークロード向けにトークンベースのレート制限をサポートしています。指定されたタイムウィンドウ内で、ユーザーまたはアカウントなどのディメンションごとにトークン消費量を制限できます。これにより、大規模言語モデル (LLM) を呼び出す際のリソースの不正使用を防止し、コストをコントロールできます。

ソリューションアーキテクチャ

ALB Extensible Edition インスタンスはクライアントリクエストを受信し、リクエストのドメイン名に基づいて転送ルールと照合します。トークンレート制限コンポーネントは、サービス拡張を通じて転送ルールに関連付けられ、転送操作の前に実行されます。このコンポーネントは HTTP ヘッダーからレート制限識別子を抽出し、その識別子について指定されたタイムウィンドウ内のトークン消費量を照会します。消費量がしきい値を超えた場合、コンポーネントは HTTP 429 応答を返し、リクエストがバックエンドの AI サービスに到達するのをブロックします。消費量がしきい値内である場合、リクエストは転送されます。応答を受信した後、コンポーネントはレスポンスボディからトークン使用量を抽出し、その識別子の消費統計を更新します。

このソリューションでは、以下のリソースを使用します。

リソース

目的

ALB Extensible Edition インスタンス

負荷分散およびトラフィック転送を提供します。

AI Service タイプのサーバーグループ

バックエンドの大規模言語モデル (Alibaba Cloud Model Studio) に接続します。

HTTPS リスナー

ポート 443 でクライアントリクエストを受信します。

転送ルール

ドメイン名に基づいてリクエストを照合し、サービス拡張をトリガーします。

サービス拡張

トークンレート制限コンポーネントを通じて、トークン消費量の追跡およびレート制限を実装します。

image

前提条件

操作手順

ステップ 1:ALB Extensible Edition インスタンスの作成

  1. ALB コンソール に移動し、シンガポール リージョンを選択して、ALB の作成 をクリックします。

  2. 購入ページで、以下の設定を構成し、[今すぐ購入] をクリックします。

    パラメーター

    リージョン

    シンガポール

    ネットワークタイプ

    インターネット

    VPC および ゾーン

    ターゲット VPC を選択します。ゾーン A およびゾーン B を選択し、対応する vSwitch を選択して、[EIP を自動割り当て] を選択します。

    IP バージョン

    IPv4

    エディション

    Extensible

  3. [注文の確認] ページでインスタンスの構成を確認し、[今すぐ有効化] をクリックします。

ステップ 2:AI Service タイプのサーバーグループの作成

Alibaba Cloud Model Studio に接続するための AI Service タイプのサーバーグループを作成します。

  1. サーバーグループページ に移動し、サーバーグループの作成 をクリックします。

  2. サーバーグループタイプAI Service に設定し、sgp-ai-qwen のような名前を入力して、作成 をクリックします。

  3. 表示されるダイアログボックスで、バックエンドサーバーの追加 をクリックします。

  4. 以下の設定を構成し、OK をクリックします。

    パラメーター

    モデルプロバイダー

    Alibaba Cloud Model Studio

    エンドポイント

    プロバイダーを選択すると自動的に入力されます。

    API キー

    Alibaba Cloud Model Studio の API キーを入力します。

ステップ 3:リスナーの作成

  1. ALB コンソール で、ターゲットインスタンス ID をクリックしてインスタンス詳細ページに移動します。リスナー タブで、リスナーの作成 をクリックします。

  2. [リスナーの構成] ステップで、リスナープロトコルの選択HTTPS に、リスニングポート443 に設定して、次へ をクリックします。

  3. [SSL 証明書の構成] ステップで、カスタムドメイン名に一致するサーバー証明書を選択し、次へ をクリックします。

  4. [サーバーグループの選択] ステップで、AI Service タイプおよび sgp-ai-qwen サーバーグループを選択して、次へ をクリックします。

    選択されたサーバーグループはデフォルトの転送ルールに使用され、他の転送ルールに一致しないリクエストを処理します。必要に応じてこの設定を調整してください。
  5. [構成の確認] ステップで設定を確認し、送信 をクリックします。

ステップ 4:サービス拡張の作成

サービス拡張を作成し、トークンレート制限コンポーネントを追加します。このコンポーネントは HTTP ヘッダーによってリクエストを識別し、レート制限を適用します。

  1. サービス拡張ページ に移動し、Create Service Extension をクリックします。

  2. Service Extension Configuration セクションで、Extension nameext-token-rate-limit のような名前を入力します。

  3. Extension Type はデフォルトで プラグイン に設定されています。[コンポーネント名] ドロップダウンリストから、Token Rate Limiting を選択します。

  4. レート制限ポリシーを構成し、作成 をクリックします。

パラメーター

スロットリング条件

By HTTP Header を選択します。x-account-id をパラメーターとして入力し、マッチタイプを Wildcard Match に設定します。

スロットリング範囲

Total Tokens を選択します。制限値を 100 トークン / 1 分に設定します。

TimeoutProcessing policy

このチュートリアルではデフォルト値 (1000 および Skip) を使用します。必要に応じて調整してください。

x-account-id の値は HTTP リクエストヘッダーから抽出され、レート制限識別子として使用されます。一意の値ごとにトークン消費量が個別に追跡され、レート制限が独立して計算されます。必要に応じて、他の HTTP ヘッダーフィールドを使用したり、条件タイプおよびマッチタイプを調整したりできます。

サービス拡張に複数のレート制限ポリシーが含まれる場合、リクエストは上から下へと照合されます。最初に一致したポリシーが適用され、それ以降のポリシーは評価されません。

ステップ 5:転送ルールの構成

リスナー用の転送ルールを作成します。ドメイン名マッチ条件を追加し、サービス拡張を関連付けます。

  1. ALB コンソール で、ターゲットインスタンス ID をクリックしてインスタンス詳細ページに移動します。リスナー タブで、ターゲットリスナー ID をクリックし、転送ルール タブに移動します。

  2. 新しいルールの追加 をクリックし、以下の設定を構成して、OK をクリックします。

    パラメーター

    条件の追加

    [ドメイン名] を選択します。マッチタイプを 完全一致およびワイルドカード に設定します。ALB インスタンスにアクセスするために使用するドメイン名 (例:ai.example.com) を入力します。

    サービス拡張 (オプション)

    [既存のサービス拡張を使用] を選択し、ドロップダウンリストから ext-token-rate-limit を選択します。

    操作

    [転送先] を選択し、AI Service タイプのサーバーグループ sgp-ai-qwen を選択します。

転送ルールを作成後、HTTP ヘッダーに Host: ai.example.com を含むリクエストはこのルールに一致します。サービス拡張は x-account-id ヘッダーの値をレート制限と照合します。トークン消費量がしきい値内であれば、リクエストは sgp-ai-qwen サーバーグループに転送されます。

本番環境では、必要に応じて他のタイプの転送条件を使用できます。

ステップ 6:DNS 解決の構成

CNAME レコードを作成して、カスタムドメイン名を ALB インスタンスの DNS 名にポイントします。これにより、クライアントはドメイン名経由で ALB インスタンスにアクセスできます。

このチュートリアルでは Alibaba Cloud DNS を例として使用します。ドメイン名が Alibaba Cloud で登録されていない場合は、まず [Alibaba Cloud DNS コンソールにドメイン名を追加]() してください。

  1. ALB コンソール で、ターゲットインスタンスの ドメイン名 をコピーします。

  2. Alibaba Cloud DNS コンソール に移動します。ターゲットドメイン名を見つけ、Actions 列の 解決設定 をクリックします。解決設定 ページで、Add Record をクリックします。

  3. 以下の設定を構成し、OK をクリックします。

    パラメーター

    タイプ

    CNAME

    ホスト

    ドメイン名のプレフィックス (例:ai) を入力します。ルートドメイン名が example.com の場合、ALB インスタンスにアクセスするための完全なドメイン名は ai.example.com になります。これはステップ 5 で構成したドメイン名と一致している必要があります。

    ISP 回線および TTL

    デフォルト値のままにします。

    ALB インスタンスの DNS 名を入力します。

  1. 確認ダイアログボックスで DNS レコードを確認し、OK をクリックします。

ステップ 7:構成の検証

curl コマンドを使用してリクエストを送信し、トークンレート制限機能を検証します。リクエストは以下の条件を満たす必要があります。

  • ドメイン名ai.example.com 経由で ALB インスタンスにアクセスします (Host ヘッダーの値が一致している必要があります)。

  • レート制限ヘッダーx-account-id: を含めます。レート制限ポリシーはこのヘッダーによってリクエストを識別します。一意のヘッダー値ごとに独立したトークンクォータが設定されます。

  • OpenAI 互換プロトコル:リクエストパスは /v1/completions/v1/chat/completions、または /v1/embeddings である必要があり、リクエストボディはプロトコルフォーマットに準拠している必要があります。

以下のコマンド中の ai.example.com は、ステップ 6 で構成した実際のドメイン名に置き換えてください。テスト前に DNS レコードが有効になっていることを確認してください

通常リクエストのテスト

単一のリクエストを送信して、サービスが動作することを確認します。

curl -v \
-H "x-account-id: id" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-turbo",
"messages": [
{
"role": "user",
"content": "Who are you"
}
]
}' \
https://ai.example.com/v1/chat/completions

成功したリクエストは、HTTP 200 ステータスコードおよび AI サービスの応答を返します。

{
"choices": [
{
"message": {
"role": "assistant",
"content": "Hello! I am Qwen, a large-scale language model..."
},
"finish_reason": "stop",
"index": 0
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 14,
"completion_tokens": 53,
"total_tokens": 67
},
"model": "qwen-turbo"
}

usage.total_tokens フィールドには、このリクエストで消費されたトークン数が表示されます。

レート制限のトリガーをテスト

短時間で複数のリクエストを送信して、レート制限しきい値 (1 分あたり 100 トークン) を超過させます。

for i in {1..3}; do
curl -v \
-H "x-account-id: 12345" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-turbo",
"messages": [
{
"role": "user",
"content": "Who are you"
}
]
}' \
https://ai.example.com/v1/chat/completions
sleep 2
done

累積トークン消費量が 100 を超えると、その後のリクエストは HTTP 429 ステータスコードを返します。

  • トークンクォータが枯渇した後の次のリクエストのみが拒否されます。最後に成功したリクエストは、クォータを超えるトークンを消費する可能性があります。

  • ストリーミング出力のシナリオでは、最後のデータチャンクが返された時点でトークン使用量が計算されます。現在のウィンドウでクォータを超えるリクエストであっても、完全な応答が切り捨てられることなく返されます。レート制限はその後のリクエストにのみ適用されます。

  • 以下はレート制限された応答の例です。

    • 応答ヘッダー:

      HTTP/2 429
      x-tokenratelimit-reset: 52
      content-length: 17
      content-type: text/plain
      date: Wed, 21 Jan 2026 07:59:38 GMT
    • レスポンスボディ:

      Too Many Requests

ヘッダー / フィールド

説明

HTTP ステータスコード 429

トークンレート制限が超過したため、リクエストが拒否されました。

x-tokenratelimit-reset

レート制限カウンターがリセットされるまでの残り秒数 (この例では 52 秒)。カウンターがリセットされると、リクエストは通常通り処理されます。

レスポンスボディ

プレーンテキストで Too Many Requests が返されます。

課金

項目

説明

ALB Extensible Edition

現在パブリックプレビュー中です。料金は発生しません。

インターネットアクセス

インターネット NAT ゲートウェイにはインスタンス料金および容量単位 (CU) 料金が発生します。ALB インスタンスに関連付けられた EIP には、別途課金ルールが適用されます。

ドメイン名および DNS 解決

プロバイダーからのドメイン名登録料金および Alibaba Cloud からのパブリック権威 DNS 解決料金が発生します。

証明書

Alibaba Cloud Certificate Management Service を通じて証明書を購入またはアップロードする場合、サーバー証明書料金が発生します。

Model Studio

モデルおよびトークン使用量に基づく API 呼び出し料金が発生します。詳細については、「[Alibaba Cloud Model Studio の料金体系]()」をご参照ください。

対応リージョン

ALB Extensible Edition をサポートするリージョンの一覧については、「[ALB Extensible Edition の概要]()」をご参照ください。

本番環境に適用

  • レート制限しきい値の設定:まず通常時のトークン消費パターンをモニタリングし、観測値よりもやや高いしきい値を設定します。これにより、ポリシーが過剰に厳しくなり、正当なリクエストをブロックしてしまうことを防ぎます。

  • タイムウィンドウの選択

    • 高頻度のシナリオでは、より正確な制御のために短いタイムウィンドウを使用します。

    • 低頻度だが高消費のシナリオでは、個別のリクエストが誤ってレート制限されないように、長いタイムウィンドウを使用します。

    • タイムウィンドウは、単一のモデル推論の持続時間よりも長くする必要があります。推論がウィンドウの有効期限後に完了すると、レスポンスベースのレート制限は機能しません。

よくある質問

レート制限ポリシーに一致しないリクエストはどのように処理されますか?

リクエストに x-account-id: ヘッダーが含まれていない場合、転送ルールには一致しますが、レート制限ポリシーには一致しません。このリクエストはレート制限なしで直接転送されます

一意の x-account-id 値ごとに、独自のトークンクォータが設定されます。

トークンレート制限を構成しましたが、リクエストが制限されません。何を確認すればよいですか?

  1. 転送ルール:転送条件がリクエストと一致していること、ルールの優先度が十分に高く設定されていること、サービス拡張が関連付けられていることを確認してください。

  2. サービス拡張:トークンレート制限コンポーネントが正しく構成されていること、レート制限条件がリクエストと一致していること、レート制限値が適切であることを確認してください。

  3. リクエストフォーマット:リクエストが転送条件およびレート制限条件の両方と一致していることを確認してください。

  4. トークン消費量:応答の usage.total_tokens フィールドを確認してください。レート制限ポリシーはタイムウィンドウ内の累積トークン消費量をカウントします。単一のリクエストではしきい値に達しない可能性があります。

モデル推論の持続時間がレート制限のタイムウィンドウを超える場合、レート制限は適用できません。