スロットリングは、トラフィック制御で最も一般的に使用される方法の 1 つです。スロットリングを使用すると、バックエンドサービスが過剰な外部リクエストによって過負荷になるのを防ぐことができます。スロットリングはカスケードな雪崩を防ぎます。スロットリング機能は、同時リクエスト数が大きい場合に一部のリクエストをブロックするのに役立ちます。これにより、バックエンドサービスの可用性が確保されます。クラウドネイティブ API Gateway を使用すると、ルートレベルのスロットリングポリシーを設定できます。これらのきめ細かいポリシーにより、ルート上のリクエスト数が指定された期間内に指定されたしきい値を超えないようにすることができます。このトピックでは、クラウドネイティブゲートウェイのスロットリングポリシーを設定する方法について説明します。
スロットリングポリシーの設定
設定するスロットリングしきい値は、ゲートウェイレベルのスロットリングしきい値です。ゲートウェイノードのスロットリングしきい値は、次の式を使用して計算できます。ゲートウェイレベルのスロットリングしきい値 / ノード数。計算されたスロットリングしきい値が小数値の場合、小数値は最も近い整数に切り上げられます。たとえば、デモルートのクエリ/秒(QPS)が 1001 であるとします。ゲートウェイに 2 つのノードがある場合、各ゲートウェイノードのデモルートの QPS 制限は 501 です。
クラウドネイティブ API Gateway インスタンス内または外部でスロットリングポリシーを設定できます。
外部 API
クラウドネイティブ API Gateway コンソール にログインします。左側のナビゲーションウィンドウで、[API] をクリックします。上部のナビゲーションバーで、リージョンを選択します。
管理する API をクリックします。ドロップダウンリストからクラウドネイティブ API Gateway インスタンスを選択できます。 [すべてのインスタンス] を選択することもできます。

[ルート] タブで、管理するルートを選択します。
内部 API
クラウドネイティブ API Gateway コンソール にログインします。左側のナビゲーションウィンドウで、[インスタンス] をクリックします。上部のナビゲーションバーで、リージョンを選択します。
[インスタンス] ページで、管理するクラウドネイティブ API Gateway インスタンスの ID をクリックします。左側のナビゲーションウィンドウで、[API] をクリックします。次に、管理する API をクリックします。
[ルート] タブで、管理するルートを選択します。
[ポリシー設定] タブをクリックします。次に、[インバウンド処理] カードの [ポリシー/プラグインの有効化] をクリックします。
スロットリングポリシーを追加します。 [トラフィック制御]、[同時実行制御]、または [サーキットブレーキング] ポリシーを設定できます。
トラフィックスロットリング
スロットリングルールは、ルートの QPS を監視するために使用されます。 QPS が指定されたしきい値に達すると、トラフィックはすぐにブロックされます。これにより、トラフィックの急増によるバックエンドサービスの停止を防ぎ、バックエンドサービスの高可用性を確保します。
[トラフィック制御] カードをクリックします。 [ポリシーの追加: トラフィック制御] パネルで、パラメーターを設定し、[追加] をクリックします。
パラメーター
説明
有効にするかどうか
スイッチをオンにすると、トラフィック制御ポリシーが有効になります。
全体的な QPS しきい値
[全体的な QPS しきい値] に値を入力します。
Web フォールバック動作
[Web フォールバック動作] には、[特定のコンテンツを返す] または [指定されたページにリダイレクトする] を選択します。
[Web フォールバック動作] に [特定のコンテンツを返す] を選択した場合は、次のパラメーターを設定する必要があります。
HTTP ステータスコード
返す [HTTP ステータスコード] を指定します。デフォルト値: 429。
返されるコンテンツのタイプ
[返されるコンテンツのタイプ] には、[標準テキスト] または [JSON] を選択します。
HTTP テキスト
返すテキストを指定します。
[Web フォールバック動作] に [指定されたページにリダイレクトする] を選択した場合は、次のパラメーターを設定する必要があります。
リダイレクト URL
[リダイレクト先の URL] を指定します。
同時実行制御
同時実行ルールは、ゲートウェイで処理されているリクエストの総数を計算するために使用されます。合計数が指定されたしきい値に達すると、トラフィックはすぐにブロックされます。同時実行ルールを設定する場合、バックエンドサービスで処理できる同時リクエストの最大数を指定できます。これにより、多数の同時リクエストが開始されるシナリオで、バックエンドサービスの可用性が確保されます。
[同時実行制御] カードをクリックします。 [ポリシーの追加: 同時実行制御] パネルで、パラメーターを設定し、[追加] をクリックします。
パラメーター
説明
有効にするかどうか
このスイッチをオンにすると、同時実行ルールが有効になります。
全体的な同時実行しきい値
[全体的な同時実行しきい値] に値を入力します。
Web フォールバック動作
[Web フォールバック動作] には、[特定のコンテンツを返す] または [指定されたページにリダイレクトする] を選択します。
[Web フォールバック動作] に [特定のコンテンツを返す] を選択した場合は、次のパラメーターを設定する必要があります。
HTTP ステータスコード
返す [HTTP ステータスコード] を指定します。デフォルト値: 429。
返されるコンテンツのタイプ
[返されるコンテンツのタイプ] には、[標準テキスト] または [JSON] を選択します。
HTTP テキスト
返すテキストを指定します。
[Web フォールバック動作] に [指定されたページにリダイレクトする] を選択した場合は、次のパラメーターを設定する必要があります。
リダイレクト URL
[リダイレクト先の URL] を指定します。
サーキットブレーキング
サーキットブレーキングルールは、ルート上のリクエストの応答時間(RT)または異常なリクエストの割合が指定されたしきい値に達したことをシステムが検出したときに、ルートの依存関係の優先度を即座に下げるために使用されます。サーキットブレーキングがトリガーされると、システムは指定された期間内にルート上のリクエストを呼び出しません。これにより、バックエンドサービスの高可用性が確保されます。指定された期間が経過すると、システムはルートのリクエストへの呼び出しを再開します。
[サーキットブレーキング] カードをクリックします。 [ポリシーの追加: サーキットブレーキング] パネルで、パラメーターを設定し、[追加] をクリックします。
パラメーター
説明
有効にするかどうか
このスイッチをオンにすると、設定されたスロットリングルールが有効になります。
統計ウィンドウ期間
タイムウィンドウの期間。有効な値: 1 秒~ 120 分。
最小リクエスト数
サーキットブレーキングをトリガーする最小リクエスト数。現在のタイムウィンドウのリクエスト数がこのパラメーターの値より少ない場合、サーキットブレーキングルールが満たされていても、サーキットブレーキングはトリガーされません。
しきい値タイプ
しきい値タイプ。有効な値: [低速呼び出し比率 (%)] および [例外比率 (%)]。
このパラメーターを [低速呼び出し比率 (%)] に設定する場合は、[低速呼び出し RT] パラメーターを設定する必要があります。これは、リクエストの RT のしきい値を指定します。リクエストの RT が低速呼び出し RT パラメーターの値を超えると、リクエストは低速呼び出しとしてカウントされます。ダウングレードしきい値を低速呼び出しの割合のしきい値に設定します。サーキットブレーキングルールが有効になった後、指定された期間内に開始されたリクエストの数が指定された最小リクエスト数よりも多く、低速呼び出しの割合が指定されたしきい値よりも大きい場合、次のサーキットブレーキング期間に処理されるリクエストに対してサーキットブレーキングが自動的に実装されます。サーキットブレーキング期間が経過すると、サーキットブレーカーは次のリクエストの RT の検出を開始します。次のリクエストの RT が低速呼び出し RT パラメーターの値より小さい場合、サーキットブレーキングは終了します。次のリクエストの RT が低速呼び出し RT パラメーターの値よりも大きい場合、サーキットブレーキングが再度トリガーされます。
このパラメーターを [例外比率 (%)] に設定する場合は、ダウングレードしきい値を例外リクエストの割合のしきい値に設定する必要があります。ルールが有効になった後、指定された期間内の例外リクエストの数が指定された最小リクエスト数よりも多く、例外リクエストの割合が指定されたしきい値よりも大きい場合、次のサーキットブレーキング期間に処理されるリクエストに対してサーキットブレーキングが自動的に実装されます。
低速呼び出し RT
[リクエストの RT のしきい値]。
サーキットブレーキング比率しきい値
低速呼び出しの割合のしきい値。指定されたしきい値に達するか超えると、サーキットブレーキングがトリガーされます。有効な値: 0~100。これらの値は 0%~100% を表します。
サーキットブレーキング期間 (秒)
サーキットブレーキングが実装される期間。リソースにサーキットブレーキングが実装されている場合、指定されたサーキットブレーキング期間内にすべてのリソースへの呼び出しは失敗します。
Web フォールバック動作
[Web フォールバック動作] には、[特定のコンテンツを返す] または [指定されたページにリダイレクトする] を選択します。
[Web フォールバック動作] に [指定されたページにリダイレクトする] を選択した場合は、次のパラメーターを設定する必要があります。
リダイレクト URL
[リダイレクト先の URL] を指定します。
[Web フォールバック動作] に [特定のコンテンツを返す] を選択した場合は、次のパラメーターを設定する必要があります。
HTTP ステータスコード
[返す HTTP ステータスコード] を指定します。デフォルト値: 429。
返されるコンテンツのタイプ
[返されるコンテンツのタイプ] には、[標準テキスト] または [JSON] を選択します。
HTTP テキスト
返すテキストを指定します。
結果の確認
次のコマンドを実行して、テストリクエストを送信します。
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