Todos los productos
Search
Centro de documentos

Microservices Engine:Migrate service registries with MSE Sync

Última actualización: Sep 05, 2026

MSE Sync sincroniza datos de servicios y configuraciones entre registros como Nacos, ZooKeeper, Eureka y Consul. Basado en el proyecto de código abierto NacosSync, MSE Sync admite sincronización bidireccional, descubrimiento automático de servicios y sincronización completa con un solo clic, lo que facilita las migraciones desde registros autogestionados hacia instancias de Microservices Engine (MSE).

Funcionamiento

MSE Sync conecta un registro de origen con una instancia de MSE de destino mediante la sincronización continua de los datos de registro de servicios durante la migración. Ambos registros proporcionan la misma información, por lo que las aplicaciones conectadas a cualquiera de los dos lados pueden descubrir servicios en el otro. Esto permite migrar las aplicaciones de forma incremental.

En el siguiente diagrama, pub representa un publicador de servicios y sub representa un suscriptor de servicios.

Smooth migration

MSE Sync despliega varias instancias respaldadas por una base de datos compartida para garantizar alta disponibilidad. Si un nodo falla, los nodos sanos ejecutan automáticamente una tarea de recuperación para asumir el trabajo de sincronización del nodo con errores.

Multi-instance deployment

Conceptos clave

Concepto

Descripción

Clúster

Instancia de registro de origen o destino definida en la configuración de MSE Sync. Cada clúster tiene un nombre único, un tipo (Nacos, ZooKeeper, Eureka o Consul) y uno o más endpoints de conexión.

Tarea

Trabajo de sincronización que transfiere datos de un clúster de origen a un clúster de destino. Cada tarea especifica el tipo de sincronización, la dirección y un filtro opcional de nombre de servicio.

Tipo de sincronización

Determina qué datos se sincronizan. Service sincroniza datos de registro de servicios. Config sincroniza datos de configuración (solo Nacos y ZooKeeper). All crea tareas de sincronización tanto de servicios como de configuración según el tipo de clúster de origen.

Modo de sincronización

Unidirectional copia los datos de servicios registrados de forma nativa del origen al destino. Bidirectional sincroniza los datos de servicios registrados de forma nativa en ambas direcciones.

Rutas de migración compatibles

MSE Sync es compatible con la lógica de registro de servicios de ZooKeeper, Nacos, Eureka y Consul.

Supported registry types

Registro de origen

Registro de destino

Datos sincronizados

Nacos

Nacos

Datos de servicios nativos de Nacos

ZooKeeper

ZooKeeper

Servicios y configuraciones persistentes

Eureka

Nacos

Datos de servicios nativos de Eureka

Consul

Nacos

Datos de servicios nativos de Consul (solo instancias sanas)

ZooKeeper

Importante

No modifique el mismo Znode en los clústeres de origen y destino simultáneamente. Las escrituras simultáneas pueden provocar pérdida de datos durante la migración. No utilice la sincronización de configuraciones para sincronizar servicios o nodos efímeros.

Al sincronizar nodos persistentes, MSE Sync registra un watch en el clúster de origen para cada Znode. Si el clúster de origen contiene muchos nodos, esto genera una gran cantidad de watches y consume mucha memoria. Asegúrese de que el recuento de Znodes y los recursos del clúster de origen puedan manejar los listeners de watch adicionales de MSE Sync.

De Eureka a Nacos

Eureka registra los nombres de servicios en mayúsculas de forma predeterminada (por ejemplo, SERVICE-1). MSE Sync convierte estos nombres a minúsculas al sincronizarlos con Nacos (por ejemplo, service-1).

Esta conversión puede causar problemas con nombres que combinan mayúsculas y minúsculas. Por ejemplo, si un servicio llamado Service-1 se registra directamente en Nacos junto con el servicio sincronizado service-1, Nacos los trata como dos servicios separados. Las instancias bajo un nombre no pueden descubrir las instancias bajo el otro.

Para evitar este problema, estandarice todos los nombres de servicios a minúsculas antes de iniciar la migración.

De Consul a Nacos

MSE Sync sincroniza únicamente las instancias sanas de Consul. Los cambios en metadatos no se detectan ni se sincronizan. Los datos de configuración de Consul no son compatibles.

Paso 1: Desplegar MSE Sync

Antes de desplegar, asegúrese de que:

  • El entorno de despliegue de MSE Sync tenga conectividad de red tanto con el registro de origen como con el de destino (por ejemplo, despliegue MSE Sync en la misma Virtual Private Cloud (VPC) o asegúrese de que tenga acceso a Internet público hacia ambos clústeres).

  • (Si usa MySQL) Exista un servicio de MySQL disponible con una base de datos y una cuenta de usuario que tenga permisos de lectura y escritura.

Importante

MSE Sync debe conectarse tanto al registro de origen como al de destino. Si no puede alcanzar ambos, la migración fallará.

Elegir un backend de almacenamiento

MSE Sync admite dos backends de almacenamiento:

Backend

Cuándo usarlo

Compatibilidad con múltiples instancias

MySQL (obligatorio para despliegues de múltiples instancias)

Al ejecutar varias instancias de MSE Sync para alta disponibilidad

Sí: varias instancias comparten una sola base de datos MySQL

Derby integrado

Para pruebas o despliegues de un solo nodo

No: solo una máquina

MSE Sync selecciona automáticamente el backend según las variables de entorno. Si MYSQL_URL, MYSQL_USER_NAME y MYSQL_PASSWORD están definidas, se conecta a MySQL. De lo contrario, utiliza la base de datos Derby integrada.

Variable

Descripción

Ejemplo

MYSQL_URL

Cadena de conexión de MySQL

jdbc:mysql://localhost:3306/sync

MYSQL_USER_NAME

Nombre de usuario con permisos de lectura y escritura

--

MYSQL_PASSWORD

Contraseña de la cuenta

--

Configurar parámetros de JVM

Agregue los parámetros de JVM en el archivo conf/java.env mediante la variable JAVA_OPT:

JAVA_OPT="$JAVA_OPT -Xms2048m -Xmx2048m"

Desplegar en Kubernetes

  1. Guarde la siguiente configuración como mse-sync-deployment.yaml. Reemplace los detalles de conexión de MySQL y ajuste replicas según sea necesario.

    Nota

    Para acceder a la interfaz web de MSE Sync, cree un Service de Kubernetes que dirija el tráfico al puerto 8000.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app.kubernetes.io/name: mse-sync
      name: mse-sync-svc
    spec:
      replicas: 3
      selector:
        matchLabels:
          app.kubernetes.io/name: mse-sync
      template:
        metadata:
          labels:
            app.kubernetes.io/name: mse-sync
        spec:
          containers:
          - name: mse-sync
            image: msecrinstance-registry.cn-hangzhou.cr.aliyuncs.com/mse-demo/mse-sync:latest
            ports:
            - containerPort: 8000
            env:
            - name: MYSQL_URL
              value: "jdbc:mysql://192.xx.xx.xx:3306/sync"
            - name: MYSQL_USER_NAME
              value: "mse-sync"
            - name: MYSQL_PASSWORD
              value: password
  2. Despliegue MSE Sync:

    kubectl apply -f mse-sync-deployment.yaml

Desplegar en Elastic Compute Service (ECS)

  1. Descargue el binario de MSE Sync:

    curl https://msesync.oss-cn-hangzhou.aliyuncs.com/MseSync.zip --output msesync.zip
  2. Extraiga el paquete:

    unzip ./msesync.zip
  3. (Opcional) Si usa MySQL, establezca las variables de entorno de la base de datos:

    export MYSQL_URL=""
    export MYSQL_USER_NAME=""
    export MYSQL_PASSWORD=""
  4. Inicie MSE Sync:

    ./MseSync/bin/startup.sh start

Paso 2: Configurar clústeres y tareas de sincronización

MSE Sync admite tres métodos de configuración:

Método

Recomendado para

Detalles

Archivo de configuración (recomendado)

Migraciones automatizadas o a gran escala

Defina clústeres y tareas en YAML; importe mediante CLI o cargue automáticamente al inicio

Interfaz web

Migraciones ad-hoc o a pequeña escala

Importe la configuración a través de la interfaz basada en navegador

Consola de MSE

Generar archivos de configuración iniciales

La página de Cloud Migration genera automáticamente archivos de configuración YAML

Opción A: Configurar con un archivo YAML

Un archivo de configuración contiene dos secciones: clusters (detalles de conexión del registro) y tasks (trabajos de sincronización).

El siguiente ejemplo sincroniza todos los servicios de los namespaces public y test del clúster de origen hacia el clúster de destino, utilizando sincronización bidireccional:

clusters:
  - clusterName: src
    connectKeyList:
      - mse-xxxxx-nacos-ans.mse.aliyuncs.com:8848
    clusterType: NACOS
    namespace: public,test
  - clusterName: dst
    connectKeyList:
      - mse-xxxxxx-nacos-ans.mse.aliyuncs.com:8848
    clusterType: NACOS

tasks:
  - source: src
    destination: dst
    type: Service
    mode: Bidirectional
    serviceMatchPattern: ".*"
    autoScanAndAddService: true

Importe la configuración mediante la CLI:

./bin/msesyncCMD.sh apply -f {path_to_configuration_file}

Alternativamente, coloque el archivo en MseSync/conf/config.yaml. MSE Sync lo carga automáticamente al iniciarse.

Nota

Al importar un archivo de configuración, los servicios recién agregados se descubren y sincronizan automáticamente.

Opción B: Configurar a través de la interfaz web

  1. Abra la interfaz web de MSE Sync.

  2. En el panel de navegación izquierdo, haga clic en Service Sync.

  3. Haga clic en Import Configuration.

  4. En el cuadro de diálogo Import Configuration, pegue la configuración YAML y haga clic en OK.

Referencia de configuración

Campos de clúster

Campo

Descripción

Ejemplo

clusterName

Nombre único para el clúster. Una vez establecido, no cambie este valor.

sourceCluster

clusterType

Tipo de registro: NACOS, ZOOKEEPER, EUREKA o CONSUL

NACOS

namespace

Nombre del namespace de Nacos. Separe varios namespaces con comas. Si se deja en blanco en un clúster de origen, se sincronizan los datos de todos los namespaces.

public,test

connectKeyList

Lista de endpoints de conexión para el clúster.

Consulte el ejemplo a continuación

userName

Nombre de usuario de Nacos (si la autenticación está habilitada).

--

password

Contraseña de Nacos (si la autenticación está habilitada).

--

ak

AccessKey ID para autenticarse con una instancia de MSE Nacos en la nube.

LTAI5***dXai6

sk

AccessKey secret para autenticarse con una instancia de MSE Nacos en la nube.

Jdvdj***6vs7wBEKO

**Ejemplo de connectKeyList:**

connectKeyList:
  - localhost:8848
  - localhost1:8848

Campos de tarea

Campo

Descripción

Valor predeterminado

source

Nombre del clúster de origen (debe coincidir con un clusterName en la sección clusters).

--

destination

Nombre del clúster de destino. El namespace de destino se mantiene automáticamente consistente con el de origen. Si el namespace no existe en el destino, MSE Sync lo crea.

--

type

Tipo de sincronización: Service (datos de servicios), Config (datos de configuración, solo Nacos y ZooKeeper) o All (ambos).

--

mode

Dirección de sincronización: Unidirectional (solo del origen al destino) o Bidirectional (ambas direcciones).

--

serviceMatchPattern

Expresión regular para filtrar qué servicios se sincronizan.

.* (todos los servicios)

autoScanAndAddService

Descubre y sincroniza automáticamente nuevos servicios agregados al clúster de origen.

true

Despliegue de múltiples instancias

Para entornos de producción, despliegue varias instancias de MSE Sync respaldadas por una base de datos MySQL compartida. Si un nodo falla, los nodos sanos detectan el error y asumen su trabajo de sincronización automáticamente.

Intervalo de escaneo de recuperación

El intervalo de escaneo de recuperación controla la frecuencia con la que los nodos sanos verifican si hay nodos con errores. Establézcalo con el siguiente parámetro de JVM a través de la variable de entorno JAVA_OPT:

-Dmsesync.daemon.refresh.interval=60  // Unit: seconds

Ejemplo:

JAVA_OPT="$JAVA_OPT -Dmsesync.daemon.refresh.interval=10"
Importante
  • El intervalo predeterminado es de 60 segundos. No lo configure demasiado bajo, ya que un intervalo corto aumenta la carga tanto en el servidor como en los nodos de MSE Sync. El valor mínimo recomendado es de 10 segundos.

  • No utilice el despliegue de múltiples instancias para tareas de sincronización de configuraciones.

Durante el intervalo entre la falla de un nodo y el siguiente escaneo de recuperación programado, la lista de instancias del cliente puede quedar temporalmente vacía.

Notas de uso

  • Sincronización bidireccional y estado sin conexión: Durante la sincronización bidireccional, si un proveedor de servicios se pone fuera de línea desde la consola de la instancia de destino, el estado sin conexión no se propaga de vuelta a la instancia de origen.

  • Inmutabilidad del nombre de clúster: Una vez que se establece un clusterName en la configuración, no lo cambie. Cambiarlo puede impedir que las tareas de sincronización se reanuden después de un reinicio.

Preguntas frecuentes

Se agregó una tarea de sincronización a través de la interfaz o un archivo YAML, pero no aparece en la lista de tareas.

Compruebe que existan servicios en el namespace del clúster de origen. MSE Sync solo crea tareas de sincronización para los servicios que puede descubrir. Verifique lo siguiente:

  1. Los detalles de conexión del clúster son correctos (endpoints, credenciales de autenticación).

  2. El ID de namespace coincide con un namespace existente en el clúster de origen.

  3. Como mínimo, hay una instancia de servicio (proveedor de servicios) registrada en el namespace especificado.

Durante la sincronización bidireccional, poner un proveedor de servicios fuera de línea desde la consola de destino no se sincroniza de vuelta al origen.

Este es el comportamiento esperado. El estado sin conexión establecido a través de la consola de la instancia de destino no se sincroniza con la instancia de origen.

Descripción de campos adicionales de configuración YAML

  • Campo Clusters:

    Campo

    Descripción

    Valor de ejemplo

    namespace

    Nombre del namespace de Nacos.

    Nota: Puede introducir varios namespaces separados por comas. Si este campo se deja vacío y la instancia es el origen de la sincronización, se sincronizan los datos de todos los namespaces de la instancia.

    • public

    • test

    • test1

    ak

    AccessKey para autenticar la instancia de MSE Nacos en la nube.

    LTAI5*dXai6

    sk

    AccessKey secret para autenticar la instancia de MSE Nacos en la nube.

    Jdvdj***6vs7wBEKO