スロットリングは、トラフィック制御で最も一般的な手法の 1 つです。バックエンドサービスがそのキャパシティを超えるリクエスト量によって過負荷になるのを防ぎ、カスケード障害を回避します。高同時実行性のシナリオでは、スロットリングは一部のリクエストを拒否することでサービスの可用性を確保します。クラウドネイティブゲートウェイは、ルートレベルのスロットリングポリシーをサポートしており、特定のルート上のトラフィックを正確に制御し、指定された期間内にリクエスト数がしきい値を超えないようにします。このトピックでは、クラウドネイティブゲートウェイのスロットリングポリシーを設定する方法について説明します。
MSE コンソールのスロットリング機能は、新しいモードを含むようにアップグレードされました。これらはゲートウェイバージョン 1.1.0 以降でのみ利用可能です。レガシーのスロットリング機能も引き続き利用できます。したがって、お使いのゲートウェイバージョンに合った手順を選択してください。
-
ゲートウェイバージョンが 1.1.0 以降の場合は、「スロットリングポリシーの設定 (新規)」セクションをご参照ください。
-
ゲートウェイバージョンが 1.0.0 の場合は、「スロットリングポリシーの設定 (レガシー)」セクションをご参照ください。
スロットリングポリシーの設定 (新規)
設定するしきい値は、ゲートウェイ全体での合計値です。各ゲートウェイノードのスロットリングしきい値は、合計しきい値 / ノード数 として計算されます。結果が 10 進数の場合、値は最も近い整数に切り上げられます。たとえば、ルート Demo の合計 QPS しきい値が 1001 で、ゲートウェイに 2 つのノードがある場合、各ゲートウェイノードの Demo ルートの QPS 制限は 501 になります。
-
MSE コンソールにログインします。上部のナビゲーションバーで、リージョンを選択します。
-
左側のナビゲーションウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。[ゲートウェイ] ページで、対象ゲートウェイの ID をクリックします。
-
左側のナビゲーションウィンドウで、Routes をクリックします。次に、[ルート] タブをクリックします。
-
管理したいルートを見つけ、Actions 列の Policies をクリックします。
-
Policies タブで、Throttling をクリックします。
ゲートウェイバージョン 1.2.25 以降
-
スロットリングルール
スロットリングルールは、ルートの秒間クエリ数 (QPS) を監視します。QPS が設定されたしきい値に達すると、ゲートウェイは即座にトラフィックを遮断します。これにより、バックエンドサービスが突然のトラフィックスパイクによって過負荷になるのを防ぎ、高可用性を確保します。
-
Throttling セクションで、[スロットリングルール] タブをクリックします。
-
Throttling Rules セクションで、以下のパラメーターを設定します。
パラメーター
説明
ゲートウェイの QPS しきい値
ゲートウェイ全体の秒間最大クエリ数 (QPS)。
Web フォールバック動作
リクエストがスロットリングされたときに実行するアクション。オプションには [指定されたコンテンツを返す] と [指定されたページに移動] があります。
[Web フォールバック動作] を [指定されたページに移動] に設定した場合:
リダイレクト URL
スロットリングされたリクエストがリダイレクトされる URL。
[Web フォールバック動作] を [指定されたコンテンツを返す] に設定した場合:
HTTP ステータスコード
返す HTTP ステータスコード。デフォルト値は 429 です。
返されるコンテンツタイプ
レスポンスのコンテンツタイプ。オプションは [プレーンテキスト] と [JSON] です。
HTTP レスポンスボディ
返すカスタムレスポンスのボディ。
有効化
オンにするとルールが有効になります。
-
New または 保存 をクリックし、確認ダイアログボックスで OK をクリックします。
-
-
同時実行ルール
同時実行ルールは、ゲートウェイで処理中のリクエストの総数を監視します。同時実行リクエスト数が設定されたしきい値に達すると、ゲートウェイは即座に新しいトラフィックを遮断します。この値をバックエンドサービスの最大同時処理能力に設定することで、高同時実行性下での可用性を確保できます。
-
Throttling セクションで、[同時実行ルール] タブをクリックします。
-
[同時実行ルール] タブで、以下のパラメーターを設定します。
パラメーター
説明
ゲートウェイの同時実行しきい値
ゲートウェイ全体の最大同時実行リクエスト数。
Web フォールバック動作
リクエストがスロットリングされたときに実行するアクション。オプションには [指定されたコンテンツを返す] と [指定されたページに移動] があります。
[Web フォールバック動作] を [指定されたページに移動] に設定した場合:
リダイレクト URL
スロットリングされたリクエストがリダイレクトされる URL。
[Web フォールバック動作] を [指定されたコンテンツを返す] に設定した場合:
HTTP ステータスコード
返す HTTP ステータスコード。デフォルト値は 429 です。
返されるコンテンツタイプ
レスポンスのコンテンツタイプ。オプションは [プレーンテキスト] と [JSON] です。
HTTP レスポンスボディ
返すカスタムレスポンスのボディ。
有効化
オンにするとルールが有効になります。
-
[新規] または 保存 をクリックし、次に確認ダイアログボックスで OK をクリックします。
-
-
サーキットブレーカールール
サーキットブレーカールールは、ルートの応答時間またはエラー率を監視します。指定されたしきい値に達すると、サーキットブレーカーがトリップし、不安定なリソースの呼び出しを一定期間停止して、バックエンドサービスを保護し、高可用性を確保します。この期間が終了すると、リソースへの呼び出しが再開されます。
-
[スロットリング] セクションで、Fuse rule タブをクリックします。
-
Fuse rule タブで、以下のパラメーターを設定します。
パラメーター
説明
Statistical window duration
統計を収集するためのタイムウィンドウの持続時間。有効な値:1 秒から 120 分。
最小リクエスト数
サーキットブレーカーをトリガーするために必要な最小リクエスト数。現在のタイムウィンドウ内のリクエスト数がこの値より少ない場合、しきい値を満たしていてもルールはトリガーされません。
しきい値のタイプ
しきい値として [低速呼び出し率] または [エラー率] を選択します。
-
しきい値として [低速呼び出し率] を選択した場合、許容される [低速呼び出し RT] (最大応答時間) を設定する必要があります。リクエストの応答時間がこの値より大きい場合、そのリクエストは低速呼び出しとしてカウントされます。また、サーキットブレーカーをトリガーする低速呼び出し率も設定する必要があります。ルールが有効化された後、統計タイムウィンドウ内のリクエスト数が最小リクエスト数より多く、低速呼び出し率がしきい値を超えた場合、後続のサーキットブレーカー期間中、リクエストは自動的にブロックされます。サーキットブレーカー期間が終了すると、サーキットブレーカーは半開状態になります。次の単一リクエストの応答時間が設定された低速呼び出し RT より短い場合、サーキットブレーカーは終了します。応答時間が設定された低速呼び出し RT より大きい場合、サーキットは再びトリップします。
-
[エラー率] を選択した場合、エラー率のしきい値を設定する必要があります。ルールが有効化された後、タイムウィンドウ内のリクエスト数が最小リクエスト数を超え、エラー率がしきい値を超えた場合、サーキットブレーカーがトリップします。後続のサーキットブレーカー期間中、すべてのリクエストはフェイルファストします。
サーキットブレーカー期間 (秒)
トリップ後にサーキットが開いたままになる期間。この期間中、リソースへのすべての呼び出しはフェイルファストします。
Web フォールバック動作
リクエストがスロットリングされたときに実行するアクション。オプションには [指定されたコンテンツを返す] と [指定されたページに移動] があります。
[Web フォールバック動作] を [指定されたページに移動] に設定した場合:
リダイレクト URL
スロットリングされたリクエストがリダイレクトされる URL。
[Web フォールバック動作] を [指定されたコンテンツを返す] に設定した場合:
HTTP ステータスコード
返す HTTP ステータスコード。デフォルト値は 429 です。
返されるコンテンツタイプ
レスポンスのコンテンツタイプ。オプションは [プレーンテキスト] と [JSON] です。
HTTP レスポンスボディ
返すカスタムレスポンスのボディ。
有効化
オンにするとルールが有効になります。
-
-
[新規] または 保存 をクリックして、確認ダイアログボックスで OK をクリックします。
-
ゲートウェイバージョン 1.1.0 から 1.2.24
-
スロットリングルール
スロットリングルールは、ルートの秒間クエリ数 (QPS) を監視します。QPS が設定されたしきい値に達すると、ゲートウェイは即座にトラフィックを遮断します。これにより、バックエンドサービスが突然のトラフィックスパイクによって過負荷になるのを防ぎ、高可用性を確保します。
-
Throttling パネルで、Throttling Rules タブをクリックし、Add Throttling Rule をクリックします。
-
[スロットリングルールの追加] ページで、設定を構成します。
-
[ルールの設定] ステップで、必要に応じて [ゲートウェイの QPS しきい値] を設定し、[有効化] スイッチをオンにします。次に、Next をクリックします。
-
[スロットリング動作の設定] ステップで、New behavior をクリックして、スロットリングがトリガーされたときの HTTP レスポンスをカスタマイズできます。
-
-
スロットリング動作を設定した後、New をクリックしてルールを作成します。
-
-
同時実行ルール
同時実行ルールは、ゲートウェイで処理中のリクエストの総数を監視します。同時実行リクエスト数が設定されたしきい値に達すると、ゲートウェイは即座に新しいトラフィックを遮断します。この値をバックエンドサービスの最大同時処理能力に設定することで、高同時実行性下での可用性を確保できます。
-
Throttling パネルで、[同時実行ルール] タブをクリックし、[同時実行ルールの追加] をクリックします。
-
[同時実行ルールの追加] ページで、設定を構成します。
-
[ルールの設定] ステップで、必要に応じて [ゲートウェイの同時実行しきい値] を設定し、[有効化] スイッチをオンにします。次に、Next をクリックします。
-
[スロットリング動作の設定] ステップで、[動作の追加] をクリックして、スロットリングがトリガーされたときの HTTP レスポンスをカスタマイズできます。
-
-
スロットリング動作を設定した後、New をクリックしてルールを作成します。
-
-
サーキットブレーカールール
サーキットブレーカールールは、ルートの応答時間またはエラー率を監視します。指定されたしきい値に達すると、サーキットブレーカーがトリップし、不安定なリソースの呼び出しを一定期間停止して、バックエンドサービスを保護し、高可用性を確保します。この期間が終了すると、リソースへの呼び出しが再開されます。
-
[スロットリング] パネルで、Fuse rule タブをクリックし、Added fusing rule をクリックします。
-
[サーキットブレーカールールの追加] ページで、設定を構成します。
-
[ルールの設定] ステップで、必要に応じてパラメーターを設定し、[有効化] スイッチをオンにします。次に、Next をクリックします。
パラメーター
説明
Statistical window duration
統計を収集するためのタイムウィンドウの持続時間。有効な値:1 秒から 120 分。
最小リクエスト数
サーキットブレーカーをトリガーするために必要な最小リクエスト数。現在のタイムウィンドウ内のリクエスト数がこの値より少ない場合、しきい値を満たしていてもルールはトリガーされません。
しきい値のタイプ
しきい値として [低速呼び出し率] または [エラー率] を選択します。
-
しきい値として低速呼び出し率を選択した場合、許容される低速呼び出し応答時間 (RT) を設定する必要があります。リクエストの応答時間がこの値より大きい場合、そのリクエストは低速呼び出しとしてカウントされます。また、サーキットブレーカーをトリガーする低速呼び出し率も設定する必要があります。ルールが有効化された後、統計タイムウィンドウ内のリクエスト数が最小リクエスト数より多く、低速呼び出し率が定義したしきい値を超えた場合、後続のリクエストは指定されたサーキットブレーカー期間中、自動的にブロックされます。サーキットブレーカー期間が終了すると、サーキットブレーカーは半開状態になります。次の単一リクエストの応答時間が設定された低速呼び出し RT より短い場合、サーキットブレーカーは終了します。応答時間が低速呼び出し RT より大きい場合、サーキットは再びトリップします。
-
[エラー率] を選択した場合、エラー率のしきい値を設定する必要があります。ルールが有効化された後、タイムウィンドウ内のリクエスト数が最小リクエスト数を超え、エラー率がしきい値を超えた場合、サーキットブレーカーがトリップします。後続のサーキットブレーカー期間中、すべてのリクエストはフェイルファストします。
サーキットブレーカー期間
トリップ後にサーキットが開いたままになる期間。この期間中、リソースへのすべての呼び出しはフェイルファストします。
サーキットブレーカー回復戦略
サーキットブレーカーが半開状態に入ったときの回復戦略。
シングルプローブ回復:サーキットブレーカー期間の後、サーキットブレーカーはテストのために単一のリクエストを通過させます。リクエストが成功した場合 (低速呼び出しやエラーではない)、サーキットは閉じられます。それ以外の場合は、再びトリップします。
-
-
[スロットリング動作の設定] ステップで、[動作の追加] をクリックして、スロットリングがトリガーされたときの HTTP レスポンスをカスタマイズできます。
-
-
スロットリング動作を設定した後、[新規作成] をクリックしてルールを作成します。
-
-
スロットリングポリシーの設定 (レガシー)
-
MSE コンソールにログインします。
-
左側のナビゲーションウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。上部のナビゲーションバーで、リージョンを選択します。
-
ゲートウェイリスト ページで、対象ゲートウェイの ID をクリックします。
-
左側のナビゲーションウィンドウで、[ルート] > Route Settings をクリックします。管理したいルートを見つけ、Actions 列の [ポリシー] をクリックします。
-
[ポリシー] セクションで、[スロットリング] タブをクリックします。
-
ルートにスロットリングポリシーが設定されていない場合は、[ポリシーの設定] をクリックします。
-
スロットリングポリシーがすでに設定されている場合は、ポリシーの横にある編集アイコン (
) をクリックします。
-
-
[スロットリングしきい値] ルールで、[タイムウィンドウ] と [単一マシンリクエストしきい値] を設定し、OK をクリックします。
以下にスロットリングパラメーターを説明します。
-
タイムウィンドウ:リクエストしきい値を測定する期間。デフォルトは 1 秒です。
-
単一マシンリクエストしきい値:指定されたタイムウィンドウ内で単一のゲートウェイノードに許可される最大リクエスト数。
-
-
スロットリングルールを設定した後、[有効化] スイッチをオンにします。
-
有効:スロットリングポリシーが有効な場合、このルートへのリクエストは設定されたタイムウィンドウとリクエストしきい値によって制限されます。
-
無効:スロットリングポリシーが無効な場合、このルートへのリクエスト数は制限されません。
-
結果の確認
次のコマンドを実行してテストリクエストを送信します:
curl -I http://121.196.XX.XX/demo/item/list # イングレスゲートウェイの 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