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

Microservices Engine:HTTP リクエストのホット パラメーター スロットリング ルールの作成

最終更新日:Jan 08, 2025

Microservices Engine (MSE) は、HTTP リクエストのホット パラメーター スロットリング ルールをサポートしています。 ホット パラメーター スロットリング ルールを作成して、Web サービスを提供するアプリケーションにアクセスする HTTP リクエスト内の特定のパラメーターに対してきめ細かいスロットリングを実装できます。 Servlet コンテナ、Spring Web、Spring Boot などの主要な Web フレームワークを使用するアプリケーションの場合、MSE は HTTP リクエストのホット パラメーター スロットリング ルールを使用して API リクエストのパラメーターを解析し、送信元 IP アドレス、ホスト名、リクエスト ヘッダー、リクエスト パラメーターなどのディメンションに基づいてリソース呼び出しをスロットリングします。 これにより、ビジネスとシステムの安定性が確保されます。 このトピックでは、アプリケーションの HTTP リクエストのホット パラメーター スロットリング ルールを作成する方法について説明します。

説明

HTTP リクエストのホット パラメーター スロットリング ルールは、以前は Web アプリケーション保護ルールとして知られていました。

背景情報

Web サービスが提供されるシナリオでは、API リクエストのスロットリング ルールを作成してアプリケーションを保護できます。 さらに、送信元 IP アドレスやリクエスト パラメーターなどのディメンションに基づいてリソース呼び出しをスロットリングして、さまざまなシナリオでビジネス アプリケーションを保護できます。 たとえば、トラフィック量の多い Web サービスのシナリオでは、特にアクセス頻度の高い送信元 IP アドレスまたは製品 ID に対して、API リクエストのスロットリングを実装する必要があります。 例:

  • 一定期間に最も頻繁に購入された製品の ID へのアクセスを制限することで、キャッシュの破損が原因でデータベースに大量のリクエストが送信されるのを防ぎます。

  • 一定期間に頻繁にリクエストが送信される IP アドレスからのアクセスを制限することで、ブラッシングを防ぎます。

手順

  1. MSE コンソール にログインし、トップ ナビゲーション バーでリージョンを選択します。

  2. 左側のナビゲーション ペインで、Microservices Governance > Application Governance を選択します。

  3. Application list ページで、目的のアプリケーションのリソース カードをクリックします。

  4. アプリケーションの詳細ページで、左側のペインの APIの詳細Hotspot Parameter Protection (HTTP Requests)新しいホットスポットパラメーター保護(HTTP リクエスト) をクリックします。 表示されるページの [WEB サービス] タブで、 タブをクリックします。 [ホットスポット パラメーター保護 (HTTP リクエスト)] タブで、 をクリックします。

  5. 新しいホットスポットパラメーター保護 (HTTP リクエスト)New ダイアログ ボックスで、パラメーターを設定し、 をクリックします。

    パラメーターの詳細については、このトピックの[パラメーター] セクションをご参照ください。

  6. ルール リストで作成したルールを見つけ、Status 列の [有効化] をクリックします。

  7. Tips メッセージで、[OK] をクリックします。

シナリオ 1:人気商品のフラッシュ セール

フラッシュ セールなどのシナリオでは、大量のトラフィックが原因で、システムがすぐに応答しなくなったり、応答を停止したりすることがあります。 システムの安定性を確保するために、ホット パラメーター スロットリング ルールを作成できます。 指定されたしきい値を超えると、システムは人気商品へのアクセスに対する超過リクエストを拒否します。

たとえば、システムが 1 秒あたり最大 100 件の製品アクセス リクエストを処理するように指定する場合、新しいホットスポットパラメーター保護(HTTP リクエスト) ダイアログ ボックスで次のルール情報を設定できます。 ルールが作成されると、システムは 1 秒あたり最大 100 件の各製品へのアクセス リクエストを処理します。 この場合、システムは各製品へのアクセスに対する超過リクエストを拒否し、カスタム情報を返します。

  • Parameter Properties パラメーターを [URL パラメーター] に設定します。

    説明

    パラメータープロパティ パラメーターを構成する場合は、人気商品 ID を指定するパラメーターを選択します。たとえば、stockId パラメーターで商品 ID を指定する場合は、[URL パラメーター] を選択し、[URL パラメーター名] フィールドに stockId と入力します。

  • [URL パラメーター名] フィールドに stockId を入力します。

  • [しきい値] パラメーターを [秒] あたり 100 リクエストに設定します。

  • [フロー制御方式] パラメーターを Fast failure に設定します。

シナリオ 2:悪意のあるブラッシングの防止

たとえば、プロモーション中に大量の悪意のあるブラッシング リクエストが発生した場合、大量の製品在庫またはサーバー リソースが占有されます。 この場合、システムは送信元 IP アドレスに基づいてリクエストをキューに入れ、一定の速度でリクエストを処理することで、過剰なリクエストがサービスの安定性に影響を与えるのを防ぐことができます。

ホット パラメーター スロットリング ルールを作成するには、新しいホットスポットパラメーター保護(HTTP リクエスト) ダイアログ ボックスで次のルール情報を設定します。 ルールが作成されると、システムは各 IP アドレスからの API リクエストを 10 ミリ秒ごとに処理し、超過リクエストをキューに入れます。 ブロックされたリクエストは、30 ミリ秒以上キューに入れられるとすぐに失敗します。

  • Parameter Properties パラメーターを [クライアント IP] に設定します。

  • デフォルトでは、[しきい値タイプ] パラメーターには [リクエスト数] が選択されています。

  • [しきい値] パラメーターを [秒] あたり 100 リクエストに設定します。

  • [フロー制御方式] パラメーターを Waiting in line に設定します。

  • [タイムアウト] パラメーターを 30 に設定します。単位:ミリ秒。

  • Whether to open をオンにします。

パラメーター

新しいホットスポットパラメーター保護(HTTP リクエスト) ダイアログ ボックスで設定できるパラメーターを次の表に示します。

パラメーター

説明

Configure Protection Rule

Parameter Properties

ルールを適用する API リクエストのパラメーター。

  • クライアント IP: リクエストの送信元のクライアントの IP アドレスです。

    説明

    リクエストがプロキシによって配信される場合、システムは最初に X-Forwarded-For リクエストヘッダーから IP アドレスを取得しようとします。 IP アドレスが存在する場合、システムは実際のクライアント IP アドレスとしてその IP アドレスを使用します。

  • [リモート ホスト]:リクエストの送信元のクライアントのホスト名。

  • [ヘッダー]:リクエストの HTTP ヘッダー。 ヘッダーを指定すると、ルールはヘッダーのホット値に適用されます。 [ヘッダー] を選択すると、リクエスト パラメーターの値に一致するモードを設定できます。 指定されたモードに一致する値のみが統計に収集され、スロットリングされます。

  • [URL パラメーター]:リクエスト本文のリクエスト パラメーター。 リクエスト パラメーターの名前を指定する必要があります。 [URL パラメーター] を選択すると、リクエスト パラメーターの値に一致するモードを設定できます。 指定されたモードに一致する値のみが統計に収集され、スロットリングされます。

(オプション) 一致パターンと一致文字列

[パラメーター プロパティ] で [ヘッダー] または [URL パラメーター] を選択した場合は、[プロパティ値の一致] をオンにして、[一致パターン][一致文字列] を指定できます。

[一致パターン]

  • [正確]:システムは、指定された一致文字列に基づいて値を厳密に照合します。

  • [部分文字列]:リクエスト属性値に指定された部分文字列が含まれている場合、一致は成功です。 たとえば、部分文字列が ab に設定されている場合、文字列 aba と cabc は一致できますが、文字列 cba は一致できません。

  • [正規表現]:システムは、指定された正規表現に基づいて文字列を照合します。

[しきい値タイプ]

しきい値タイプ。 デフォルト値:[リクエスト数]

[しきい値]

ルールをトリガーする 1 秒あたりのクエリ数 (QPS) のしきい値。 システムがリクエストを処理する間隔を指定する必要があります。 サポートされている単位:秒、分、時、日。

たとえば、しきい値が [分] あたり 10 リクエストに設定されている場合、システムは 1 分あたり最大 10 リクエストを処理します。

詳細設定

[フロー制御方式]

  • Fast failure: QPS しきい値に達すると、リクエストは直ちにブロックされます。

    説明

    リクエストがブロックされた場合、システムは、「保護動作の構成」ステップで構成したカスタム情報を返します。「保護動作の構成」ステップでカスタム情報を構成しない場合、429 エラーコードとデフォルトのテキストメッセージを含むデフォルトの動作が返されます。

  • Waiting in line: [しきい値タイプ] パラメーターを [リクエスト数] に設定すると、ブロックされたリクエストは一定の速度で処理されます。超過したリクエストはキューに入れられます。タイムアウト期間を指定する必要があります。リクエストがキューに入れられると、推定キューイング時間が計算されます。推定キューイング時間が指定されたタイムアウト期間を超えると、リクエストはキューに入れられずにすぐに失敗します。たとえば、QPS しきい値が 1 秒あたり 10 リクエストに設定されている場合、システムは 100 ミリ秒ごとにリクエストを処理し、超過したリクエストをキューに入れます。タイムアウト期間は、最大キューイング時間を示します。キューイング時間がタイムアウト期間を超えたリクエストは、直接拒否されます。

    説明

    フロー制御効果パラメーターを「待機中」に設定する場合は、QPS しきい値を 1,000 リクエスト/秒以下に設定することをお勧めします。

[バースト サイズ]

[フロー制御方式] パラメーターを Fast failure に設定した場合、トラフィック バーストに追加で許可されるリクエスト数を指定できます。

[有効期限]

[フロー制御方式] パラメーターを Waiting in line に設定する場合は、タイムアウト期間を指定する必要があります。 単位:ミリ秒。 たとえば、QPS しきい値が 1 秒あたり 5 リクエストに設定されている場合、システムは 200 ミリ秒ごとにリクエストを処理し、超過リクエストをキューに入れます。 タイムアウト期間は、最大キューイング時間を示します。 キューイング時間がタイムアウト期間を超えるリクエストは直接拒否されます。

Whether to open

  • オン:HTTP リクエストのホット パラメーター スロットリング ルールは、作成後すぐに有効になります。

  • オフ:HTTP リクエストのホット パラメーター スロットリング ルールは、作成後も有効になりません。

Configure Protection Behavior

Association Behavior

  • Default Behavior: これはデフォルト値です。

    説明
    • スロットリング後の動作をカスタマイズする必要がない場合は、このパラメーターを [デフォルトの動作] に設定できます。

    • この場合、スロットリング後に 429 エラーコードとデフォルトのテキストメッセージを含むデフォルトの動作が返されます。

  • New behavior:スロットリング後のカスタム動作を作成できます。 動作を作成した後、Association Behavior ドロップダウン リストからカスタム動作を選択できます。