クラウドネイティブゲートウェイは、トラフィックゲートウェイとマイクロサービスゲートウェイを単一のレイヤーに統合し、ネットワークホップと運用オーバーヘッドを削減しながら、組み込みのトラフィックガバナンスと可観測性を提供します。
このチュートリアルでは、次の 3 つのタスクについて説明します。
MSE Nacos レジストリに登録されているサービスにリクエストを転送するルートを作成します。
ルートが機能することを確認します。
トラフィック急増からバックエンドサービスを保護するために、スロットリングポリシーを追加します。
前提条件
開始する前に、次のリソースが準備されていることを確認してください。
クラウドネイティブゲートウェイ。詳細については、「MSE クラウドネイティブゲートウェイの作成」をご参照ください。
MSE Nacos エンジン。詳細については、「Nacos エンジンの作成」をご参照ください。
MSE Nacos に登録されているサービス。詳細については、「Spring Cloud アプリケーションを MSE Nacos レジストリに登録する」をご参照ください。
クラウドネイティブゲートウェイは、MSE Nacos または ZooKeeper レジストリに登録されているオンプレミスサービスに関連付けることはできません。
ステップ 1: ルートの作成
MSE コンソールにログインします。トップナビゲーションバーでリージョンを選択します。
左側のナビゲーションウィンドウで、[クラウドネイティブゲートウェイ] > [ゲートウェイ] を選択します。ご使用のゲートウェイの名前をクリックします。
左側のナビゲーションウィンドウで、[ルート] をクリックし、次に [ルートの追加] をクリックします。
次の設定でルートを設定します。
パラメーター 値 Routing Rule Name springcloud-demoDomain name * (ワイルドカード) Path type Prefix Path value /Route Point Single Service 
[サービス名] ドロップダウンリストで、[サービスの関連付け] をクリックします。サービスの関連付けパネルで、環境のパラメーターを設定し、[OK] をクリックします。

[サービス名] ドロップダウンリストから
nacos-service-consumerを選択し、[保存してアドバタイズ] をクリックします。
これでルートがアクティブになり、すべての受信リクエストが指定された Nacos サービスに転送されます。
ステップ 2: ルートの検証
ルーティングポリシーを追加する前に、ゲートウェイがトラフィックをバックエンドサービスに正しく転送することを確認してください。
MSE コンソールにログインします。トップナビゲーションバーでリージョンを選択します。
左側のナビゲーションウィンドウで、[クラウドネイティブゲートウェイ] > [ゲートウェイ] を選択します。お使いのゲートウェイの名前をクリックします。
「[概要]」ページで、「[Gateway Ingress]」タブをクリックします。[Ingress IP アドレス]を確認してください。
説明Ingress IP アドレスは、ゲートウェイに関連付けられている Server Load Balancer (SLB) インスタンスに属します。代わりに自己管理型 SLB インスタンスを使用するには、「Ingress として指定された SLB インスタンスの管理」をご参照ください。
テストリクエストを送信します。
curl -I http://<gateway-ingress-ip>/echo-rest/hello<gateway-ingress-ip>を前のステップの Ingress IP アドレスに置き換えます。独自のバックエンドサービスをテストするには、/echo-rest/helloをそのパスに置き換えます。期待される応答:
HTTP/1.1 200 OK Content-Type: text/plain;charset=UTF-8 Content-Length: 5 Date: Thu, 29 Aug 2024 08:21:47 GMT req-cost-time: 9 req-arrive-time: 1724919707979 resp-start-time: 1724919707988 x-envoy-upstream-service-time: 8 server: istio-envoyHTTP/1.1 200 OK応答は、ルートが機能していることを確認します。
ステップ 3: スロットリングポリシーの追加
高同時実行シナリオでは、スロットルされていないトラフィックがバックエンドサービスを過負荷にし、応答の遅延や停止を引き起こす可能性があります。スロットリングポリシーは、ルートの秒間クエリ数 (QPS) を監視し、しきい値を超えるトラフィックをブロックします。
ルーティングポリシーの完全なリストについては、「ルーティングポリシー」をご参照ください。
スロットリングルールの設定
MSE コンソールにログインします。トップナビゲーションバーでリージョンを選択します。
左側のナビゲーションウィンドウで、[クラウドネイティブゲートウェイ] > [ゲートウェイ] を選択します。ゲートウェイ名をクリックします。
[ルート]をクリックします。作成したルートを見つけて、[操作]列の[ポリシー]をクリックします。
「ポリシー」セクションで、「レート制限」タブをクリックし、「フロー制御ルール」をクリックします。
[スロットリングルール] タブで、次のパラメーターを設定します。
パラメーター 説明 例 Overall QPS Threshold このルートで許可される 1 秒あたりの最大リクエスト数。 1Web Fallback Behavior 指定されたコンテンツの返却[指定されたページに移動]しきい値を超過した場合の動作。オプション: または 。 指定されたコンテンツを返す HTTP status code リクエストがスロットルされたときに返されるステータスコード。デフォルト: 429。429Returned Content-Type [プレーンテキスト][JSON]応答ボディのフォーマット。オプション: または 。 Plain text HTTP Text スロットルされたリクエストに返されるカスタムメッセージ。 springcloud-demo flow limitWhether to open ルールを有効または無効にするトグル。 

ルールを作成するには、[新規作成] をクリックします。既存のルールを更新するには、[保存] をクリックします。確認ダイアログで、[OK] をクリックします。
スロットリングポリシーの検証
連続した高速リクエストを送信して、スロットリングしきい値をトリガーします。ご利用のオペレーティングシステム用のスクリプトを使用してください。
Linux / macOS
#!/bin/bash
URL="http://<gateway-ingress-ip>/echo-rest/hello"
while true; do
curl -i -s $URL
doneWindows
@echo off
set "localUrl=http://<gateway-ingress-ip>/echo-rest/hello"
:loop
curl -i -s %localUrl%
goto loop<gateway-ingress-ip> をご利用のゲートウェイの Ingress IP アドレスに置き換えます。
QPS がしきい値を超えると、ゲートウェイは 429 Too Many Requests を返します。
HTTP/1.1 429 Too Many Requests
content-type: text/plain; charset=UTF-8
content-length: 26
date: Thu, 29 Aug 2024 08:54:46 GMT
server: istio-envoy
springcloud-demo flow limitしきい値内のリクエストは、引き続き 200 OK を返します。
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 5
Date: Thu, 29 Aug 2024 08:54:46 GMT
req-cost-time: 8
req-arrive-time: 1724921686961
resp-start-time: 1724921686970
x-envoy-upstream-service-time: 7
server: istio-envoy混合出力は、スロットリングが機能していることを確認します。QPS しきい値を超えるリクエストは 429 を返し、制限内のリクエストは 200 を返します。
次のステップ
ヘッダー書き換え、CORS、リトライなどの追加の「ルーティングポリシー」を探索します。
問題が発生した場合は、「クラウドネイティブゲートウェイに関するよくある質問」をご参照いただくか、自動トラブルシューティングのために「AI 診断ツール」を使用してください。