セルフマネージド Nacos 設定センターと比較して、Microservices Engine (MSE) Nacos は、設定の暗号化、復号化、プッシュトラッキングなどの高度な機能を提供します。高性能、高可用性、使いやすさを実現し、運用保守コストを大幅に削減します。このトピックでは、セルフマネージドのオープンソース Nacos 設定センターから MSE Nacos に移行する方法について説明します。
前提条件
-
Nacos エンジンを作成している必要があります。
-
必要な名前空間を作成している必要があります。詳細については、「名前空間の作成」をご参照ください。
説明セルフマネージド Nacos インスタンスに複数の名前空間がある場合は、円滑な移行を確実にするために、MSE Nacos に同じ名前と ID で対応する名前空間を作成してください。
手順 1:MSE Nacos への設定の移行
方法 1:インポートとエクスポートの使用
名前空間ごとに設定を個別にエクスポートおよびインポートしてください。
-
セルフマネージド Nacos コンソールから設定をエクスポートします。
-
セルフマネージド Nacos コンソールにログインします。
-
Configurations ページで、移行する設定を選択し、エクスポート をリストの下部でクリックします。 Export Configuration ダイアログボックスで、エクスポート をクリックします。
-
エクスポートした設定ファイルを保存します。
-
-
MSE コンソールに設定をインポートします。
MSE コンソールにログオンします。
左側のナビゲーションウィンドウで、マイクロサービスの登録 > インスタンス を選択します。インスタンスの名前をクリックします。
左側のナビゲーションウィンドウで設定管理> 設定を選択します。
-
Configurationsページで、宛先の名前空間を選択し、Import Configurationをクリックします。
-
Import Configuration ダイアログボックスで、インポートポリシーを設定します。同じ名前の既存の設定がある場合は、Stop Import、Skip、または Overwrite を選択します。セルフマネージド Nacos インスタンスからエクスポートした設定ファイルをアップロードし、OK をクリックします。
-
双方向更新を実行します。
説明円滑な移行を確実にするため、アプリケーションを切り替えるまで、セルフマネージド Nacos インスタンスと MSE Nacos の間で設定の同期を維持してください。SDK を使用して設定を更新する場合は、ダブルライトメカニズムを実装してください。コンソールで設定を更新する場合は、両方のコンソールで手動で変更を適用してください。
方法 2:MSE Sync を使用したホットマイグレーション
MSE Sync のデプロイ方法については、「MSE Sync を使用した移行」をご参照ください。
-
MSE Sync がデプロイされたら、MSE コンソールにログインします。ナビゲーションペインで、マイクロサービスの登録 > Migration to Cloud を選択します。[Migration to Cloud] ページで、Migration configuration をクリックします。
-
Migration configuration ページで、Next をクリックします。Create Configuration の手順で、Source Instance Type を [Nacos] に、Synchronization Type を Configuration Synchronization に設定します。Source Instance Node Address フィールドにソースインスタンスの IP アドレスとポートを入力し、Destination Instance を選択します。Next をクリックします。Implement migration ページで、Download and save the configuration that you want to migrate. をクリックし、ファイルを MSE Sync にインポートして、ソースクラスターからのホット同期を有効にします。
[Source Name] (3~15 文字) を入力します。[Namespace List] に、移行するソース Nacos インスタンスの名前空間を入力します。[Description] (最大 64 文字) を追加することもできます。宛先インスタンスの仕様は、評価による推奨値を満たすか、それを超えることを推奨します。JVM パラメーターや Nacos 認証などの高度な設定については、関連ドキュメントをご参照ください。
-
設定の同期は、カナリア設定をサポートしていません。MSE Sync がどちらかのクラスターのカナリアスコープ内にある場合、カナリア設定は通常の構成として他のクラスターに同期されます。
-
ソースクラスターと宛先クラスターで設定を同時に変更しないでください。
手順 2:アプリケーションパラメーターの更新
アプリケーションの種類に基づいて、アプリケーションのパラメーターを更新してください。
Spring Cloud Alibaba アプリケーションの移行
-
アプリケーションが Spring Cloud Alibaba アプリケーションであるかどうかを確認します。
アプリケーションの pom.xml ファイルに次の依存関係が含まれている場合、そのアプリケーションは Spring Cloud Alibaba アプリケーションです。
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> -
アプリケーションが Spring Cloud Alibaba アプリケーションの場合は、その bootstrap.properties ファイルを変更してください。
${MSE_ENDPOINT} を、宛先の MSE Nacos インスタンスのパブリックエンドポイントまたは内部エンドポイントに置き換えてください。エンドポイントは、インスタンスの [基本情報] ページで確認できます。
spring.cloud.nacos.config.server-addr=${MSE_ENDPOINT}次の設定で、名前空間を MSE の名前空間 ID に置き換えてください。ID は、Nacos インスタンスの [Namespaces] ページで確認できます。ID が以前のセットアップから変更されていない場合は、変更は不要です。デフォルトの名前空間を使用している場合は、このパラメーターを空のままにしてください。
-
パブリックエンドポイントを使用してアプリケーションをデプロイする場合は、接続を確保するためにクライアント IP アドレスをホワイトリストに追加してください。詳細については「ホワイトリストの設定」をご参照ください。
-
ホワイトリストが空の場合、すべての IP アドレスがアプリケーションにアクセスできます。
Java アプリケーションの移行
-
アプリケーションが Nacos Java SDK を使用しているかどうかを確認します。
pom.xml ファイルに次の依存関係が存在する場合、アプリケーションは Nacos Java SDK を使用しています。
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> </dependency> -
アプリケーションが Nacos Java SDK を使用している場合、次のコードの ${MSE_ENDPOINT} を MSE インスタンスのエンドポイントに置き換えてください。${NAMESPACE_ID} を MSE インスタンスの名前空間 ID に置き換えてください。デフォルトの名前空間を使用する場合、このパラメーターは空のままにすることができます。名前空間 ID が変更されていない場合は、変更は不要です。その後、アプリケーションを再デプロイしてください。
properties.put("serverAddr", "${MSE_ENDPOINT}"); properties.put("namespace", "${NAMESPACE_ID}");
Nacos Spring Boot アプリケーションの移行
アプリケーションが Nacos Spring Boot アプリケーションの場合は、その application.properties ファイルを変更してください。
${MSE_ENDPOINT} を MSE インスタンスのエンドポイントに置き換えてください。
nacos.config.server-addr=${MSE_ENDPOINT}
次の設定で、名前空間を MSE の名前空間 ID に置き換えてください。
nacos.config.namespace=${NAMESPACE_ID}
Go アプリケーションの移行
API 操作を呼び出す前に、環境変数を使用してアクセス認証情報を設定してください。Microservices Engine の AccessKey ID と AccessKey Secret の環境変数名は、それぞれ MSE_AK と MSE_SK です。
Nacos Go SDK を使用する場合は、${MSE_ENDPOINT} を MSE インスタンスのエンドポイントに置き換える必要があります。
sc := []constant.ServerConfig{
{
IpAddr: "${MSE_ENDPOINT}",
Port: 8848,
},
}
公式の Go アプリケーションデモについては、「nacos-sdk-go」をご参照ください。
Python アプリケーションの移行
Nacos Python SDK を使用する場合は、${SERVER_ADDRESSES} と ${NAMESPACE_ID} を MSE インスタンスのエンドポイントと名前空間 ID に置き換える必要があります。
SERVER_ADDRESSES = "${SERVER_ADDRESSES}"
NAMESPACE = "${NAMESPACE_ID}"
client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE)
Node.js アプリケーションの移行
Nacos Node.js SDK を使用する場合は、${SERVER_ADDRESS} と ${NAMESPACE_ID} を MSE インスタンスのエンドポイントと名前空間 ID に置き換える必要があります。
const configClient = new NacosConfigClient({
serverAddr: '${SERVER_ADDRESS}',
namespace: '${NAMESPACE_ID}',
accessKey: 'MSE_AK',
secretKey: 'MSE_SK',
requestTimeout: 6000,
});
C# アプリケーションの移行
${SERVER_ADDRESS} と ${NAMESPACE_ID} を MSE インスタンスのエンドポイントと名前空間 ID に置き換えてください。
{
"NacosConfig": {
"Listeners": [
{
"Optional": false,
"DataId": "common",
"Group": "DEFAULT_GROUP"
},
{
"Optional": false,
"DataId": "demo",
"Group": "DEFAULT_GROUP"
}
],
"Namespace": "${NAMESPACE_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 information"
}
}
C++ アプリケーションの移行
Nacos C++ SDK を使用する場合は、${SERVER_ADDRESS} と ${NAMESPACE_ID} を MSE インスタンスのエンドポイントと名前空間 ID に置き換える必要があります。
Properties props;
props[PropertyKeyConst::SERVER_ADDR] = "${SERVER_ADDRESS}:8848";
props[PropertyKeyConst::NAMESPACE] = "${NAMESPACE_ID}";
手順 3:セルフマネージドインスタンスの確認と廃止
すべてのアプリケーションが MSE Nacos 上で安定して実行されたら、2 つのインスタンス間の設定の同期を停止できます。セルフマネージドインスタンスを監視して、トラフィックやクライアント接続が残っていないことを確認してください。セルフマネージドインスタンスに残りのトラフィック、クライアント接続、または設定プッシュクエリがないことを確認した後、インスタンスを廃止できます。