API Gateway は Nacos と統合することでサービスディスカバリを実現し、システムの疎結合化とマイクロサービスの管理性向上に貢献します。クライアントリクエストの統一されたエントリポイントとして、API Gateway はバックエンドマイクロサービスのルーティング、転送、セキュリティを処理します。本トピックでは、この統合の仕組みと、サービスディスカバリ API の作成、公開、呼び出しの手順について説明します。
概要
ワークフローには、次の手順が含まれます。
-
VPC 統合インスタンスの作成
-
Nacos サービスのデプロイとマイクロサービスアプリケーションの登録
-
API グループの作成
-
バックエンドサービスの作成
-
API の作成
-
アプリケーションの作成と API 呼び出し権限の付与
-
API のデバッグ
仕組み
Nacos はサービスレジストリとして機能し、マイクロサービスインスタンスからの登録リクエストを受信してそのメタデータを保存します。API Gateway はサービスサブスクライバーとして動作し、Nacos からインスタンスのアドレスとポートを取得します。この情報に基づき、API Gateway はバックエンドのマイクロサービスインスタンスにリクエストを分散することで、動的なルーティングと負荷分散を実現します。

次のフローチャートは、API Gateway がバックエンドのマイクロサービスにアクセスする方法を示しています。

-
サービスプロバイダーが、マイクロサービスアプリケーションを Nacos サーバーに登録します。
-
API Gateway は、IP アドレス、ポート、重みを含むサービスインスタンス情報を取得するために Nacos にリクエストを送信します。ネットワーク通信を削減してレスポンス速度を向上させるため、API Gateway はこの情報をキャッシュします。
-
クライアントリクエストが API Gateway に到達すると、ゲートウェイはまずキャッシュから利用可能なマイクロサービスインスタンスのアドレスを取得します。インスタンスが選択される確率は、その重みに比例します。次に、ゲートウェイは選択されたインスタンスの
IP:Portに HTTP リクエストを送信します。バックエンドからレスポンスを受信した後、ゲートウェイはそれをクライアントに返します。 -
マイクロサービスアプリケーションの情報が変更された場合 (たとえば、インスタンスがオフラインになる、新しいインスタンスが追加されるなど) 、Nacos は更新されたインスタンス情報を API Gateway にプッシュします。ゲートウェイはキャッシュをリアルタイムで更新し、Nacos レジストリとの整合性を維持します。
-
クライアントが別のリクエストを送信すると、API Gateway は最新のマイクロサービスのアドレス情報を使用してルーティングと転送を行います。
API Gateway は、Nacos およびマイクロサービスインスタンスとはプライベートネットワーク経由でのみ通信できます。したがって、API を作成する際、Nacos サービスのアドレスはプライベートアドレスである必要があります。そうでない場合、ゲートウェイは無効な Nacos アドレスを示すエラーを返します。同様に、Nacos に登録されているマイクロサービスのバックエンドアドレスもプライベートアドレスである必要があります。API の呼び出し中に、ゲートウェイが Nacos からマイクロサービスのパブリック IP アドレスを取得した場合、リクエストは失敗して、ゲートウェイはエラーコード I504IA を返します。ゲートウェイが Nacos からマイクロサービスのバックエンドアドレスを取得できない場合、エラーコード I504BA を返します。
ステップ1: VPC 統合インスタンスの作成
標準の専有インスタンスは、プライベートネットワーク経由で通信できません。VPC 統合インスタンスは、VPC に直接接続することでこの制約を解消します。詳細については、「VPC 統合インスタンスの作成」をご参照ください。インスタンスを作成する際、VPC をゲートウェイインスタンスにバインドします。インスタンス作成ページで、利用可能な [ユーザーVPC ID] を選択し、[ゾーン]、[vSwitch]、[セキュリティグループ] を選択します。設定が完了すると、ゲートウェイは指定された vSwitch 内のクラウドリソースにプライベートネットワーク経由でアクセスできるようになります。
その他、[課金方法] (例: [従量課金]) 、[リージョンとゾーン] (例: [China (Beijing)]) 、[インスタンスタイプ] (例: api.s1.small) 、[API Gateway インスタンス CIDR ブロック]、[HTTPS セキュリティポリシー] (例: HTTPS2_TLS1_0) 、[ネットワーク課金タイプ] (例: [トラフィック課金]) 、[インスタンス名] などのパラメーターも設定する必要があります。
ステップ2: Nacos のデプロイとアプリケーションの登録
-
Nacos サービスのデプロイ
Nacos サービスは、ステップ 1 で選択した VPC、ゾーン、vSwitch 内にデプロイする必要があります。選択した vSwitch 内の Elastic Compute Service (ECS) インスタンス上にネイティブの Nacos サービスをデプロイできます。これにより、Nacos サービスのアドレスを「ECS インスタンスのプライベート IP アドレス:Nacos サービスのポート」という形式で設定できます。ECS インスタンスを作成する際、ネットワークタイプとして VPC を選択し、VPC と vSwitch がステップ 1 の設定と一致していることを確認してください。
説明詳細については、「Nacos のデプロイ」および「ECS インスタンスの作成」をご参照ください。
または、Alibaba Cloud Microservices Engine (MSE) を使用して Nacos サービスを作成することもできます。サービスを作成する際、ネットワークタイプとして VPC を選択し、VPC と vSwitch がステップ 1 の設定と一致していることを確認してください。サービス作成後、MSE コンソールのインスタンスリストページでそのアクセスアドレスを確認できます。
説明詳細については、「Nacosエンジンの作成」をご参照ください。
-
マイクロサービスアプリケーションの登録
マイクロサービスアプリケーションも、ステップ 1 で選択した VPC、ゾーン、vSwitch 内にデプロイする必要があります。これにより、マイクロサービスは Nacos に正常に登録され、API Gateway からアクセスできるようになります。ステップ 1 で指定した vSwitch 内に作成した ECS インスタンス上にマイクロサービスアプリケーションをデプロイできます。
重要Nacos に登録するマイクロサービスアプリケーションは、HTTP 呼び出しをサポートしている必要があります。
ステップ3: API グループの作成
API は API グループで管理されます。API を作成する前に、API グループを作成する必要があります。API Gateway コンソールにログインします。左側のナビゲーションウィンドウで、 を選択し、右上隅の [グループの作成] をクリックします。表示されたダイアログボックスで、グループ情報を入力します。インスタンスには、ステップ 1 で作成した VPC 統合インスタンスを選択します。カスタムグループ名と BasePath を指定できます。グループが作成されると、[グループリスト] に表示されます。グループ名をクリックして [グループの詳細] ページを開くと、ドメイン名のバインド、基本情報の変更、インスタンスタイプの変更ができます。
API Gateway は、デバッグ目的で API グループにパブリックのセカンドレベルドメイン名を自動的に割り当てます。このドメイン名への直接アクセスは、中国本土のリージョンでは 1 日あたり 1,000 回、China (Hong Kong) を含む中国本土以外のリージョンでは 1 日あたり 100 回に制限されています。本番環境では、カスタムドメイン名をグループにバインドすることを推奨します。
ステップ4: バックエンドサービスの作成
API Gateway コンソールに移動します。 左側のナビゲーションペインで、 を選択します。 ページの右上隅にある [バックエンドサービスの作成] をクリックします。 表示されるダイアログボックスで、バックエンドサービスの名前を入力し、バックエンドタイプとして [サービス検出] を選択します。 バックエンドサービスが作成されたら、[バックエンドサービスリスト] でその名前をクリックして詳細ページに移動します。
サービスディスカバリ API は、既存のバックエンドサービスからのみ作成できるため、最初にバックエンドサービスを作成する必要があります。
この例では、RELEASE 環境を選択します。API を環境に公開するには、事前にバックエンドサービスを作成しておく必要があります。ページの右側で、[作成] をクリックしてバックエンドサービス設定ページを開きます。
Nacos サービスとマイクロサービスアプリケーションについて、以下の情報を設定します。
-
[NACOS アドレス]:Nacos サービスのプライベートアドレスです。 必須。 ステップ 1 の実際のデプロイメントアドレスを入力します。
-
[名前空間]: マイクロサービスアプリケーションの名前空間です。必須です。[名前空間 ID] を入力します。
-
[グループ]: マイクロサービスアプリケーションが所属するグループ。必須。
-
[サービス名]:マイクロサービスアプリケーションの名前です。必須です。
-
[認証]:Nacos の認証方法です。必須です。オプション:認証なし、アカウントとパスワード認証、または キーペア認証。
-
[クラスター]:マイクロサービスアプリケーションのクラスター。任意。複数のクラスター名はコンマで区切ります。
Nacos サービスで認証が有効になっている場合は、対応する認証情報を指定します。アカウントとパスワード認証を使用するネイティブの Nacos サービスの場合、[アカウントとパスワード認証] を選択し、認証情報を入力します。Alibaba Cloud Microservices Engine (MSE) を使用して Nacos を管理する場合は、[キーペア認証] を選択します。まず、MSE リソースに対する読み取り専用権限を持つ RAM ユーザーを作成した後、設定ページで RAM ユーザーの AccessKey と SecretKey を入力します。Nacos サービスで認証が不要な場合は、[認証なし] を選択します。
詳細については、ネイティブ Nacos の場合は「Nacos認証」、MSE の場合は「Nacosクライアントアクセス認証」をご参照ください。
Nacos サービスの設定を更新した場合は、API Gateway が指定のマイクロサービスアプリケーションにアクセスし続けられるように、対応するバックエンドサービスの設定も更新する必要があります。
ステップ5: API の作成
API Gateway コンソールに移動します。 左側のナビゲーションペインで、 を選択します。 [バックエンドサービスリスト] ページで、作成したバックエンドサービスを見つけ、[操作] 列の [API の作成] をクリックします。
-
基本的な API 情報の設定
API グループ、名前、セキュリティ認証方式、タイプ、説明など、API の基本情報を設定します。先ほど作成した API グループを選択します。セキュリティ認証には、Alibaba Cloud APP を選択します。AppCode 認証では、AppCode 認証を許可 (Header & Query) を選択します。API 名と説明は任意に指定できます。
ニーズに応じて、他のセキュリティ認証方式も選択できます。API Gateway でセキュリティチェックが不要な場合は、「認証なし」を選択します。
-
API リクエストの定義
リクエストタイプ、プロトコル、パス、HTTP メソッド、リクエストモード、パラメーターを指定して、クライアントによる API の呼び出し方法を定義します。要件に応じて、クライアントリクエストのパスとメソッドを設定します。
-
API バックエンドサービスの定義
API Gateway がクライアントリクエストのパラメーターをマッピングし、リクエストをバックエンドサービスにルーティングする方法を定義します。この例では、バックエンド設定として [既存のバックエンドサービスを使用] を、バックエンドサービスタイプとして [サービスディスカバリ] を選択し、さらに先ほど作成したバックエンドサービスを選択します。必要に応じて、バックエンドリクエストのパス、メソッド、タイムアウトを設定します。
-
レスポンスの定義
成功と失敗のレスポンスサンプルを指定すると、コンシューマー向けの API ドキュメントが生成されます。このチュートリアルではこの手順は任意のため、[作成] をクリックできます。
-
API の公開
API を保存した後、公開します。API 定義の変更は、環境に公開して初めて有効になります。この例では、バックエンドサービスは RELEASE 環境でのみ設定されているため、API をその環境に公開します。他の環境に公開するには、まずそれらの環境用のバックエンドサービスを定義する必要があります。[公開] をクリックし、プロンプトに従って API を RELEASE 環境に公開します。
ステップ6: アプリケーションの作成と承認
アプリケーション (APP) は、API 呼び出し元の ID を表します。API の作成時に Alibaba Cloud APP 認証を選択したため、API にアクセスする前に、アプリケーションを作成し、そのアプリケーションに API を呼び出す権限を付与する必要があります。詳細な手順については、「承認の管理」をご参照ください。
ステップ7: API のデバッグ
API Gateway は、オンラインデバッグ機能を提供しています。この機能を使用すると、クライアントが呼び出す前に、API が正しく設定されているかを確認できます。
「API リスト」ページで、作成した API をクリックしてその詳細ページに移動し、[API のデバッグ] をクリックします。 API に入力パラメーターを定義した場合は、「API のデバッグ」ページでさまざまな値を入力して API の動作をテストできます。
API をデバッグする際は、承認済みのアプリケーションを選択し、ステージにはそのアプリケーションが承認されている環境を設定してください。誤ったステージを選択すると、デバッグが失敗する可能性があります。