すべてのプロダクト
Search
ドキュメントセンター

Serverless App Engine:アプリケーションの Nacos へのサービス登録とサービス検出の変更

最終更新日:Jun 10, 2025

Spring Cloud アプリケーションのサービス登録とサービス検出は、Eureka、Consul、ZooKeeper などのコンポーネントを使用して実装されていました。このトピックでは、Nacos を使用してサービス登録とサービス検出を実装する方法、Nacos を Serverless App Engine (SAE) にホストする方法について説明します。

メリット

Spring Cloud アプリケーションのサービス登録とサービス検出は、Eureka、Consul、ZooKeeper、Redis などのコンポーネントを使用して実装されます。Spring Cloud アプリケーションを SAE にホストする場合、ビジネスコードを変更することなくサービス登録とサービス検出を実行するには、元のサービスレジストリと構成センターを Alibaba Nacos Discovery に置き換えるだけで済みます。

SAE サービスレジストリは、Spring Cloud Alibaba Nacos Discovery のすべての機能を提供し、Eureka、Consul、ZooKeeper、Redis などの複数のコンポーネントへの依存関係から解放されます。

Spring Cloud アプリケーションを SAE にホストした後、レジストリと構成センターの構築とメンテナンスを気にすることなく、Spring Cloud アプリケーションのロジックの構築に集中できます。自動スケーリング、アプリケーションの一括迅速起動と停止、アプリケーション監視など、SAE が提供する機能は、開発コストと O&M コストの大幅な削減に役立ちます。

複数のマイクロサービス アプリケーションを管理するには、推奨順に次のいずれかのサービスレジストリを使用することを検討してください。

  • 商用サービスレジストリ (MSE)

    ZF182Dl2pw

    MSE Nacos をサービスレジストリとして使用する方法の詳細な手順については、「MSE Nacos レジストリの使用」をご参照ください。

  • セルフマネージド サービスレジストリ

    7D79jXUfBL

    セルフマネージド Nacos レジストリを設定する場合は、次の点を確認してください。

    • SAE とセルフマネージド Nacos レジストリのネットワークが相互接続されていること。

    • コマンドの失敗を防ぐために、-D パラメータと -XX パラメータを交互に使用しないこと。サンプルコードは次のとおりです。

      • 変更前:

        java -Dalicloud.deployment.mode=EDAS_MANAGED -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UnlockExperimentalVMOptions -XX:+UseWisp2 -Dio.netty.transport.noNative=true -XX:+UseG1GC -Dspring.profiles.active=yace -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar /home/admin/app/xx-server.jar
      • 変更後:

        java -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UnlockExperimentalVMOptions -XX:+UseWisp2 -Dio.netty.transport.noNative=true -XX:+UseG1GC -Dspring.profiles.active=yace -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar /home/admin/app/xx-server.jar
    • イメージまたは JAR パッケージのデプロイ方法を使用し、起動パラメータ -Dnacos.use.endpoint.parsing.rule=false-Dnacos.use.cloud.namespace.parsing=false を構成することをお勧めします。

      重要

      起動パラメータは -jar の前に指定する必要があります。そうしないと、SAE 組み込み以外のレジストリが使用できない場合があります。

      • イメージ方式を使用する場合は、イメージファイルのプログラム起動コマンドで -Dnacos.use.endpoint.parsing.rule=false-Dnacos.use.cloud.namespace.parsing=false を構成します。

        サンプルコードは次のとおりです。

        RUN echo 'eval exec java -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar $CATALINA_OPTS /home/admin/app/hello-edas-0.0.1-SNAPSHOT.jar'> /home/admin/start.sh && chmod +x /home/admin/start.sh
      • JAR パッケージ方式を使用する場合は、コンソールの [ 起動コマンド設定] セクションで、[ オプション設定] テキストボックスに次のコマンドを入力します: -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false。画像は、[ Open JDK 8 ] 環境内で動作する Java アプリケーションを示しています。詳細な手順については、「起動コマンドの設定」をご参照ください。sc_configure_a_startup_command_for_nacos

  • SAE 組み込みサービスレジストリ

    x6JeUmPTQf

    SAE は、Java マイクロサービスに Nacos サーバーの自動アドレシング機能を備えています。これは、SAE[ サービス登録とサービス検出] 機能で構成できます。詳細な手順については、「SAE 組み込み Nacos レジストリの使用」をご参照ください。

手順 1: デモを入手する

eureka-service-provider と eureka-service-consumer は、SAE マイクロサービス デモアプリケーションのパッケージです。Eureka はコンシューマとプロバイダに統合されています。コンシューマはプロバイダが提供するサービスを消費します。

手順 2: プロバイダのサービスレジストリ構成を変更する

クラウドネイティブ プロバイダを SAE にホストするには、プロバイダの POM 依存関係を変更し、Nacos サーバーの IP アドレスを指定する必要があります。

説明

次のシナリオでは、Nacos サーバーの IP アドレスを指定する必要があります。

  • ローカルテストに合格した後、アプリケーションを SAE にホストする場合。

  • SAE サービスレジストリがセルフマネージド Nacos レジストリである場合。

  1. pom.xml ファイルに次の依存関係を追加します。

    プロバイダの pom.xml ファイルを開きます。spring-cloud-starter-netflix-eureka-clientspring-cloud-starter-alibaba-nacos-discovery に置き換え、Nacos サーバーのバージョンを構成します。

    置き換え前:

    <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>                            

    置き換え後:

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>                           
    説明
    • この例では Spring Cloud Greenwich を使用しています。spring-cloud-starter-alibaba-nacos-discovery のバージョンは 2.1.1.RELEASE です。

    • Spring Cloud Finchley を使用する場合は、spring-cloud-starter-alibaba-nacos-discovery のバージョンは 2.0.1.RELEASE です。

    • Spring Cloud Edgware を使用する場合は、spring-cloud-starter-alibaba-nacos-discovery のバージョンは 1.5.1.RELEASE です。このバージョンのサービスは終了しています。このバージョンはお勧めしません。詳細については、「Spring Cloud Edgware リリースノート」をご参照ください。

  2. Nacos サーバーの IP アドレスを指定します。

    src\main\resources 内の application.properties ファイルを開き、Nacos サーバーの IP アドレスを指定します。

    変更前:

    spring.application.name=service-provider
    server.port=18081
    eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/                            

    変更後:

    spring.application.name=service-provider
    server.port=18081
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848                            

    127.0.0.1 は Nacos サーバーの IP アドレスです。Nacos サーバーが別の物理サーバーにデプロイされている場合は、それに応じて IP アドレスを変更します。その他の要件がある場合は、構成項目 を参照して、application.properties ファイルに必要な構成を追加します。構成項目

  3. アプリケーションサービスをクエリします。

    1. mainProviderApplicationnacos-service-provider プロジェクトの の 関数を実行して、プロバイダを起動します。

    2. 127.0.0.1:8848/nacos にアクセスして、コンピュータにインストールされている Nacos サーバーコンソールにログオンします。左側のナビゲーションウィンドウで、[サービス管理] > [サービスリスト] を選択します。

      説明

      Nacos サーバーコンソールにログオンするためのデフォルトのユーザー名とパスワードは nacos です。

      [service-provider][サービスリスト] に表示され、service-provider の詳細をクエリできる場合、service-provider は正常に登録されています。

手順 3: コンシューマのサービスレジストリ構成を変更する

クラウドネイティブ コンシューマを SAE にホストするには、コンシューマの POM 依存関係を変更し、Nacos サーバーの IP アドレスを指定する必要があります。

説明

次のシナリオでは、Nacos サーバーの IP アドレスを指定する必要があります。

  • ローカルテストに合格した後、アプリケーションを SAE にホストする場合。

  • SAE サービスレジストリがセルフマネージド Nacos レジストリである場合。

  1. pom.xml ファイルに次の依存関係を追加します。

    プロバイダの pom.xml ファイルを開きます。spring-cloud-starter-netflix-eureka-clientspring-cloud-starter-alibaba-nacos-discovery に置き換え、Nacos サーバーのバージョンを構成します。

    置き換え前:

    <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>                            

    置き換え後:

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>                           
    説明
    • この例では Spring Cloud Greenwich を使用しています。spring-cloud-starter-alibaba-nacos-discovery のバージョンは 2.1.1.RELEASE です。

    • Spring Cloud Finchley を使用する場合は、spring-cloud-starter-alibaba-nacos-discovery のバージョンは 2.0.1.RELEASE です。

    • Spring Cloud Edgware を使用する場合は、spring-cloud-starter-alibaba-nacos-discovery のバージョンは 1.5.1.RELEASE です。このバージョンのサービスは終了しています。このバージョンはお勧めしません。詳細については、「Spring Cloud Edgware リリースノート」をご参照ください。

  2. Nacos サーバーの IP アドレスを指定します。

    src\main\resources 内の application.properties ファイルを開き、Nacos サーバーの IP アドレスを指定します。

    変更前:

    spring.application.name=service-consumer
    server.port=18082
    eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/                            

    変更後:

    spring.application.name=service-consumer
    server.port=18082
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848                            

    127.0.0.1 は Nacos サーバーの IP アドレスです。Nacos サーバーが別の物理サーバーにデプロイされている場合は、それに応じて IP アドレスを変更します。その他の要件がある場合は、構成項目 を参照して、application.properties ファイルに必要な構成を追加します。構成項目

  3. アプリケーションサービスをクエリします。

    1. mainConsumerApplicationnacos-service-consumer プロジェクトの の 関数を実行して、コンシューマを起動します。

    2. 127.0.0.1:8848/nacos にアクセスして、コンピュータにインストールされている Nacos サーバーコンソールにログオンします。左側のナビゲーションウィンドウで、[サービス管理] > [サービスリスト] を選択します。

      説明

      Nacos サーバーコンソールにログオンするためのデフォルトのユーザー名とパスワードは nacos です。

      [service-consumer][サービスリスト] に表示され、service-consumer の詳細をクエリできる場合、service-consumer は正常に登録されています。

手順 4: コンシューマがプロバイダのサービスを消費した結果を表示する

コンピュータで、コンシューマがプロバイダによって提供されるサービスを消費した結果を表示します。サービスを起動し、IP+ポート/echo-rest/<カスタム変数> または IP+ポート/echo-feign/<カスタム変数> を実行して結果を表示します。

  • Linux、UNIX、または macOS の場合、curl http://127.0.0.1:18082/echo-rest/<カスタム変数> または curl http://127.0.0.1:18082/echo-feign/<カスタム変数> を実行します。

  • Windows の場合、ブラウザに http://127.0.0.1:18082/echo-rest/<カスタム変数> または http://127.0.0.1:0.1:18082/echo-feign/<カスタム変数> を入力します。

Windows オペレーティングシステムでのサービスの使用例を次に示します。

Verify the result

ステップ 5: SAE にアプリケーションをデプロイする

このセクションでは、ローカルプログラムを実行可能な JAR パッケージにコンパイルする方法の例を提供します。また、デプロイメント前にアプリケーションのイメージを作成することもできます。

  1. アプリケーションの pom.xml ファイルに次の構成を追加し、mvn clean package コマンドを実行して、ローカルプログラムを実行可能な JAR パッケージにコンパイルします。

    <build>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <executions>
                     <execution>
                         <goals>
                             <goal>repackage</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
         </plugins>
     </build>                        
  2. コンパイルされたプロバイダーとコンシューマーのアプリケーションパッケージを SAE にデプロイします。詳細については、「JAR パッケージを使用して Java アプリケーションをデプロイする」をご参照ください。

    重要
    • SAE では、空のアプリケーションを作成することはできません。コンソールでアプリケーションを作成してから、アプリケーションにデータをプッシュする必要があります。

    • JAR パッケージを使用してアプリケーションをデプロイする場合は、[アプリケーションランタイム環境][標準 Java アプリケーションランタイム環境] に設定します。

    • WAR パッケージを使用してアプリケーションをデプロイする場合は、[アプリケーションランタイム環境][apache-tomcat-XXX] に設定します。

    SAE にアプリケーションをデプロイすると、SAE のサービスレジストリによって、Nacos サーバーの IP アドレス、サービスポート、名前空間、アクセスキー ID、およびアクセスキーシークレットが優先的に自動設定されます。必要に応じて、デフォルトの構成を保持または削除できます。

手順 6: 結果を確認する

  1. インターネットに接続された CLB インスタンスをコンシューマーにバインドし、ブラウザで CLB インスタンスに指定したパブリックエンドポイントを入力して、コンシューマーのホームページにアクセスします。詳細については、「CLB インスタンスをアプリケーションにバインドし、アプリケーションのパブリック IP アドレスまたはプライベート IP アドレスを生成する」をご参照ください。

  2. コンシューマーのホームページで、プロバイダーからサービスを呼び出すリクエストを作成します。SAEコンソール にログインします。左側のナビゲーションウィンドウで、[アプリケーション] > [アプリケーション] を選択します。上部のナビゲーションバーで、リージョンを選択します。

  3. [アプリケーション] ページで、コンシューマーを選択し、[基本情報] ページに移動します。

  4. 左側のナビゲーションウィンドウで、[アプリケーションモニタリング] > [アプリケーション概要] を選択して、サービス呼び出し全体のデータを表示します。

    プロバイダーからサービスを呼び出すリクエストに関するデータが [概要] ページに表示されている場合は、サービスが正常に呼び出されています。

構成項目

構成項目

キー

デフォルト値

説明

サーバー IP アドレス

spring.cloud.nacos.discovery.server-addr

なし

Nacos Server がリッスンする IP アドレスとポート。

サービス名

spring.cloud.nacos.discovery.service

${spring.application.name}

サービスの名前。

ネットワーク インターフェイス コントローラー (NIC) 名

spring.cloud.nacos.discovery.network-interface

なし

IP アドレスが指定されていない場合、NIC の IP アドレスが登録されます。この項目が構成されていない場合は、デフォルトで最初の NIC の IP アドレスが使用されます。

登録済み IP アドレス

spring.cloud.nacos.discovery.ip

なし

構成時に、登録済み IP アドレスは ENI 名よりも優先されます。

登録ポート

spring.cloud.nacos.discovery.port

-1

登録ポートを構成する必要はありません。システムはポートを自動的に検出します。

名前空間

spring.cloud.nacos.discovery.namespace

なし

異なる環境での登録の隔離。たとえば、開発、テスト、本番環境における構成やサービスなどのリソースの隔離。

メタデータ

spring.cloud.nacos.discovery.metadata

なし

このメタデータは JSON Map 形式で構成する必要があります。ビジネス要件に基づいてサービス関連のメタデータを指定できます。

クラスター

spring.cloud.nacos.discovery.cluster-name

DEFAULT

Nacos クラスターの名前。

エンドポイント

spring.cloud.nacos.discovery.endpoint

なし

リージョン内のサービスのドメイン名。このドメイン名に基づいて、サーバーの IP アドレスを動的に取得できます。 SAE にアプリケーションをデプロイする場合は、この項目を指定する必要はありません。

Ribbon 統合を有効にするかどうか

ribbon.nacos.enabled

true

必要な場合にのみ Ribbon 統合を無効にします。

Spring Cloud Alibaba Nacos Discovery の詳細については、「Spring Cloud Alibaba Nacos Discovery」をご参照ください。

次の手順

作成したアプリケーションで次の操作を実行できます。

  • アプリケーションはインターネットにアクセスしたり、インターネット経由でアクセスされたりすることはできません。 アプリケーションのネットワークを構成する場合は、「アプリケーションアクセス」をご参照ください。

  • 詳細については、「O&M 管理」をご参照ください。