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

Microservices Engine:アプリケーション構成管理から MSE Nacos インスタンスへのアプリケーションの移行

最終更新日:Jan 08, 2025

アプリケーション構成管理は廃止状態に入り、アプリケーション構成管理のすべてのデータが削除されます。できるだけ早く、アプリケーション構成管理から MSE Nacos インスタンスにアプリケーション構成を移行することをお勧めします。 MSE Nacos インスタンスは、より優れたパフォーマンスの安定性とより多くの機能を提供します。このトピックでは、アプリケーション構成管理コンソールから構成をエクスポートし、エクスポートされた構成を MSE コンソールにインポートする方法について説明します。

重要

アプリケーション構成管理のサポートが終了すると、アプリケーション構成管理コンソールで構成を作成または編集できなくなります。アプリケーション構成管理のサポート終了後、アプリケーション構成管理に対する API 操作のサービスレベルアグリーメント(SLA)は保証されなくなります。したがって、できるだけ早く構成を移行することをお勧めします。

手順 1:アプリケーション構成を MSE Nacos インスタンスにエクスポートする

  1. Alibaba Cloud アカウントを使用して MSE 購入ページ にログインし、Nacos インスタンスを購入します。

    MSE Nacos プロフェッショナル版インスタンスを購入することをお勧めします。 MSE Nacos プロフェッショナル版インスタンスは Nacos 2.0 をサポートしており、構成の認証と暗号化をサポートし、より高い可用性を提供します。 MSE Nacos プロフェッショナル版インスタンスの vCPU 数、メモリ、ノード数の選択方法の詳細については、「マイクロサービスレジストリインスタンスの機能を推定する」をご参照ください。 Nacos インスタンスのパブリック帯域幅を購入する場合は、単位変換に基づいて必要なパブリック帯域幅を推定できます。次の式を使用して単位変換を実行できます:変更頻度(単位:回数/秒)× 構成数 × 構成サイズ(単位:KB)

  2. 移行する構成をアプリケーション構成管理コンソールからエクスポートします。

    1. アプリケーション構成管理コンソール にログインします。

    2. [構成] ページで、必要な構成を選択し、ページの下部にある [エクスポート] をクリックします。表示されるメッセージで、[エクスポート] をクリックします。

    3. エクスポートされた構成ファイルを保存します。

  3. エクスポートされた構成ファイルを MSE コンソールにインポートします。

    1. MSE コンソール にログインします。

    2. 左側のナビゲーションペインで、[マイクロサービスレジストリ] > [インスタンス] を選択します。

    3. [インスタンス] ページで、購入した Nacos インスタンスの [ID] をクリックします。

    4. 左側のナビゲーションペインで、[構成] > [構成] を選択します。

    5. [構成] ページで、[構成のインポート] をクリックします。

    6. [構成のインポート] ダイアログボックスで、[同じ構成] ドロップダウンリストからオプションを選択し、構成ファイルの [ファイルのアップロード] をクリックして、アプリケーション構成管理コンソールからエクスポートされた構成ファイルをアップロードします。次に、[OK] をクリックします。

手順 2:アプリケーションビジネスパラメータを置き換える

アプリケーションのタイプに基づいて、適切な方法を選択してアプリケーションビジネスパラメータを置き換えます。

Spring Cloud Alibaba アプリケーション

アプリケーションが Spring Cloud Alibaba アプリケーションの場合は、アプリケーションの bootstrap.properties 構成ファイルを変更します。

以下を置き換えます。

spring.cloud.nacos.config.endpoint=${Public or internal endpoint of Application Configuration Management}

以下に置き換えます。

spring.cloud.nacos.config.server-addr=${Public or internal endpoint of your MSE Nacos instance}

次の構成で、MSE Nacos インスタンスの名前空間の ID を指定します。

spring.cloud.nacos.config.namespace =${ID of a namespace in your MSE Nacos instance}

サンプルデモの詳細については、「acm2nacos-spring-cloud-example」をご参照ください。

次の方法を使用して、アプリケーションが Spring Cloud Alibaba アプリケーションかどうかを確認できます。

pom.xml ファイルに次の依存関係が見つかった場合、アプリケーションは Spring Cloud Alibaba アプリケーションです。

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
重要

  • MSE Nacos 2.0.3 以降でのみ、Spring Cloud Alibaba アプリケーションの構成を MSE Nacos インスタンスに移行できます。 MSE Nacos のバージョンが 2.0.2 以前の場合は、MSE コンソールで Nacos のバージョンをアップグレードする必要があります。アップグレードプロセスには約 5 ~ 6 分かかります。

  • インスタンスの高可用性を確保するには、インスタンスに少なくとも 3 つのノードを構成します。

  • MSE Nacos インスタンスのパブリックエンドポイントまたは内部エンドポイントは、インスタンスの [基本情報] ページから取得できます。

  • デフォルトの名前空間を使用する場合、名前空間には ID がありません。この場合、名前空間 ID は空のままにすることができます。宛先名前空間に ID がある場合は、MSE コンソールの MSE Nacos インスタンスの [名前空間] ページから名前空間 ID を取得できます。

インターネット経由で MSE Nacos インスタンスにアクセスする場合は、接続を確保するために、クライアントのパブリック IP アドレスを MSE Nacos インスタンスのパブリック IP アドレスホワイトリストに追加する必要があります。

説明

MSE Nacos インスタンスのパブリック IP アドレスホワイトリストに IP アドレスまたは CIDR ブロックが追加されていない場合、すべてのパブリック IP アドレスを使用して MSE Nacos インスタンスにアクセスできます。

Java アプリケーション

  • ACM-Java-SDK が使用されている場合、pom.xml ファイルに次の依存関係が存在します。

    <dependency>
        <groupId>com.alibaba.edas.acm</groupId>
        <artifactId>acm-sdk</artifactId>
    </dependency>

    この場合、次のパラメータを JVM ランタイムパラメータに直接追加し、アプリケーションを再デプロイして移行を完了できます。

    -DDIAMOND.SERVER.IPS=${Public or internal endpoint of your MSE Nacos instance}

    コード内の名前空間情報を変更します。

    properties.put("namespace", "{namespaceId}");

  • 移行後にアプリケーション構成管理クライアントの代わりに Nacos クライアントを使用する場合は、後続の手順に従います。

  • Nacos-Java-SDK が使用されている場合、pom.xml ファイルに次の依存関係が存在します。

<dependency>
  <groupId>com.alibaba.nacos</groupId>
  <artifactId>nacos-client</artifactId>
</dependency>

この場合、次のコードで ${} を MSE Nacos インスタンスの登録済みエンドポイントに設定し、{namespaceId} を MSE Nacos インスタンスの名前空間 ID に設定してから、アプリケーションを再デプロイして移行を完了できます。デフォルトの名前空間を使用する場合は、{namespaceId} を空のままにします。

properties.put("serverAddr", ${Public or internal endpoint of your MSE Nacos instance});
properties.put("namespace", "{namespaceId}");

アプリケーションを起動するときは、次のパラメータを追加して移行を完了します。

 -Dnacos.cache.data.init.snapshot=false
説明

Nacos-Java-SDK を使用して Java アプリケーションの構成を移行するサンプルデモの詳細については、「acm2nacos-java-example」をご参照ください。 Nacos-Java-SDK のサンプルデモの詳細については、「Java SDK」をご参照ください。

Nacos Spring Boot アプリケーション

アプリケーションが Nacos Spring Boot アプリケーションの場合は、アプリケーションの application.properties 構成ファイルを変更します。

以下を置き換えます。

nacos.config.endpoint=${Public or internal endpoint of Application Configuration Management}

以下に置き換えます。

nacos.config.server-addr=${Public or internal endpoint of your MSE Nacos instance}

次の構成で、MSE Nacos インスタンスの名前空間の ID を指定します。

nacos.config.namespace=${ID of a namespace in your MSE Nacos instance}

Golang アプリケーション

説明

操作を呼び出す前に、環境変数を構成し、環境変数からアクセス認証情報を取得する必要があります。 MSE Nacos インスタンスの AccessKey ID と AccessKey シークレットの環境変数は、それぞれ MSE_AK と MSE_SK です。

  • ACM-golang-SDK が使用されている場合、${endpoint} を MSE Nacos インスタンスの登録済みエンドポイントに設定する必要があります。

    clientConfig := constant.ClientConfig{
            Endpoint:       ${endpoint} + ":8080",
            NamespaceId:    namespaceId,
            AccessKey:      MSE_AK,
            SecretKey:      MSE_SK,
            TimeoutMs:      5 * 1000,
            ListenInterval: 30 * 1000,
        }
  • Nacos-golang-SDK が使用されている場合、${serverAddr} を MSE Nacos インスタンスの登録済みエンドポイントに設定する必要があります。

    sc := []constant.ServerConfig{
        {
        IpAddr: "${serverAddr}",
        Port:   8848,
        },
    }
説明

Nacos-golang-SDK のサンプルデモの詳細については、「nacos-sdk-go」をご参照ください。

Python アプリケーション

  • ACM-Python-SDK が使用されている場合、${endpoint} を MSE Nacos インスタンスの登録済みエンドポイントに設定し、${namespace_id} を MSE Nacos インスタンスの名前空間 ID に設定する必要があります。

    ENDPOINT = "${endpoint}"
    NAMESPACE = "${namespace_id}"
    c = acm.ACMClient(ENDPOINT, NAMESPACE, AK, SK)
  • Nacos-Python-SDK が使用されている場合、${server_address} を MSE Nacos インスタンスの登録済みエンドポイントに設定し、${namespace_id} を MSE Nacos インスタンスの名前空間 ID に設定する必要があります。

    SERVER_ADDRESSES = "${server_address}"
    NAMESPACE = "${namespace_id}"
    client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE)

Node.js アプリケーション

  • ACM-Nodejs-SDK が使用されている場合、${endpoint} を MSE Nacos インスタンスの登録済みエンドポイントに設定し、${namespace_id} を MSE Nacos インスタンスの名前空間 ID に設定する必要があります。

    // for find address mode
    const configClient = new NacosConfigClient({
      endpoint: '${endpoint}',
      namespace: '${namespace_id}',
      accessKey: 'MSE_AK',
      secretKey: 'MSE_SK',
      requestTimeout: 6000,
    });
  • Nacos-Nodejs-SDK が使用されている場合、${server_address} を MSE Nacos インスタンスの登録済みエンドポイントに設定し、${namespace_id} を MSE Nacos インスタンスの名前空間 ID に設定する必要があります。

    const configClient = new NacosConfigClient({
      serverAddr: '${server_address}',
      namespace: '${namespace_id}',
      accessKey: 'MSE_AK',
      secretKey: 'MSE_SK',
      requestTimeout: 6000,
    });

C# アプリケーション

${server_address} を MSE Nacos インスタンスの登録済みエンドポイントに設定し、namespace_id を MSE Nacos インスタンスの名前空間 ID に設定します。

{
  "NacosConfig": {
    "Listeners": [
      {
        "Optional": false,
        "DataId": "common",
        "Group": "DEFAULT_GROUP"
      },
      {
        "Optional": false,
        "DataId": "demo",
        "Group": "DEFAULT_GROUP"
      }
    ],
    "Namespace": "namespace_id",  // 名前空間 ID の値を設定してください!!!!!!!
    "ServerAddresses": [ "http://${server_address}:8848/" ],
    "UserName": "test2",
    "Password": "123456",
    "AccessKey": "MSE_AK",
    "SecretKey": "MSE_SK",
    "EndPoint": "acm.aliyun.com",
    "ConfigFilterAssemblies": ["YouPrefix.AssemblyName"],
    "ConfigFilterExtInfo": "some ext infomation"
  }
}

C++ アプリケーション

  • ACM-CPP-SDK が使用されている場合、${endpoint} を MSE Nacos インスタンスの登録済みエンドポイントに設定し、$namespace_id を MSE Nacos インスタンスの名前空間 ID に設定する必要があります。

    // Initialize configuration service and the console will retrieve the following parameters through the sample code.
     ACM::init("${endpoint}","$namespace_id","$accessKey","$secretKey");
  • Nacos-CPP-SDK が使用されている場合、${server_address} を MSE Nacos インスタンスの登録済みエンドポイントに設定する必要があります。

    Properties props;
    props[PropertyKeyConst::SERVER_ADDR] = "${serverAddr}:8848";//Server address

手順 3(オプション):移行後に RAM ユーザーに権限を付与する

構成認証機能を使用して特定の RAM ユーザーに権限を付与する場合は、アプリケーションが MSE Nacos インスタンスに移行された後に、認証スクリプトを置き換え、RAM ユーザーに権限を再度付与する必要があります。

  1. Resource Access Management(RAM)コンソール にログインします。

  2. 左側のナビゲーションペインで、[権限] > [ポリシー] を選択します。

  3. [ポリシー] ページの左上隅にある [ポリシーの作成] をクリックします。

  4. [ポリシーの作成] ページで、[JSON] タブをクリックします。JSON

  5. オンプレミススクリプトを使用して、コードエディタのスクリプトを置き換えます。

    置き換えるサンプルスクリプト:

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "acms:R"
                ],
                "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP/com.alibaba.acm.test",
                "Effect": "Allow"
            }
        ]
    }
  • 読み取り権限を置き換える

    以下を置き換えます。

    "Action": [
                    "acms:R"
                ]

    以下に置き換えます。

    "Action": [
                    "mse:List*",
                    "mse:Query*",
                    "mse:Get*"
                ]
  • 書き込み権限を置き換える

    以下を置き換えます。

    "Action": [
                    "acms:W"
                ]

    以下に置き換えます。

    "Action": [
                    "mse:Create*",
                    "mse:Update*",
                    "mse:Delete*"
                ]
  • リソース情報を置き換える

    以下を置き換えます。

    "Resource": "*:*:*:*:cfg/{acm_namespace_id}/{group_id}/{data_id}"

    以下に置き換えます。

    "Resource": "acs:mse:*:*:instance/{instance_id}/{mse_namespace_id}/{group_id}/{data_id}"
    説明

    パラメータの説明:

    • {acm_namespace_id}:アプリケーション構成管理の名前空間 ID。

    • {instance_id}:MSE Nacos インスタンスの ID。

    • {mse_namespace_id}:MSE Nacos インスタンスの名前空間 ID。

    • {group_id}:グループ ID。

    • {data_id}:データ ID。

認証に {group_id} または {data_id} が不要な場合は、パラメータを削除できます。

  • 認証に {instance_id} と {mse_namespace_id} のみが必要な場合は、リソース情報を次の内容に置き換えます。

    "Resource": "acs:mse:*:*:instance/{instance_id}/{mse_namespace_id}"
  • 認証に {instance_id}、{mse_namespace_id}、{group_id} のみが必要な場合は、リソース情報を次の内容に置き換えます。

    "Resource": "acs:mse:*:*:instance/{instance_id}/{mse_namespace_id}/{group_id}"

置き換えが完了したら、スクリプトで指定された権限を RAM ユーザーに付与します。

RAM ユーザーに付与された権限は、再認証操作の実行後 5 ~ 10 秒で有効になります。

手順 4:アプリケーションを再デプロイして起動する

アプリケーションを再デプロイします。デプロイが成功すると、移行プロセス全体が完了します。