Application Configuration Management (ACM) は廃止となり、すべてのデータが削除されます。早急に設定を Microservices Engine (MSE) Nacos に移行し、強化されたパフォーマンス、安定性、豊富な機能セットをご活用ください。ACM コンソールから設定をエクスポートして、MSE コンソールにインポートできます。
ACM のサポート終了後は、ACM コンソールで設定を作成または編集できなくなります。API 呼び出しはサービスレベルアグリーメント (SLA) の対象外となります。できるだけ早く移行を完了することを強く推奨します。
ステップ 1: MSE Nacos への設定のエクスポート
-
Alibaba Cloud アカウントで MSE 購入ページにログオンし、MSE Nacos Professional Edition インスタンスを購入します。Professional Edition は、設定の認証、暗号化をサポートし、強化された高可用性を提供します。vCPU 数、メモリサイズ、ノード数の選択については、「マイクロサービスレジストリインスタンスの機能の見積もり」をご参照ください。必要なパブリック帯域幅を見積もるには、次の計算式を使用します:変更頻度 (リクエスト/秒) × 設定数 × 設定サイズ (KB)。
-
ACM コンソールから移行する設定をエクスポートします。
-
ACM コンソールにログオンします。
-
Configurations ページで対象の設定を選択し、リストの下にある エクスポート をクリックし、[設定のエクスポート (公開)] ダイアログボックスで エクスポート をクリックします。
-
エクスポートされた設定ファイルを保存します。
-
-
設定を MSE コンソールにインポートします。
-
MSE コンソールにログオンします。
-
左側のナビゲーションペインで、マイクロサービスの登録 > インスタンス を選択します。
-
インスタンス ページで、購入した Nacos インスタンスの Instance ID をクリックします。
-
左側のナビゲーションペインで、Configuration Management > Configurations を選択します。
-
Configurations ページで、Import Configuration をクリックします。
-
Import Configuration ダイアログボックスで、Same Configurations の処理ポリシーを選択し、Upload File をクリックして ACM コンソールからエクスポートされた設定ファイルをアップロードし、OK をクリックします。
-
ステップ 2: アプリケーションのビジネスパラメータの置き換え
アプリケーションの種類に応じて、以下の手順に従ってビジネスパラメータを置き換えてください。
Spring Cloud Alibaba アプリケーションの移行
アプリケーションが Spring Cloud Alibaba アプリケーションの場合は、bootstrap.properties 設定ファイルを変更します。
次の内容を、
spring.cloud.nacos.config.endpoint=${ACM_PUBLIC/INTERNAL_ENDPOINT}
次のように置き換えます。
spring.cloud.nacos.config.server-addr=${MSE_NACOS_PUBLIC/INTERNAL_ENDPOINT}
また、namespace を MSE Nacos の namespace に更新してください。
spring.cloud.nacos.config.namespace=${MSE_NACOS_NAMESPACE_ID}
実行可能なデモについては、「acm2nacos-spring-cloud-example」をご参照ください。
アプリケーションが Spring Cloud Alibaba アプリケーションであるかを確認するには、
pom.xml ファイルで、次の依存関係を確認してください。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
-
この移行方法は、MSE Nacos 2.0.3 以降でのみサポートされています。MSE Nacos のバージョンが 2.0.3 より前の場合は、MSE コンソールでインスタンスをアップグレードしてください。アップグレードには約 5 ~ 6 分かかります。「Nacos エンジンバージョンのアップグレード」
-
クラスタの高可用性を確保するには、少なくとも 3 つのノードを設定してください。
-
MSE Nacos インスタンスのパブリックエンドポイントと内部エンドポイントは、インスタンスの **[Basic Information]** ページで確認できます。
-
MSE Nacos のデフォルトのネームスペースには ID がないため、パラメーターは空のままでかまいません。 デフォルト以外のネームスペースを使用する場合、インスタンスのNamespacesページで ID を確認できます。
デプロイにパブリックエンドポイントを使用する場合は、接続を確保するために、クライアント IP アドレスをホワイトリストに追加する必要があります。「ホワイトリストの設定」
空のホワイトリストは、任意の IP アドレスからのアクセスを許可します。
Java アプリケーションの移行
-
ACM-Java-SDK を使用している場合、
pom.xmlファイルには次の依存関係が含まれています。<dependency> <groupId>com.alibaba.edas.acm</groupId> <artifactId>acm-sdk</artifactId> </dependency>移行するには、次の JVM 引数を追加してアプリケーションを再デプロイしてください。
-DDIAMOND.SERVER.IPS=${MSE_NACOS_PUBLIC/INTERNAL_ENDPOINT}また、コード内の namespace 設定を変更してください。
properties.put("namespace", "${namespaceId}"); -
ACM クライアントを使用していて、Nacos クライアントに切り替える場合は、Nacos-Java-SDK ユーザー向けの移行手順に従ってください。
-
Nacos-Java-SDK を使用している場合、
pom.xmlファイルには次の依存関係が含まれています。
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
プレースホルダー ${...} を MSE のパブリックまたは内部エンドポイントに、${namespaceId} を MSE の名前空間 ID に置き換えてから、アプリケーションを再デプロイします。デフォルトの名前空間を使用する場合は、名前空間パラメーターを空にします。
properties.put("serverAddr", ${MSE_NACOS_PUBLIC/INTERNAL_ENDPOINT});
properties.put("namespace", "${namespaceId}");
起動時に次の引数を追加すると、移行が完了します。
-Dnacos.cache.data.init.snapshot=false
公式の Java デモについては、「acm2nacos-java-example」をご参照ください。公式の Java アプリケーションデモについては、「Java SDK」をご参照ください。
nacos-spring-boot アプリケーションの移行
アプリケーションが nacos-spring-boot アプリケーションの場合、application.properties 設定ファイルを変更します。
次の内容を、
nacos.config.endpoint=${ACM_PUBLIC/INTERNAL_ENDPOINT}
次のように置き換えます。
nacos.config.server-addr=${MSE_NACOS_PUBLIC/INTERNAL_ENDPOINT}
また、namespace を MSE Nacos の namespace に更新してください。
nacos.config.namespace=${MSE_NACOS_NAMESPACE_ID}
Golang アプリケーションの移行
API を呼び出す前に、アクセス認証情報の環境変数を設定してください。AccessKey ID には MSE_AK を、AccessKey Secret には 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, }, }
公式の Golang アプリケーションデモについては、「nacos-sdk-go」をご参照ください。
Python アプリケーションの移行
-
ACM-Python-SDK を使用する場合、
${endpoint}を MSE Nacos インスタンスのパブリック/内部エンドポイントに置き換え、${namespace_id}をその名前空間 ID に置き換えます。ENDPOINT = "${endpoint}" NAMESPACE = "${namespace_id}" c = acm.ACMClient(ENDPOINT, NAMESPACE, MSE_AK, MSE_SK) -
Nacos-Python-SDK を使用する場合、
${server_address}をお使いの MSE Nacos インスタンスのパブリック/内部エンドポイントに、${namespace_id}をその名前空間 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}をその名前空間 ID に置き換えます。// アドレス検索モードの場合 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}をその名前空間 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} をその名前空間 ID に置き換えます。
{
"NacosConfig": {
"Listeners": [
{
"Optional": false,
"DataId": "common",
"Group": "DEFAULT_GROUP"
},
{
"Optional": false,
"DataId": "demo",
"Group": "DEFAULT_GROUP"
}
],
"Namespace": "namespace_id", // Namespace ID の値を設定してください。
"ServerAddresses": [ "http://${server_address}:8848/" ],
"UserName": "test2",
"Password": "123456",
"AccessKey": "MSE_AK",
"SecretKey": "MSE_SK",
"ConfigFilterAssemblies": ["YouPrefix.AssemblyName"],
"ConfigFilterExtInfo": "some ext information"
}
}
C++ アプリケーションの移行
-
ACM-CPP-SDK を使用する場合、
${endpoint}をご使用の MSE Nacos インスタンスのパブリック/内部エンドポイントに、${namespace_id}をその名前空間 ID に置き換えます。// 次のパラメータを使用して設定サービスを初期化します。 ACM::init("${endpoint}", "${namespace_id}", "${MSE_AK}", "${MSE_SK}"); -
Nacos-CPP-SDK を使用する場合は、
${server_address}をご使用の MSE Nacos インスタンスのパブリック/内部エンドポイントに置き換えてください。Properties props; props[PropertyKeyConst::SERVER_ADDR] = "${server_address}:8848";// サーバーアドレス
(オプション) ステップ 3: RAM ユーザーの再権限付与
設定の認証を使用し、RAM ユーザーに権限を付与している場合は、MSE に移行した後、権限付与スクリプトを更新して権限を再付与してください。「マイクロサービスレジストリへのアクセスの権限付与」
-
左側のナビゲーションペインで、**[Permissions]** > **[Policies]** を選択します。
-
**[Policies]** ページの左上隅で、**[Create Policy]** をクリックします。
-
**[Create Policy]** ページで、**[JSON]** タブをクリックします。
-
ローカルスクリプトをポリシーエディタに貼り付けて、既存の内容を置き換えてください。
次にサンプルスクリプトを示します。
{ "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}: ACM の名前空間 ID。 -
{instance_id}:お使いの MSE インスタンスの ID です。 -
{mse_namespace_id}: MSE の名前空間 ID。 -
{group_id}: グループ ID。 -
{data_id}: データ ID です。
-
group_id または data_id のレベルで権限を付与する必要がない場合は、リソースパスからその部分を削除してください。
-
namespaceレベルで権限を付与するには、次のリソースパスを使用します。"Resource": "acs:mse:*:*:instance/{instance_id}/{mse_namespace_id}" -
group_idレベルで権限を付与するには、以下のリソースパスを使用します。"Resource": "acs:mse:*:*:instance/{instance_id}/{mse_namespace_id}/{group_id}"
スクリプトを置き換えた後、新しいポリシーで定義された権限を RAM ユーザーに付与してください。「マイクロサービスレジストリへのアクセスの権限付与」
RAM ユーザーの新しい権限は、約 5 ~ 10 秒後に有効になります。
ステップ 4: アプリケーションの再デプロイと起動
アプリケーションを再デプロイしてください。デプロイが成功すると、移行が完了します。