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

Microservices Engine:スロットリングポリシーの設定

最終更新日:Jan 08, 2025

スロットリングは、トラフィック制御で最も一般的に使用される方法の 1 つです。 スロットリングを使用すると、バックエンドサービスが過剰な外部リクエストによって過負荷になるのを防ぐことができます。 スロットリングはカスケードな雪崩を防ぎます。 スロットリング機能は、同時リクエスト数が大きい場合に一部のリクエストをブロックするのに役立ちます。 これにより、バックエンドサービスの可用性が確保されます。 Microservices Engine(MSE)のクラウドネイティブゲートウェイでは、ルートレベルのスロットリングポリシーを設定できます。 これらのきめ細かいポリシーにより、ルート上のリクエスト数が指定された期間に指定されたしきい値を超えないようにすることができます。 このトピックでは、クラウドネイティブゲートウェイのスロットリングポリシーを設定する方法について説明します。

MSEコンソールのスロットリング機能は、より多くのスロットリング方法を提供するように最適化されています。 ゲートウェイのバージョンが 1.1.0 以降の場合にのみ、新しいスロットリング方法を使用できます。 ゲートウェイバージョン 1.0.0 に提供されているスロットリング機能もサポートされています。 したがって、ゲートウェイのバージョンに基づいてスロットリングポリシーを設定する必要があります。

1.1.0 以降のゲートウェイのスロットリングポリシーを設定する

重要

設定するスロットリングしきい値は、ゲートウェイレベルのスロットリングしきい値です。 ゲートウェイノードのスロットリングしきい値は、次の式を使用して計算できます。ゲートウェイレベルのスロットリングしきい値 / ノード数。 計算されたスロットリングしきい値が小数値の場合、小数値は最も近い整数に切り上げられます。 たとえば、デモルートの 1 秒あたりのクエリ数(QPS)は 1001 です。 ゲートウェイに 2 つのノードがある場合、各ゲートウェイノードのデモルートの QPS 制限は 501 です。

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

  2. 左側のナビゲーションペインで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 [ゲートウェイ] ページで、ゲートウェイの名前をクリックします。

  3. 左側のナビゲーションペインで、Routes をクリックし、[ルート] タブをクリックします。

  4. 変更するルーティングルールを見つけ、Actions 列の Policies をクリックします。

  5. 表示されるページの Policies セクションで、Throttling タブをクリックします。

    1.2.25 以降のゲートウェイ

    • スロットリングルールの設定

      スロットリングルールは、ルートの QPS が指定されたしきい値に達したことをシステムが検出した場合に、トラフィックを即座にブロックするために使用されます。 これにより、トラフィックの急増によるバックエンドサービスの障害を防ぎ、バックエンドサービスの高可用性を確保します。

      1. Throttling タブで、[スロットリングルール] サブタブをクリックします。

      2. Throttling Rules サブタブで、パラメーターを設定します。

        パラメーター

        説明

        [ゲートウェイ QPS しきい値]

        [ゲートウェイ QPS しきい値] に値を入力します。

        [web フォールバック動作]

        [web フォールバック動作][指定されたコンテンツを返す] または [指定されたページに移動] を選択します。

        [web フォールバック動作][指定されたページに移動] に設定した場合:

        [リダイレクト URL]

        リダイレクト先のアドレスを入力します。

        [web フォールバック動作][指定されたコンテンツを返す] に設定した場合:

        [HTTP ステータスコード]

        HTTP ステータスコードを入力します。 デフォルト値は 429 です。

        [返されるコンテンツタイプ]

        [返されるコンテンツタイプ][プレーンテキスト] または [JSON] を選択します。

        [返される HTTP テキスト]

        返されるテキストを入力します。

        [有効にする]

        このスイッチをオンにすると、設定されたスロットリングルールが有効になります。

      3. New または [保存] をクリックして、ルールを作成または更新します。 表示されるメッセージで、[OK] をクリックします。

    • 同時実行ルールの設定

      同時実行ルールは、ゲートウェイによって処理されているリクエストの総数が指定されたしきい値に達したことをシステムが検出した場合に、トラフィックを即座にブロックするために使用されます。 同時実行ルールを設定する場合、バックエンドサービスで処理できる同時リクエストの最大数を指定できます。 これにより、多数の同時リクエストが開始されるシナリオで、バックエンドサービスの可用性が確保されます。

      1. Throttling タブで、[同時実行ルール] サブタブをクリックします。

      2. [同時実行ルール] サブタブで、パラメーターを設定します。

        パラメーター

        説明

        [ゲートウェイ並列処理しきい値]

        [ゲートウェイ並列処理しきい値] に値を入力します。

        [web フォールバック動作]

        [web フォールバック動作][指定されたコンテンツを返す] または [指定されたページに移動] を選択します。

        [web フォールバック動作][指定されたページに移動] に設定した場合:

        [リダイレクト URL]

        リダイレクト先のアドレスを入力します。

        [web フォールバック動作][指定されたコンテンツを返す] に設定した場合:

        [HTTP ステータスコード]

        HTTP ステータスコードを入力します。 デフォルト値は 429 です。

        [返されるコンテンツタイプ]

        [返されるコンテンツタイプ][プレーンテキスト] または [JSON] を選択します。

        [返される HTTP テキスト]

        返されるテキストを入力します。

        [有効にする]

        このスイッチをオンにすると、設定された同時実行ルールが有効になります。

      3. [新規] または [保存] をクリックして、ルールを作成または更新します。 表示されるメッセージで、[OK] をクリックします。

    • サーキットブレーカールールの設定

      サーキットブレーカールールは、リクエストの応答時間(RT)またはルート上の異常なリクエストの割合が指定されたしきい値に達したことをシステムが検出した場合に、ルートの依存関係の優先順位を即座に下げるために使用されます。 サーキットブレーカーがトリガーされると、システムは指定された期間、ルート上のリクエストを呼び出しません。 これにより、バックエンドサービスの高可用性が確保されます。 指定された期間が経過すると、システムはルート上のリクエストの呼び出しを再開します。

      1. [スロットリング] タブで、Fuse rule サブタブをクリックします。

      2. Fuse rule サブタブで、パラメーターを設定します。

        パラメーター

        説明

        Statistical window duration

        時間ウィンドウの長さ。 有効な範囲は 1 秒から 120 分です。

        [最小リクエスト数]

        サーキットブレーカーをトリガーするための最小リクエスト数。 現在の時間ウィンドウのリクエスト数がこのパラメーターの値より少ない場合、サーキットブレーカールールが満たされていても、サーキットブレーカーはトリガーされません。

        [しきい値タイプ]

        有効な値: [低速呼び出し比率(%)] および [異常な割合(%)]

        • このパラメーターを [低速呼び出し比率(%)] に設定する場合は、[低速呼び出し RT] パラメーターを設定する必要があります。 低速呼び出し RT パラメーターは、リクエストの応答時間のしきい値を指定します。 リクエストの応答時間が低速呼び出し RT パラメーターの値を超えると、リクエストは低速呼び出しとしてカウントされます。 ダウングレードしきい値を低速呼び出しの割合のしきい値に設定します。 ルールが有効になった後、指定された期間に開始されたリクエストの数が指定された最小リクエスト数よりも多く、低速呼び出しの割合が指定されたしきい値よりも大きい場合、次のサーキットブレーカー期間に処理されるリクエストに対してサーキットブレーカーが自動的に実装されます。 サーキットブレーカー期間が経過すると、サーキットブレーカーは次のリクエストの RT の検出を開始します。 次のリクエストの RT が低速呼び出し RT パラメーターの値より小さい場合、サーキットブレーカーは終了します。 次のリクエストの RT が低速呼び出し RT パラメーターの値よりも大きい場合、サーキットブレーカーが再トリガーされます。

        • [異常な割合(%)] を選択する場合は、ダウングレードしきい値を異常なリクエストの割合のしきい値に設定する必要があります。 サーキットブレーカールールが有効になった後、指定された期間の異常なリクエストの数が指定された最小リクエスト数よりも多く、異常なリクエストの割合が指定されたしきい値よりも大きい場合、次のサーキットブレーカー期間に処理されるリクエストに対してサーキットブレーカーが自動的に実装されます。

        [ヒューズ時間(秒)]

        サーキットブレーカーが実装される期間。 ルートのリクエストに対してサーキットブレーカーが実装されている場合、設定されたサーキットブレーカー期間中は、ルートのすべてのリクエストの呼び出しが失敗します。

        [web フォールバック動作]

        [web フォールバック動作][指定されたコンテンツを返す] または [指定されたページに移動] を選択します。

        [web フォールバック動作][指定されたページに移動] に設定した場合:

        [リダイレクト URL]

        リダイレクト先のアドレスを入力します。

        [web フォールバック動作][指定されたコンテンツを返す] に設定した場合:

        [HTTP ステータスコード]

        HTTP ステータスコードを入力します。 デフォルト値は 429 です。

        [返されるコンテンツタイプ]

        [返されるコンテンツタイプ][プレーンテキスト] または [JSON] を選択します。

        [返される HTTP テキスト]

        返されるテキストを入力します。

        [有効にする]

        このスイッチをオンにすると、設定されたスロットリングルールが有効になります。

      3. [作成] または [保存] をクリックして、ルールを作成または更新します。 表示されるメッセージで、[OK] をクリックします。

    1.1.0 から 1.2.24 のゲートウェイ

    • スロットリングルールの設定

      スロットリングルールは、ルートの QPS が指定されたしきい値に達したことをシステムが検出した場合に、トラフィックを即座にブロックするために使用されます。 これにより、トラフィックの急増によるバックエンドサービスの障害を防ぎ、バックエンドサービスの高可用性を確保します。

      1. Throttling タブで、Throttling Rules サブタブをクリックし、Add Throttling Rule をクリックします。

      2. [スロットリング保護ルールを追加] ダイアログボックスで、パラメーターを設定します。

        1. [スロットリングルールの設定] ステップで、[全体的な QPS しきい値] フィールドに値を入力し、[開くかどうか] スイッチをオンにします。 次に、[次へ] をクリックして、スロットリング動作を設定します。

        2. [スロットリング動作の設定] ステップで、New behavior をクリックして、スロットリングが有効になった後の HTTP 応答動作を設定します。

      3. スロットリング動作を設定した後、New をクリックします。

    • 同時実行ルールの設定

      同時実行ルールは、ゲートウェイによって処理されているリクエストの総数が指定されたしきい値に達したことをシステムが検出した場合に、トラフィックを即座にブロックするために使用されます。 同時実行ルールを設定する場合、バックエンドサービスで処理できる同時リクエストの最大数を指定できます。 これにより、多数の同時リクエストが開始されるシナリオで、バックエンドサービスの可用性が確保されます。

      1. Throttling タブで、[同時実行ルール] サブタブをクリックし、[同時実行ルールを追加] をクリックします。

      2. [同時実行保護ルールを追加] ダイアログボックスで、パラメーターを設定します。

        1. [保護ルールの設定] ステップで、[全体的なリクエスト同時実行しきい値] フィールドに値を入力し、[開くかどうか] スイッチをオンにします。 次に、[次へ] をクリックして、スロットリング動作を設定します。

        2. [スロットリング動作の設定] ステップで、[動作を追加] をクリックして、スロットリングがトリガーされた後の HTTP 応答動作を設定します。

      3. スロットリング動作を設定した後、New をクリックします。

    • サーキットブレーカールールの設定

      サーキットブレーカールールは、リクエストの応答時間(RT)またはルート上の異常なリクエストの割合が指定されたしきい値に達したことをシステムが検出した場合に、ルートの依存関係の優先順位を即座に下げるために使用されます。 サーキットブレーカーがトリガーされると、システムは指定された期間、ルート上のリクエストを呼び出しません。 これにより、バックエンドサービスの高可用性が確保されます。 指定された期間が経過すると、システムはルート上のリクエストの呼び出しを再開します。

      1. [スロットリング] タブで、Fuse rule サブタブをクリックし、Added fusing rule をクリックします。

      2. [サーキットブレーカー保護ルールを追加] ダイアログボックスで、パラメーターを設定します。

        1. [保護ルールの設定] ステップで、[全体的なリクエスト同時実行しきい値] フィールドに値を入力し、[開くかどうか] スイッチをオンにします。 次に、[次へ] をクリックして、スロットリング動作を設定します。

          パラメーター

          説明

          Statistical window duration

          時間ウィンドウの長さ。 有効な範囲は 1 秒から 120 分です。

          [最小リクエスト数]

          サーキットブレーカーをトリガーするための最小リクエスト数。 現在の時間ウィンドウのリクエスト数がこのパラメーターの値より少ない場合、サーキットブレーカールールが満たされていても、サーキットブレーカーはトリガーされません。

          [しきい値タイプ]

          [低速呼び出し比率(%)] または [異常な割合(%)] を選択します。

          • 低速呼び出し比率(%)を選択する場合は、低速呼び出し RT パラメーターを指定する必要があります。 低速呼び出し RT パラメーターは、最大 RT を指定します。 リクエストの RT が低速呼び出し RT パラメーターの値よりも大きい場合、低速呼び出しがカウントされます。 ダウングレードしきい値を低速呼び出しの割合のしきい値に設定します。 ルールが有効になった後、指定された期間に開始されたリクエストの数が指定された最小リクエスト数よりも多く、低速呼び出しの割合が指定されたしきい値よりも大きい場合、次のサーキットブレーカー期間に処理されるリクエストに対してサーキットブレーカーが自動的に実装されます。 サーキットブレーカー期間が経過すると、サーキットブレーカーは次のリクエストの RT の検出を開始します。 次のリクエストの RT が低速呼び出し RT パラメーターの値より小さい場合、サーキットブレーカーは終了します。 次のリクエストの RT が低速呼び出し RT パラメーターの値よりも大きい場合、サーキットブレーカーが再トリガーされます。

          • 異常な割合(%)を選択する場合は、ダウングレードしきい値を異常なリクエストの割合のしきい値に設定する必要があります。 ルールが有効になった後、指定された期間の異常なリクエストの数が指定された最小リクエスト数よりも多く、異常なリクエストの割合が指定されたしきい値よりも大きい場合、次のサーキットブレーカー期間に処理されるリクエストに対してサーキットブレーカーが自動的に実装されます。

          [ヒューズ時間(秒)]

          サーキットブレーカーが実装される期間。 ルートのリクエストに対してサーキットブレーカーが実装されている場合、設定されたサーキットブレーカー期間中は、ルートのすべてのリクエストの呼び出しが失敗します。

          [ヒューズ回復戦略]

          サーキットブレーカー期間の経過後に、サーキットブレーカーがサーキットブレーカーを再トリガーするかどうかを指定します。

          単一プローブ回復を選択すると、サーキットブレーカーは、サーキットブレーカー期間の経過後に次のリクエストのステータスを検出します。 低速リクエスト呼び出しが発生しないか、リクエストが正常な場合、サーキットブレーカーは終了します。 それ以外の場合、サーキットブレーカーが再トリガーされます。

        2. [スロットリング動作の設定] ステップで、[動作を追加] をクリックして、スロットリングがトリガーされた後の HTTP 応答動作を設定します。

      3. スロットリング動作を設定した後、[新規] をクリックします。

1.0.0 のゲートウェイのスロットリングポリシーを設定する

  1. MSE コンソールにログインします。

  2. 左側のナビゲーションペインで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 上部のナビゲーションバーで、リージョンを選択します。

  3. ゲートウェイリスト ページで、ゲートウェイの名前をクリックします。

  4. 左側のナビゲーションペインで、[ルート] > [ルート設定] を選択します。 変更するルーティングルールを見つけ、[アクション] 列の [ポリシー] をクリックします。

  5. 表示されるページの [ポリシー] セクションで、[スロットリング] タブをクリックします。

    • スロットリングポリシーが存在しない場合は、[ポリシーの設定] をクリックします。

    • スロットリングポリシーが既に存在する場合は、[スロットリングしきい値] の横にある 编辑图案 アイコンをクリックします。

  6. [スロットリングしきい値] セクションで、[時間ウィンドウ] および [最大リクエスト数] パラメーターを設定し、[OK] をクリックします。

    パラメーターの説明:

    • [時間ウィンドウ]: スロットリングが実装される期間。 デフォルト値は 1 秒です。 このパラメーターを設定するには、特定の単位で時間ウィンドウを指定する必要があります。

    • [単一マシン リクエストしきい値]: ゲートウェイで許可される単一サーバーリクエストの最大数。

  7. スロットリングポリシーを設定した後、[有効] をオンにします。

    • [有効] スイッチをオンにすると、ルートのリクエスト数は [時間ウィンドウ] および [単一マシン リクエストしきい値] パラメーターの設定に従います。

    • [有効] スイッチをオフにすると、ルートのリクエスト数は制限されません。

結果の確認

次のコマンドを実行して、テストリクエストを送信します。

curl -I http://121.196.XX.XX/demo/item/list     //Ingress ゲートウェイの IP アドレス。
  • 設定されたスロットリングポリシーが有効になっていない場合のサンプルレスポンス

    HTTP/1.1 200 OK
    x-content-type-options: nosniff
    x-xss-protection: 1; mode=block
    cache-control: no-cache, no-store, max-age=0, must-revalidate
    pragma: no-cache
    expires: 0
    x-frame-options: DENY
    content-type: application/json
    content-length: 86
    date: Mon, 29 Nov 2021 08:28:00 GMT
    x-envoy-upstream-service-time: 4
    server: istio-envoy
  • 設定されたスロットリングポリシーが有効になっている場合のサンプルレスポンス(返される HTTP ステータスコード: 429)

    HTTP/1.1 429 Too Many Requests
    x-local-rate-limit: true
    content-length: 18
    content-type: text/plain
    date: Mon, 29 Nov 2021 08:28:01 GMT
    server: istio-envoy