クラウドネイティブゲートウェイは、従来のトラフィックゲートウェイとマイクロサービスゲートウェイの機能を組み合わせ、システムアーキテクチャのエントリポイントとして機能します。この統合により、ネットワークのオーバーヘッドと運用コストが大幅に削減され、包括的なトラフィックガバナンスと可観測性が提供されます。本トピックでは、クラウドネイティブゲートウェイを MSE Nacos サービスレジストリ内のサービスに関連付けることで、ルーティングポリシーを設定し、アラートを設定する方法について説明します。
前提条件
-
クラウドネイティブゲートウェイが作成されていること。 詳細については、「クラウドネイティブゲートウェイの作成」をご参照ください。
-
MSE Nacos エンジンが作成されていること。 詳細については、「MSE Nacos エンジンの作成」をご参照ください。
-
サービスが MSE Nacos に登録されていること。 詳細については、「Spring Cloud アプリケーションのサービスレジストリとして MSE Nacos を使用する」をご参照ください。
クラウドネイティブゲートウェイは、MSE Nacos または ZooKeeper に登録されているオンプレミスサービスをサポートしていません。
ルートの作成
MSE コンソール にログインします。上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーション ウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 [ゲートウェイ] ページで、ゲートウェイの名前をクリックします。
-
左側のナビゲーションペインで、Routes をクリックします。 Routes タブで、Add Route をクリックします。
-
Add Route ページで、Route Name を
springcloud-demoに設定し、[ドメイン名] に Domain Name を選択し、Path の一致ルールを値が [/] の Prefix に設定します。 ルートの宛先として Single Service を選択し、Service Name の下にある Associate Service をクリックします。 -
[サービスの関連付け] パネルでパラメーターを設定し、OK をクリックします。
[ソースタイプ] を [MSE Nacos] に設定し、ターゲットの [名前空間] を選択し、サービスリストから nacos-service-consumer サービスを選択します。
-
Service Name を
nacos-service-consumerに設定し、Save and Advertise をクリックします。
ルーティングポリシーの設定
ポリシーなしでのルートのテスト
MSE コンソール にログオンします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーション ウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 [ゲートウェイ] ページで、ゲートウェイの名前をクリックします。
-
Overview ページで、Gateway Ingress タブをクリックして、ゲートウェイの Ingress IP Address を表示します。
リストには、パブリック SLB インスタンスとプライベート SLB インスタンスが含まれています。
8.136.xxx.xxxなどのパブリックインスタンスの [イングレス IP アドレス] は、ゲートウェイのパブリックイングレスです。説明クラウドネイティブゲートウェイのイングレス IP アドレスは、関連付けられた SLB インスタンスの IP アドレスです。 関連付けられた SLB インスタンスを独自のインスタンスに置き換えることができます。 詳細については、「ゲートウェイイングレス SLB の管理」をご参照ください。
-
次のコマンドを実行して、テストリクエストを送信します。 <public_ingress_ip> を、前の手順で取得したパブリックイングレス IP アドレスに置き換えてください。
curl -I http://<public_ingress_ip>/echo-rest/hello説明このコマンドは、MSE Nacos 上のデモサービスにリクエストを送信します。 実際のバックエンドサービスに基づいてリクエストパスを変更できます。
リクエストが成功すると、次のレスポンスが返されます。
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-envoy
スロットリングポリシーの設定
高同時実行シナリオでは、適切なスロットリングがないと、リクエストの急増によってバックエンドサービスが過負荷になる可能性があります。 これにより、レスポンス時間が低下したり、サービスがクラッシュしたりする可能性があります。 スロットリングにより、リクエスト量が管理可能な範囲内に収まるようになります。 クラウドネイティブゲートウェイでは、スロットリングポリシーを設定してサービスを保護できます。 他のルーティングポリシーの詳細については、「ルーティングポリシー」をご参照ください。
MSE コンソール にログインします。上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーション ウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 [ゲートウェイ] ページで、ゲートウェイの名前をクリックします。
-
左側のナビゲーションペインで、Routes を選択します。
-
管理したいルートを見つけ、Actions 列の Policies をクリックします。
-
Policies タブで、Throttling をクリックします。
フロー制御ルールは、ルートの QPS (秒間クエリ数) メトリクスをモニタリングします。 メトリクスが指定されたしきい値に達すると、ゲートウェイは後続のトラフィックをただちにブロックします。 これにより、バックエンドサービスが突然のトラフィックスパイクによって過負荷になるのを防ぎ、高可用性の確保に役立ちます。
-
Throttling セクションで、Throttling Rules タブをクリックします。
-
Throttling Rules エリアで、次の設定を行います。
パラメーター
説明
例
Overall QPS Threshold
Overall QPS Threshold を指定します。
1
Web fallback behavior
Web fallback behavior を「[Returns the specified content]」または「[Jump to the specified page]」に設定します。
指定されたコンテンツを返す
HTTP Status Code
スロットリングされたリクエストに対して返す HTTP Status Code を指定します。 デフォルト値は 429 です。
429
Returned Content-Type
Returned Content-Type を「[Plain text]」または「JSON」に設定します。
プレーンテキスト
Returned HTTP Text
フォールバックレスポンスの本文を指定します。
springcloud-demo flow limit
Whether to open
このルールを有効または無効にします。
選択済み
-
New または 保存 をクリックし、確認ダイアログボックスで OK をクリックします。
-
-
次のスクリプトを実行して、ポリシーをテストします。 <public_ingress_ip> をパブリックイングレス IP アドレスに置き換えてください。
Windows
@echo off set "localUrl=http://<public_ingress_ip>/echo-rest/hello" :loop curl -i -s %localUrl% goto loopLinux
#!/bin/bash URL="http://<public_ingress_ip>/echo-rest/hello" while true; do curl -i -s $URL done期待されるレスポンス:スロットリングポリシーを有効にすると、QPS のしきい値を超えたリクエストはブロックされ、HTTP 429 ステータスコードとカスタムメッセージが返されます。
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
関連ドキュメント
トラブルシューティングについては、「クラウドネイティブゲートウェイに関する FAQ」をご参照ください。 組み込みの診断機能を使用することもできます。 詳細については、「クラウドネイティブゲートウェイの AI 診断」をご参照ください。