Todos os produtos
Search
Central de documentação

Microservices Engine:Migrar registros de serviço com o MSE Sync

Última atualização: Jun 28, 2026

O MSE Sync sincroniza dados de serviços e configurações entre registros como Nacos, ZooKeeper, Eureka e Consul. Baseado no projeto de código aberto NacosSync, o MSE Sync oferece sincronização bidirecional, descoberta automática de serviços e sincronização completa com um clique, facilitando a migração de registros autogerenciados para instâncias do Microservices Engine (MSE).

Como funciona

O MSE Sync conecta um registro de origem a uma instância MSE de destino sincronizando continuamente os dados de registro de serviço durante a migração. Como ambos os registros fornecem informações idênticas, as aplicações conectadas a qualquer um dos lados conseguem descobrir serviços no outro. Isso permite migrar aplicações de forma incremental.

No diagrama a seguir, pub representa um publicador de serviço e sub representa um assinante de serviço.

Smooth migration

Para garantir alta disponibilidade, o MSE Sync implanta múltiplas instâncias com suporte de um banco de dados compartilhado. Se ocorrer falha em um nó, os nós íntegros executarão automaticamente uma tarefa de recuperação para assumir o trabalho de sincronização do nó defeituoso.

Multi-instance deployment

Conceitos principais

Conceito

Descrição

Cluster

Instância de registro de origem ou destino definida na configuração do MSE Sync. Cada cluster possui um nome exclusivo, um tipo (Nacos, ZooKeeper, Eureka ou Consul) e um ou mais endpoints de conexão.

Task

Trabalho de sincronização que transfere dados de um cluster de origem para um cluster de destino. Cada tarefa especifica o tipo de sincronização, a direção e um filtro opcional de nome de serviço.

Sync type

Define quais dados serão sincronizados. Service sincroniza dados de registro de serviço. Config sincroniza dados de configuração (apenas Nacos e ZooKeeper). All cria tarefas de sincronização tanto de serviço quanto de configuração, conforme o tipo do cluster de origem.

Sync mode

Unidirectional copia dados de serviço registrados nativamente da origem para o destino. Bidirectional sincroniza dados de serviço registrados nativamente em ambas as direções.

Caminhos de migração compatíveis

O MSE Sync é compatível com a lógica de registro de serviços do ZooKeeper, Nacos, Eureka e Consul.

Supported registry types

Registro de origem

Registro de destino

Dados sincronizados

Nacos

Nacos

Dados nativos de serviço do Nacos

ZooKeeper

ZooKeeper

Serviços e configurações persistentes

Eureka

Nacos

Dados nativos de serviço do Eureka

Consul

Nacos

Dados nativos de serviço do Consul (apenas instâncias íntegras)

ZooKeeper

Importante

Não modifique o mesmo Znode nos clusters de origem e destino simultaneamente. Escritas concorrentes podem causar perda de dados durante a migração. Não utilize a sincronização de configuração para sincronizar serviços ou nós efêmeros.

Ao sincronizar nós persistentes, o MSE Sync registra um watch no cluster de origem para cada Znode. Se o cluster de origem contiver muitos nós, isso gera uma grande quantidade de watches e consome memória significativa. Certifique-se de que a contagem de Znodes e os recursos do cluster de origem suportem os listeners de watch adicionais do MSE Sync.

Eureka para Nacos

Por padrão, o Eureka registra nomes de serviço em letras maiúsculas (por exemplo, SERVICE-1). O MSE Sync converte esses nomes para minúsculas ao sincronizar com o Nacos (por exemplo, service-1).

Essa conversão pode causar problemas com nomes que misturam maiúsculas e minúsculas. Por exemplo, se um serviço chamado Service-1 for registrado diretamente no Nacos junto com o service-1 sincronizado, o Nacos os tratará como dois serviços separados. Instâncias sob um nome não conseguirão descobrir instâncias sob o outro.

Para evitar esse problema, padronize todos os nomes de serviço para letras minúsculas antes de iniciar a migração.

Consul para Nacos

O MSE Sync sincroniza apenas instâncias íntegras do Consul. Ele não detecta nem sincroniza alterações de metadados. Dados de configuração do Consul não são compatíveis.

Etapa 1: Implantar o MSE Sync

Antes de implantar, verifique se:

  • O ambiente de implantação do MSE Sync tem conectividade de rede com os registros de origem e destino (por exemplo, implante o MSE Sync na mesma Virtual Private Cloud (VPC) ou garanta acesso à internet pública para ambos os clusters).

  • (Se usar MySQL) Um serviço MySQL está disponível com um banco de dados e uma conta de usuário com permissões de leitura e escrita.

Importante

O MSE Sync precisa se conectar aos registros de origem e destino. Se não conseguir alcançar ambos, a migração falhará.

Escolher um backend de armazenamento

O MSE Sync é compatível com dois backends de armazenamento:

Backend

Quando usar

Suporte a múltiplas instâncias

MySQL (obrigatório para implantação multi-instância)

Ao executar várias instâncias do MSE Sync para alta disponibilidade

Sim -- múltiplas instâncias compartilham um banco de dados MySQL

Derby incorporado

Para testes ou implantações de nó único

Não -- apenas máquina única

O MSE Sync seleciona automaticamente o backend com base nas variáveis de ambiente. Se MYSQL_URL, MYSQL_USER_NAME e MYSQL_PASSWORD estiverem definidas, ele se conecta ao MySQL. Caso contrário, utiliza o banco de dados Derby incorporado.

Variável

Descrição

Exemplo

MYSQL_URL

String de conexão MySQL

jdbc:mysql://localhost:3306/sync

MYSQL_USER_NAME

Nome de usuário com permissões de leitura e escrita

--

MYSQL_PASSWORD

Senha da conta

--

Configurar parâmetros da JVM

Adicione parâmetros da JVM no arquivo conf/java.env usando a variável JAVA_OPT:

JAVA_OPT="$JAVA_OPT -Xms2048m -Xmx2048m"

Implantar no Kubernetes

  1. Salve a configuração a seguir como mse-sync-deployment.yaml. Substitua os detalhes de conexão do MySQL e ajuste replicas conforme necessário.

    Nota

    Para acessar a interface web do MSE Sync, crie um Serviço Kubernetes que direcione o tráfego para a porta 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. Implante o MSE Sync:

    kubectl apply -f mse-sync-deployment.yaml

Implantar no Elastic Compute Service (ECS)

  1. Baixe o binário do MSE Sync:

    curl https://msesync.oss-cn-hangzhou.aliyuncs.com/MseSync.zip --output msesync.zip
  2. Extraia o pacote:

    unzip ./msesync.zip
  3. (Opcional) Se usar MySQL, defina as variáveis de ambiente do banco de dados:

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

    ./MseSync/bin/startup.sh start

Etapa 2: Configurar clusters e tarefas de sincronização

O MSE Sync oferece três métodos de configuração:

Método

Mais indicado para

Detalhes

Arquivo de configuração (recomendado)

Migrações automatizadas ou em grande escala

Defina clusters e tarefas em YAML; importe via CLI ou carregue automaticamente na inicialização

Interface Web

Migrações ad-hoc ou de pequena escala

Importe a configuração pela interface baseada em navegador

Console MSE

Gerar arquivos de configuração iniciais

A página Cloud Migration gera automaticamente arquivos de configuração YAML

Opção A: Configurar com um arquivo YAML

Um arquivo de configuração contém duas seções: clusters (detalhes de conexão do registro) e tasks (trabalhos de sincronização).

O exemplo a seguir sincroniza todos os serviços dos namespaces public e test no cluster de origem para o cluster de destino, usando sincronização bidirecional:

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 a configuração usando a CLI:

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

Alternativamente, coloque o arquivo em MseSync/conf/config.yaml. O MSE Sync o carrega automaticamente na inicialização.

Nota

Ao importar um arquivo de configuração, serviços recém-adicionados são automaticamente descobertos e sincronizados.

Opção B: Configurar pela interface web

  1. Abra a interface web do MSE Sync.

  2. No painel de navegação à esquerda, clique em Service Sync.

  3. Clique em Import Configuration.

  4. Na caixa de diálogo Import Configuration, cole a configuração YAML e clique em OK.

Referência de configuração

Campos de cluster

Campo

Descrição

Exemplo

clusterName

Nome exclusivo para o cluster. Uma vez definido, não altere este valor.

sourceCluster

clusterType

Tipo de registro: NACOS, ZOOKEEPER, EUREKA ou CONSUL

NACOS

namespace

Nome do namespace do Nacos. Separe múltiplos namespaces com vírgulas. Se deixado em branco em um cluster de origem, os dados de todos os namespaces serão sincronizados.

public,test

connectKeyList

Lista de endpoints de conexão para o cluster.

Veja o exemplo abaixo

userName

Nome de usuário do Nacos (se a autenticação estiver ativada).

--

password

Senha do Nacos (se a autenticação estiver ativada).

--

ak

AccessKey ID para autenticação com uma instância MSE Nacos na nuvem.

LTAI5***dXai6

sk

AccessKey secret para autenticação com uma instância MSE Nacos na nuvem.

Jdvdj***6vs7wBEKO

**Exemplo de connectKeyList:**

connectKeyList:
  - localhost:8848
  - localhost1:8848

Campos de tarefa

Campo

Descrição

Padrão

source

Nome do cluster de origem (deve corresponder a um clusterName na seção clusters).

--

destination

Nome do cluster de destino. O namespace de destino é mantido automaticamente consistente com a origem. Se o namespace não existir no destino, o MSE Sync o criará.

--

type

Tipo de sincronização: Service (dados de serviço), Config (dados de configuração, apenas Nacos e ZooKeeper) ou All (ambos).

--

mode

Direção da sincronização: Unidirectional (apenas da origem para o destino) ou Bidirectional (ambas as direções).

--

serviceMatchPattern

Expressão regular para filtrar quais serviços sincronizar.

.* (todos os serviços)

autoScanAndAddService

Descobre e sincroniza automaticamente novos serviços adicionados ao cluster de origem.

true

Implantação multi-instância

Para ambientes de produção, implante múltiplas instâncias do MSE Sync com suporte de um banco de dados MySQL compartilhado. Se um nó falhar, os nós íntegros detectarão a falha e assumirão seu trabalho de sincronização automaticamente.

Intervalo de varredura de recuperação

O intervalo de varredura de recuperação controla a frequência com que os nós íntegros verificam a existência de nós com falha. Defina-o com o seguinte parâmetro da JVM por meio da variável de ambiente JAVA_OPT:

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

Exemplo:

JAVA_OPT="$JAVA_OPT -Dmsesync.daemon.refresh.interval=10"
Importante
  • O intervalo padrão é de 60 segundos. Não defina um valor muito baixo — um intervalo curto aumenta a carga tanto no servidor quanto nos nós do MSE Sync. O valor mínimo recomendado é 10 segundos.

  • Não use implantação multi-instância para tarefas de sincronização de configuração.

Durante o intervalo entre a falha de um nó e a próxima varredura de recuperação agendada, a lista de instâncias do cliente pode ficar temporariamente vazia.

Observações de uso

  • Sincronização bidirecional e status offline: Durante a sincronização bidirecional, se você colocar um provedor de serviço offline pelo console da instância de destino, o status offline não será propagado de volta para a instância de origem.

  • Imutabilidade do nome do cluster: Após definir um clusterName na configuração, não o altere. A alteração pode impedir que as tarefas de sincronização sejam retomadas após uma reinicialização.

Perguntas frequentes

Uma tarefa de sincronização foi adicionada pela interface ou arquivo YAML, mas não aparece na lista de tarefas.

Verifique se existem serviços no namespace do cluster de origem. O MSE Sync cria tarefas de sincronização apenas para serviços que consegue descobrir. Confirme os seguintes pontos:

  1. Os detalhes de conexão do cluster estão corretos (endpoints, credenciais de autenticação).

  2. O ID do namespace corresponde a um namespace existente no cluster de origem.

  3. Pelo menos uma instância de serviço (provedor de serviço) está registrada no namespace especificado.

Durante a sincronização bidirecional, colocar um provedor de serviço offline pelo console de destino não sincroniza de volta para a origem.

Este é o comportamento esperado. O status offline definido pelo console da instância de destino não é sincronizado com a instância de origem.

Descrição de campos adicionais de configuração YAML

  • Campo Clusters:

    Campo

    Descrição

    Valor de exemplo

    namespace

    Nome do namespace do Nacos.

    Observação: Você pode inserir múltiplos namespaces, separados por vírgulas. Se este campo for deixado vazio e a instância for a origem da sincronização, os dados de todos os namespaces da instância serão sincronizados.

    • public

    • test

    • test1

    ak

    O AccessKey para autenticação da instância MSE Nacos na nuvem.

    LTAI5*dXai6

    sk

    O AccessKey secret para autenticação da instância MSE Nacos na nuvem.

    Jdvdj***6vs7wBEKO