Le service Application Configuration Management (ACM) est en cours de mise hors service et toutes ses données seront supprimées. Migrez vos configurations vers Microservices Engine (MSE) Nacos dès que possible pour bénéficier de performances améliorées, d'une stabilité accrue et d'un ensemble de fonctionnalités plus riche. Exportez les configurations depuis la console ACM et importez-les dans la console MSE.
Une fois qu'ACM atteindra sa fin de prise en charge, vous ne pourrez plus créer ni modifier de configurations dans la console ACM. Les appels API ne seront plus couverts par un accord de niveau de service (SLA). Nous vous recommandons vivement de finaliser la migration au plus vite.
Étape 1 : Exporter les configurations vers MSE Nacos
Connectez-vous à la page d'achat de MSE avec votre compte Alibaba Cloud et achetez une instance MSE Nacos Edition Professionnelle. L'édition professionnelle prend en charge l'authentification et le chiffrement des configurations, tout en offrant une haute disponibilité renforcée. Pour obtenir des conseils sur le choix du nombre de vCPU, de la taille de la mémoire et du nombre de nœuds, consultez Estimer les capacités des instances de registre de microservices. Pour estimer la bande passante publique requise, utilisez la formule suivante : Fréquence de modification (requêtes/s) × Nombre de configurations × Taille de la configuration (Ko).
-
Exportez les configurations que vous souhaitez migrer depuis la console ACM.
Connectez-vous à la console ACM.
-
Sur la page Configurations, sélectionnez la configuration cible, cliquez sur Export sous la liste, puis cliquez sur Export dans la boîte de dialogue Export Configurations (public).
Enregistrez le fichier de configuration exporté.
-
Importez les configurations dans la console MSE.
Connectez-vous à la console MSE.
Dans le volet de navigation de gauche, choisissez Microservices Registry > Instances.
Sur la page Instances, cliquez sur l'Instance ID de l'instance Nacos que vous avez achetée.
Dans le volet de navigation de gauche, choisissez Configuration Management > Configurations.
Sur la page Configurations, cliquez sur Import Configuration.
Dans la boîte de dialogue Import Configuration, sélectionnez une stratégie pour gérer les Same Configurations, cliquez sur Upload File pour charger le fichier de configuration exporté depuis la console ACM, puis cliquez sur OK.
Étape 2 : Remplacer les paramètres métier de l'application
Suivez les étapes correspondant au type de votre application pour remplacer les paramètres métier.
Migrer les applications Spring Cloud Alibaba
Si votre application est une application Spring Cloud Alibaba, modifiez le fichier de configuration bootstrap.properties.
Remplacez le contenu suivant :
spring.cloud.nacos.config.endpoint=${ACM_PUBLIC/INTERNAL_ENDPOINT}
par :
spring.cloud.nacos.config.server-addr=${MSE_NACOS_PUBLIC/INTERNAL_ENDPOINT}
Mettez également à jour le namespace vers celui de votre MSE Nacos :
spring.cloud.nacos.config.namespace=${MSE_NACOS_NAMESPACE_ID}
Pour consulter une démonstration fonctionnelle, reportez-vous à acm2nacos-spring-cloud-example.
Pour vérifier si votre application est une application Spring Cloud Alibaba :
Vérifiez la présence de la dépendance suivante dans le fichier pom.xml :
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
Cette méthode de migration est prise en charge uniquement par MSE Nacos version 2.0.3 et ultérieures. Si votre version de MSE Nacos est antérieure à la 2.0.3, mettez à niveau votre instance dans la console MSE. La mise à niveau prend environ 5 à 6 minutes. Mettre à niveau la version du moteur Nacos
Afin de garantir la haute disponibilité de votre cluster, configurez au moins trois nœuds.
-
Vous trouverez les endpoints publics et internes de votre instance MSE Nacos sur sa page Basic Information.
Le namespace par défaut dans MSE Nacos ne possède pas d'ID, vous pouvez donc laisser ce paramètre vide. Si vous utilisez un namespace autre que celui par défaut, vous trouverez son ID sur la page Namespaces de votre instance.
Si vous utilisez un endpoint public pour le déploiement, vous devez ajouter les adresses IP des clients à la liste d'autorisation afin d'assurer la connectivité. Définir une liste d'autorisation
Une liste d'autorisation vide permet l'accès depuis n'importe quelle adresse IP.
Migrer les applications Java
-
Si vous utilisez l'ACM-Java-SDK, votre fichier
pom.xmlcontient la dépendance suivante :<dependency> <groupId>com.alibaba.edas.acm</groupId> <artifactId>acm-sdk</artifactId> </dependency>Pour migrer, ajoutez l'argument JVM suivant et redéployez l'application.
-DDIAMOND.SERVER.IPS=${MSE_NACOS_PUBLIC/INTERNAL_ENDPOINT}Modifiez également le paramètre de namespace dans votre code.
properties.put("namespace", "${namespaceId}"); Si vous utilisez un client ACM et souhaitez passer à un client Nacos, suivez les instructions destinées aux utilisateurs de Nacos-Java-SDK.
Si vous utilisez le Nacos-Java-SDK, votre fichier
pom.xmlcontient la dépendance suivante :
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
Remplacez l'espace réservé ${...} par l'endpoint public ou interne de MSE et ${namespaceId} par l'ID du namespace MSE, puis redéployez l'application. Si vous utilisez le namespace par défaut, laissez le paramètre de namespace vide.
properties.put("serverAddr", ${MSE_NACOS_PUBLIC/INTERNAL_ENDPOINT});
properties.put("namespace", "${namespaceId}");
Ajoutez l'argument suivant au démarrage pour finaliser la migration.
-Dnacos.cache.data.init.snapshot=false
Pour une démonstration Java officielle, consultez acm2nacos-java-example. Pour une démonstration d'application Java officielle, reportez-vous à Java SDK.
Migrer les applications nacos-spring-boot
Si votre application est une application nacos-spring-boot, modifiez le fichier de configuration application.properties.
Remplacez le contenu suivant :
nacos.config.endpoint=${ACM_PUBLIC/INTERNAL_ENDPOINT}
par :
nacos.config.server-addr=${MSE_NACOS_PUBLIC/INTERNAL_ENDPOINT}
Mettez également à jour le namespace vers celui de votre MSE Nacos :
nacos.config.namespace=${MSE_NACOS_NAMESPACE_ID}
Migrer les applications Golang
Avant d'appeler l'API, configurez les variables d'environnement pour vos identifiants d'accès. Utilisez MSE_AK comme AccessKey ID et MSE_SK comme AccessKey Secret.
-
Si vous utilisez l'ACM-golang-SDK, remplacez
${endpoint}par l'endpoint public/interne de votre instance MSE Nacos.clientConfig := constant.ClientConfig{ Endpoint: ${endpoint} + ":8080", NamespaceId: namespaceId, AccessKey: MSE_AK, SecretKey: MSE_SK, TimeoutMs: 5 * 1000, ListenInterval: 30 * 1000, } -
Si vous utilisez le Nacos-golang-SDK, remplacez
${serverAddr}par l'endpoint public/interne de votre instance MSE Nacos.sc := []constant.ServerConfig{ { IpAddr: "${serverAddr}", Port: 8848, }, }
Pour une démonstration d'application Golang officielle, consultez nacos-sdk-go.
Migrer les applications Python
-
Si vous utilisez l'ACM-Python-SDK, remplacez
${endpoint}par l'endpoint public/interne de votre instance MSE Nacos et${namespace_id}par son ID de namespace.ENDPOINT = "${endpoint}" NAMESPACE = "${namespace_id}" c = acm.ACMClient(ENDPOINT, NAMESPACE, AK, SK) -
Si vous utilisez le Nacos-Python-SDK, remplacez
${server_address}par l'endpoint public/interne de votre instance MSE Nacos et${namespace_id}par son ID de namespace.SERVER_ADDRESSES = "${server_address}" NAMESPACE = "${namespace_id}" client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE)
Migrer les applications Node.js
-
Si vous utilisez l'ACM-Nodejs-SDK, remplacez
${endpoint}par l'endpoint public/interne de votre instance MSE Nacos et${namespace_id}par son ID de namespace.// for find address mode const configClient = new NacosConfigClient({ endpoint: '${endpoint}', namespace: '${namespace_id}', accessKey: 'MSE_AK', secretKey: 'MSE_SK', requestTimeout: 6000, }); -
Si vous utilisez le Nacos-Nodejs-SDK, remplacez
${server_address}par l'endpoint public/interne de votre instance MSE Nacos et${namespace_id}par son ID de namespace.const configClient = new NacosConfigClient({ serverAddr: '${server_address}', namespace: '${namespace_id}', accessKey: 'MSE_AK', secretKey: 'MSE_SK', requestTimeout: 6000, });
Migrer les applications C#
Remplacez ${server_address} par l'endpoint public/interne de votre instance MSE Nacos et ${namespace_id} par son ID de namespace.
{
"NacosConfig": {
"Listeners": [
{
"Optional": false,
"DataId": "common",
"Group": "DEFAULT_GROUP"
},
{
"Optional": false,
"DataId": "demo",
"Group": "DEFAULT_GROUP"
}
],
"Namespace": "namespace_id", // Please set the value of 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"
}
}
Migrer les applications C++
-
Si vous utilisez l'ACM-CPP-SDK, remplacez
${endpoint}par l'endpoint public/interne de votre instance MSE Nacos et${namespace_id}par son ID de namespace.// Initializes the configuration service using the following parameters. ACM::init("${endpoint}","$namespace_id","$accessKey","$secretKey"); -
Si vous utilisez le Nacos-CPP-SDK, remplacez
${server_address}par l'endpoint public/interne de votre instance MSE Nacos.Properties props; props[PropertyKeyConst::SERVER_ADDR] = "${server_address}:8848";//Server address
(Facultatif) Étape 3 : Réautoriser l'utilisateur RAM
Si vous utilisez l'authentification des configurations et avez accordé des autorisations à un utilisateur RAM, mettez à jour le script d'autorisation et réattribuez les autorisations après la migration vers MSE. Autoriser l'accès au registre de microservices
Connectez-vous à la console Resource Access Management (RAM).
Dans le volet de navigation de gauche, choisissez Permissions > Policies.
Dans le coin supérieur gauche de la page Policies, cliquez sur Create Policy.
Sur la page Create Policy, cliquez sur l'onglet JSON.
-
Collez votre script local dans l'éditeur de politique, en remplaçant le contenu existant.
Voici un exemple de script :
{ "Version": "1", "Statement": [ { "Action": [ "acms:R" ], "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP/com.alibaba.acm.test", "Effect": "Allow" } ] }
-
Remplacer les autorisations de lecture
Si le script contient le contenu suivant :
"Action": [ "acms:R" ]Remplacez-le par :
"Action": [ "mse:List*", "mse:Query*", "mse:Get*" ] -
Remplacer les autorisations d'écriture
Si le script contient le contenu suivant :
"Action": [ "acms:W" ]Remplacez-le par :
"Action": [ "mse:Create*", "mse:Update*", "mse:Delete*" ] -
Remplacer la ressource
Remplacez la définition de ressource suivante :
"Resource": "*:*:*:*:cfg/{acm_namespace_id}/{group_id}/{data_id}"par :
"Resource": "acs:mse:*:*:instance/{instance_id}/{mse_namespace_id}/{group_id}/{data_id}"RemarqueDescription des paramètres :
{acm_namespace_id}: L'ID du namespace dans ACM.{instance_id}: L'ID de votre instance MSE.{mse_namespace_id}: L'ID du namespace dans MSE.{group_id}: L'ID du groupe.{data_id}: L'ID des données.
Si vous n'avez pas besoin d'accorder des autorisations au niveau group_id ou data_id, supprimez ces parties du chemin de la ressource.
-
Pour accorder des autorisations au niveau
namespace, utilisez le chemin de ressource suivant :"Resource": "acs:mse:*:*:instance/{instance_id}/{mse_namespace_id}" -
Pour accorder des autorisations au niveau
group_id, utilisez le chemin de ressource suivant :"Resource": "acs:mse:*:*:instance/{instance_id}/{mse_namespace_id}/{group_id}"
Après avoir remplacé le script, accordez les autorisations définies dans la nouvelle politique à l'utilisateur RAM. Autoriser l'accès au registre de microservices
Les nouvelles autorisations pour l'utilisateur RAM prennent effet en environ 5 à 10 secondes.
Étape 4 : Redéployer et démarrer l'application
Redéployez votre application. La migration est terminée lorsque le déploiement réussit.