NacosをAPI Gatewayと統合して、サービス検出機能を提供できます。 これにより、API Gatewayはマイクロサービスモデルとシームレスに連携し、ビジネスシステムを分離し、アプリケーションプログラムの管理を容易にします。 API Gatewayは、マイクロサービスシステムに向けられたリクエストのエントリポイントとして機能し、クライアントリクエストを受信、ルーティング、転送して、マイクロサービスアプリケーションの安全で安定した動作を保証します。 このトピックでは、API GatewayがNacos統合後にバックエンドマイクロサービスにアクセスする方法について説明します。 このトピックでは、バックエンドサービスタイプとしてService discoveryを使用するAPIを作成、公開、および呼び出す方法についても説明します。
概要
このトピックは、次のセクションで構成されています。
働き主義
仮想プライベートクラウド (VPC) 統合インスタンスの作成
Nacosのデプロイとマイクロサービスアプリケーションの登録
APIグループの作成
バックエンドサービスの作成
APIの作成
アプリケーションを作成し、APIを呼び出す権限を付与する
APIのデバッグDebug the API
働き主義
Nacosは、サービスレジストリとして、マイクロサービスインスタンスから登録要求を受信し、インスタンス情報をレジストリテーブルに格納できます。 API Gatewayは、Nacosにサブスクライブすることにより、Nacosのサービス検出機能を使用します。 API Gatewayは、NacosからマイクロサービスインスタンスのURLとポートを取得し、URLとポートに基づいてインスタンスにリクエストを配信して、動的ルーティングと負荷分散を実装します。

次の図は、作業プロセスを示しています。

サービスプロバイダーは、マイクロサービスアプリケーションをNacosサーバーに登録します。
API GatewayはNacosにリクエストを送信し、IPアドレス、ポート、重みなどのマイクロサービスインスタンスに関する情報を取得します。 API Gatewayは、受信した情報をキャッシュしてネットワーク間の通信を減らし、応答速度を向上させます。
クライアント要求を受信すると、API Gatewayはキャッシュから利用可能なマイクロサービスインスタンスのURLとポート情報を取得します。 インスタンスが選択される可能性は、その重みに関連する。 次に、API Gatewayは、URLとポート情報に基づいて指定されたマイクロサービスインスタンスにHTTPリクエストを送信し、受信したレスポンスをクライアントに返します。
バックエンドマイクロサービスアプリケーションが変更されると、Nacosは更新された情報をAPI Gatewayにプッシュします。 API Gatewayは、Nacosとの情報の一貫性を確保するためにキャッシュを更新します。 情報の変更は、マイクロサービスインスタンスがオフラインになったり、新しいインスタンスが追加されたりすることによって引き起こされる可能性があります。
API Gatewayは、更新された情報に基づいて、クライアントから送信された新しいリクエストをルーティングおよび転送します。
API Gatewayは、仮想プライベートクラウド (VPC) を介してNacosおよびマイクロサービスインスタンスと対話します。 したがって、APIを作成するときは、内部エンドポイントをNacosのサービスエンドポイントとして指定する必要があります。 それ以外の場合、API GatewayはNacosアドレスが無効であることを示すエラーメッセージを返します。 同様に、Nacosに登録されているマイクロサービスアプリケーションのエンドポイントも内部エンドポイントである必要があります。 API呼び出し中にバックエンドマイクロサービスアプリケーションのエンドポイントとしてパブリックエンドポイントが返された場合、API Gatewayはリクエストの処理に失敗し、I504IAエラーコードを返します。 API Gatewayがバックエンドマイクロサービスアプリケーションのエンドポイントを取得できなかった場合、I504BAエラーコードが返されます。
手順1: VPC統合インスタンスの作成
API Gatewayは、VPCを介してのみNacosおよびNacosに登録されたマイクロサービスアプリケーションと通信します。 ただし、従来の専用インスタンスは、カスタムVPCベースの通信をサポートしていません。 したがって、API GatewayはVPC統合インスタンスを提供し、内部ネットワークを介したユーザーVPCとの直接通信を可能にします。 VPC統合インスタンスの作成方法の詳細については、関連するトピックをご参照ください。 VPC統合インスタンスを作成するときは、VPCをインスタンスに関連付ける必要があります。 インスタンス作成ページで、VPC ID、ゾーン、vSwitch、およびセキュリティグループを指定します。 設定が完了すると、API Gatewayは指定されたvSwitchを使用してクラウドリソースにアクセスできます。

手順2: Nacosのデプロイとマイクロサービスアプリケーションの登録
1. Nacosのデプロイ
手順3で指定したvSwitchにNacosをデプロイする必要があります。 ステップ3で指定されたvSwitchで作成されたElastic Compute service (ECS) インスタンスにネイティブNacosサービスをデプロイできます。 この場合、Nacosサービスのエンドポイントを次の形式の値に設定する必要があります。ECSインスタンスの内部IPアドレス: Nacosで使用されるポート。 ECSインスタンスを作成するときは、ネットワークをVPCに設定し、ステップ3と同じVPC、ゾーン、およびvSwitchを選択する必要があります。
ネイティブNacosサービスを作成する方法の詳細については、「Nacosのクイックスタート」をご参照ください。 ECSインスタンスの作成方法の詳細については、「購入手順」をご参照ください。
Alibaba Cloud Microservices Engine (MSE) を使用してNacosサービスを作成することもできます。 Nacosサービスを作成するときに、ネットワークタイプとしてVPCを選択し、手順3と同じVPC、ゾーン、およびvSwitchを選択します。 Nacosサービスの作成後、MSEコンソールのインスタンスリストでそのエンドポイントを表示できます。
詳細については、「インスタンスの作成」をご参照ください。
2. マイクロサービスアプリケーションの登録
マイクロサービスアプリケーションは、手順3で指定したvSwitchにデプロイする必要があります。 それ以外の場合、マイクロサービスアプリケーションをNacosに登録してAPI Gatewayからアクセスすることはできません。 マイクロサービスアプリケーションをECSインスタンスにデプロイすることを選択できます。 マイクロサービスアプリケーションのデプロイに使用されるECSインスタンスは、手順3で指定したvSwitchに存在する必要があります。
Nacosに登録されているマイクロサービスアプリケーションは、HTTP呼び出しをサポートする必要があります。
手順3: APIグループの作成
APIはAPIグループで管理されます。 APIを作成する前に、APIグループを作成する必要があります。 手順: API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの管理] > [APIグループ] を選択します。 [APIグループ] ページの右上隅にある [グループの作成] をクリックします。 表示されるダイアログボックスで、グループ情報を設定します。 ステップ3で作成したVPC統合インスタンスを選択します。 グループ名およびBasePathパラメーターにカスタム値を指定できます。 グループの作成後、[APIグループ] ページでグループを表示できます。 グループ名をクリックすると、[グループの詳細] ページに移動できます。 [グループの詳細] ページでは、ドメイン名のバインド、基本情報の変更、インスタンスタイプの変更などの操作を実行できます。
API Gatewayは、パブリックの第2レベルドメイン名をAPIグループに自動的に割り当てます。 このドメイン名はデバッグにのみ使用され、中国本土以外のリージョンでは1日あたり100回、中国本土内のリージョンでは1日あたり1,000回の呼び出しに制限されます。 独立したドメイン名をAPIグループにバインドすることを推奨します。
手順4: バックエンドサービスの作成
API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの管理] > [バックエンドサービス] を選択します。 ページの右上隅にある [バックエンドサービスの作成] をクリックします。 表示されるダイアログボックスで、Nameパラメーターを設定し、[タイプ] ドロップダウンリストから [サービス検出] を選択します。 バックエンドサービスが作成された後、[バックエンドサービス] ページで作成されたバックエンドサービスを見つけることができます。 サービス名をクリックすると、サービスの詳細ページに移動できます。
サービス検出タイプのAPIは、既存のバックエンドサービスを使用してのみ作成できます。 したがって、このようなAPIを作成するには、まずバックエンドサービスを作成する必要があります。
この例では、RELEASE環境が選択されています。 APIを環境に公開する前に、環境にバックエンドサービスを作成する必要があります。 ページの右側で、[作成] をクリックします。 [バックエンドサービスの定義] ページが表示されます。

Nacosとマイクロサービスアプリケーションのパラメーターを指定します。 次の項目は、パラメータについて説明します。
NACOSアドレス: Nacosサービスの内部エンドポイント。 This parameter is required. このパラメーターを設定するには、手順3を参照してください。
名前空間: マイクロサービスアプリケーションが存在する名前空間。 This parameter is required. このパラメーターの名前空間IDを入力します。
Group: マイクロサービスアプリケーションが属するグループの名前。 This parameter is required.
サービス名: マイクロサービスアプリケーションの名前。 This parameter is required.
認証: Nacosの認証方法。 This parameter is required. 有効な値: [認証なし] 、[アカウントとパスワード] 、[キーペア] 。
クラスター: マイクロサービスアプリケーションが属するクラスターの名前。 このパラメーターはオプションです。 複数のクラスターを指定する場合は, クラスター名をコンマ (,) で区切ります。
Nacosサービスで認証が有効になっている場合、API呼び出し元が認証を渡すために取得する必要がある情報を指定する必要があります。 ネイティブNacosサービスを使用し、アカウントとパスワードベースの認証を有効にしている場合は、[認証] パラメーターに [アカウントとパスワード] を選択し、アカウントとパスワードを指定する必要があります。 MSEによって管理されるNacosサービスを使用している場合、認証パラメーターに [キーペア] を選択できます。 キーペアベースの認証を使用するには、まずRAM (Resource Access Management) ユーザーを作成し、RAMユーザーにMSEリソースに対する読み取り専用権限を付与する必要があります。 次に、バックエンドサービス設定ページでRAMユーザーのAccessKeyとSecretKeyを指定する必要があります。 Nacosサービスで認証が有効になっていない場合は、[認証なし] を選択する必要があります。
ネイティブNacosの認証を有効化および設定する方法の詳細については、「認証」をご参照ください。 MSEでNacos認証を有効化および設定する方法の詳細については、「Nacos クライアントによるアクセス認証」をご参照ください。
Nacosサービスの設定が変更された場合は、できるだけ早い機会にバックエンドサービスの対応する設定を変更してください。 そうしないと、API Gatewayはマイクロサービスアプリケーションへのアクセスに失敗します。
ステップ5: APIの作成
API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの管理] > [バックエンドサービス] を選択します。 [バックエンドサービス] ページで、作成したバックエンドサービスを見つけ、[操作] 列の [APIの作成] をクリックします。
APIの基本情報を設定します。
このステップでは、APIが属するAPIグループ、APIの名前、認証方法、タイプ、説明など、作成するAPIの基本情報を設定します。 作成したAPIグループを選択し、[セキュリティ認証] パラメーターにAlibaba Cloud Appを、[AppCode認証] パラメーターにAppCode認証 (ヘッダーとクエリ) を有効にします。 カスタムAPI名と説明を指定できます。
要件に基づいて、セキュリティ認証およびAppCode認証パラメーターを設定できます。 このトピックは例のみを示します。
APIリクエストを定義します。
この手順では、ブラウザ、モバイルアプリケーション、ビジネスシステムなどのクライアントがAPIを要求する方法を定義できます。 パラメータには、要求タイプ、プロトコル、要求パス、HTTPメソッド、入力パラメータ要求モード、および入力パラメータ定義が含まれます。 ビジネス要件に基づいて、リクエストパスとHTTPメソッドを指定できます。
バックエンドサービスを定義します。
このステップでは、API Gatewayがリクエストを受信した後、リクエストパラメーターをマッピングおよび処理する方法を定義できます。 API Gatewayが接続するバックエンドアドレスを指定することもできます。 この例では、[設定モード] パラメーターに [既存のバックエンドサービスを使用] が選択され、[バックエンドサービスタイプ] パラメーターに [サービス検出] が選択されています。 ビジネス要件に基づいて他のパラメーターを設定できます。
応答を定義します。
このステップでは、レスポンス情報を設定してAPIドキュメントを生成します。 ドキュメントは、API呼び出し元がAPIをよりよく理解するのに役立ちます。 サンプル成功応答とサンプル失敗応答を指定することもできます。 この例では、このステップはスキップされる。 [作成] をクリックします。
APIを公開します。
上記の設定を保存した後、APIを公開する必要があります。 APIに指定したすべての設定は、APIを環境に公開した後にのみ有効になります。 この例では、バックエンドサービスはRELEASE環境でのみ設定されています。 したがって、APIはRELEASE環境にのみ公開できます。 APIを別の環境に公開する場合は、事前にその環境でバックエンドサービスを設定する必要があります。 この例では、APIの作成が成功したことを示すメッセージで [公開] をクリックします。 [発行API] ダイアログボックスで、StageパラメーターをReleaseに設定し、備考を入力して [発行] をクリックします。
ステップ6: アプリケーションを作成し、APIの呼び出しを許可する
アプリケーションは、API呼び出し元がAPIを呼び出すと想定するIDです。 この例では、APIの作成時に [セキュリティ認証] パラメーターにAlibaba Cloudアプリが選択されています。 したがって、APIが公開された後、アプリケーションを作成し、作成したAPIを呼び出すようにアプリケーションを承認する必要があります。 詳細については、「権限の管理」をご参照ください。
ステップ7: APIのデバッグ
API Gatewayはオンラインデバッグをサポートしています。 クライアントが呼び出すAPIを提供する前に、この機能を使用してAPIが正しく構成されているかどうかを確認することを推奨します。
[API] ページで、作成したAPIをクリックします。 API詳細ページの左側のナビゲーションツリーで、[デバッグAPI] をクリックします。 APIのリクエストパラメーターを定義した場合、リクエストパラメーターに異なる値を入力して、APIが期待どおりに機能するかどうかを確認できます。
APIをデバッグするときは、承認されたアプリケーションが使用されていることと、デバッグのための環境がアプリケーションがAPIの呼び出しを許可されている環境であることを確認してください。 それ以外の場合、デバッグは失敗します。