Em comparação com o Apache RocketMQ de código aberto, o ApsaraMQ for RocketMQ da Alibaba Cloud oferece maior estabilidade, segurança e um sistema de operações e manutenção mais abrangente. Você pode migrar seu cluster RocketMQ de código aberto para o ApsaraMQ for RocketMQ para obter uma melhor experiência de negócios. Este tópico descreve como usar a ferramenta de migração do ApsaraMQ for RocketMQ para migrar um cluster Apache RocketMQ autogerenciado para o ApsaraMQ for RocketMQ.
Pré-requisitos
{{XREF_0}}
-
{{XREF_1}}
Nome da função: AliyunServiceRoleForRMQMigration
Política: AliyunServiceRolePolicyForRMQMigration
Descrição: Permite que o ApsaraMQ for RocketMQ acesse VPCs.
Observações de uso
Durante a fase de migração de mensagens, antes de passar do estágio Write in Destination Cluster and Read and Write in Source and Destination Clusters para o estágio Read and Write in Destination Cluster, certifique-se de que todas as mensagens no cluster de origem foram consumidas e de que não há mensagens agendadas pendentes. Somente então você poderá passar para o estágio Read and Write in Destination Cluster.
Não desative o cluster Apache RocketMQ autogerenciado de código aberto antes que a tarefa de migração seja concluída.
Processo de migração
A figura a seguir mostra o processo de migração de um cluster RocketMQ de código aberto para o ApsaraMQ for RocketMQ.
-
{{XREF_2}}
Avalie os riscos e a compatibilidade da migração com base na versão e no uso de recursos do seu cluster RocketMQ autogerenciado de código aberto. Confirme os objetivos e o escopo da tarefa de migração.
-
{{XREF_3}}
Insira as informações de rede e de nós do seu cluster autogerenciado. O ApsaraMQ for RocketMQ estabelece a conectividade de rede com as permissões mínimas necessárias para oferecer suporte a operações de troca de tráfego e verificações de validação.
-
{{XREF_4}}
O ApsaraMQ for RocketMQ lê os metadados de tópicos e grupos do seu cluster autogerenciado e os replica para a instância de destino do ApsaraMQ for RocketMQ.
-
{{XREF_5}}
Identifique todos os produtores e consumidores dentro do escopo da migração. Altere o endpoint no código do produtor e do consumidor do cluster de origem para a instância de destino do ApsaraMQ for RocketMQ.
-
{{XREF_6}}
Execute operações de troca de tráfego em fases no nível do tópico.
-
{{XREF_7}}
Conclua a tarefa de migração e desative o cluster RocketMQ autogerenciado de código aberto.
Etapa 1: Avaliação da migração
Antes de migrar, realize uma avaliação técnica e defina o escopo da migração com base nos requisitos do seu negócio. Isso ajuda a concluir a migração para a cloud em lotes.
Avaliação técnica: Ajuda a determinar se o cliente e o ambiente do seu cluster RocketMQ autogerenciado atendem aos requisitos de migração e esclarece o suporte a recursos antes e depois da migração.
Confirmar o escopo da migração: Recomendamos migrar em lotes com base na prioridade do negócio e no acoplamento da aplicação. Após a estabilização de um lote, você pode expandir o escopo da migração e concluir gradualmente toda a tarefa de migração.
Avaliação técnica
-
Certifique-se de que seu cluster RocketMQ autogerenciado de origem atenda aos seguintes requisitos. Se algum requisito não for atendido, envie um ticket para obter uma solução.
Requisito
Descrição
Versão de implantação
Há suporte para as versões de servidor 5.x e 4.x do Apache RocketMQ.
Requisitos de rede
O cluster de origem deve ser implantado em um ambiente VPC da Alibaba Cloud. Se implantado em um data center local, ele deve ser acessível a partir de um endereço privado VPC.
Regiões suportadas
O recurso Migration to Cloud está disponível apenas nas seguintes regiões: China (Hangzhou), China (Shanghai), China (Beijing), China (Shenzhen), China (Zhangjiakou), China (Hong Kong), US (Silicon Valley), Singapore e Japan (Tokyo).
Restrições de parâmetros
Tamanho da mensagem:
Máximo: 4 MB.
Período de retenção de mensagens:
Mínimo: 24 horas.
Máximo: 720 horas.
Atraso máximo para mensagens agendadas:
Série não-Serverless (assinatura e pagamento conforme o uso):
Standard Edition: 7 dias.
Professional Edition e Platinum Edition: 40 dias.
Série Serverless:
Instâncias Standard Edition e Professional Edition existentes: 7 dias.
Dedicated: 7 dias. Você pode enviar um ticket para solicitar uma alteração. Após a alteração do limite, a instância não poderá ser rebaixada para uma instância shared.
Para mais restrições de parâmetros, consulte {{XREF_8}}.
-
Requisitos de versão do SDK: A solução de migração é projetada para minimizar alterações. Na maioria dos casos, você pode atualizar diretamente a versão do SDK do cliente. Como uma mudança de versão principal geralmente inclui novos recursos e otimizações de estabilidade, recomendamos atualizar a versão do SDK durante a migração.
SDK
Idioma
Versão
Atualização necessária?
Apache RocketMQ Remoting SDK
O código a seguir fornece um exemplo da dependência Maven do SDK Java:
<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>{version}</version> </dependency>O endpoint é configurado no seguinte formato:
producer.setNamesrvAddr("xxx:9876"); consumer.setNamesrvAddr("xxx:9876");
Java
SDK 5.x
Compatível por padrão. Nenhuma atualização é necessária.
Java, C++
SDK 4.x
Se o seu cluster de origem usar a interface
PullConsumer,DefaultLitePullConsumerouDefaultPullConsumer, você deverá atualizar para um SDK da série 5.x. Para mais informações, consulte {{XREF_9}}.NotaSe você usar o conector Flink para RocketMQ para enviar e receber mensagens, recomendamos compilar e usar a versão mais recente do SDK para a migração. Para mais informações, consulte rocketmq-flink.
Escopo da migração
O ApsaraMQ for RocketMQ oferece suporte à migração no nível do tópico, o que permite liberações graduais e canário com recursos de rollback. Essa abordagem reduz efetivamente o risco de alterações em grande escala.
Antes de realizar a migração, você deve confirmar o escopo de negócios dos tópicos e planejar os lotes de migração.
Selecione tópicos: Selecione tópicos no nível do cluster autogerenciado e planeje lotes de migração com base na prioridade do negócio. Recomendamos começar com tópicos de serviços não críticos.
-
Coordene com serviços upstream e downstream: Após selecionar os tópicos, você deve notificar todas as aplicações upstream e downstream (produtores e consumidores) que usam esses tópicos para alterar seus endpoints.
ImportanteVocê deve notificar todas as aplicações upstream e downstream afetadas pela migração do tópico. A falha na alteração do endpoint de uma aplicação pode causar problemas, como atrasos no consumo de mensagens.
Etapa 2: Configurar informações de rede
Crie uma tarefa de migração e configure as informações de rede do cluster autogerenciado de origem. A ferramenta de migração do ApsaraMQ for RocketMQ usa essas informações para ler metadados do cluster de origem e gerenciar tarefas de migração subsequentes.
Observações de uso
-
Com o privilégio mínimo, a ferramenta de migração do ApsaraMQ for RocketMQ acessa apenas as seguintes informações do cluster autogerenciado de origem:
Configurações de metadados de tópicos
Configurações de metadados de grupos
Informações de registro de rotas dinâmicas de tópicos
Informações de conexão do consumidor e status de acúmulo de mensagens
A ferramenta de migração não acessa nenhuma outra informação do cluster de origem, nem executa operações de gravação em suas configurações. Isso garante que a ferramenta de migração não afete a operação do seu cluster autogerenciado de origem.
Após configurar as informações de rede, revise cuidadosamente e confirme sua precisão antes de prosseguir. Depois de prosseguir, você não poderá modificar as configurações de rede. Para fazer alterações, você deve criar uma nova tarefa.
Procedimento
Faça login no console do ApsaraMQ for RocketMQ.
Na barra de navegação superior, selecione a região onde o cluster de origem e a instância de destino do ApsaraMQ for RocketMQ estão localizados. No painel de navegação à esquerda, escolha .
Na página Migration to Cloud, clique em Create Task.
-
No painel Create Migration Task, configure os parâmetros e clique em OK.
Para mais informações sobre os parâmetros, consulte {{XREF_10}}.
-
Na página Network Settings do assistente Migration to Cloud, insira as informações de rede do cluster RocketMQ autogerenciado de origem e clique em Configure Network.
Para mais informações sobre os parâmetros, consulte {{XREF_11}}.
Aguarde a conclusão da configuração. Após a página mostrar que a configuração foi concluída, clique em Next.
Parâmetros
Tabela 1. Parâmetros de rede do cluster de origem
Parâmetro | Descrição | Exemplo |
Network Type | O ambiente de rede onde o cluster autogerenciado de código aberto está implantado.
| VPC-connected Cluster |
Cluster Name | Um identificador personalizado para o cluster autogerenciado de código aberto, usado para distinguir tarefas. Não afeta os links de serviço. | first |
VPC | O ID da VPC onde o cluster autogerenciado de código aberto está implantado. Este parâmetro é necessário apenas quando o Network Type está definido como VPC-connected Cluster. | vpc-bp1mhd24chrxn |
vSwitch | As informações do vSwitch são usadas apenas pela ferramenta de migração do ApsaraMQ for RocketMQ para estabelecer um canal de rede para acessar o cluster autogerenciado de código aberto. Não especifica o vSwitch onde o cluster está implantado. Siga estas regras:
Este parâmetro é necessário apenas quando o Network Type está definido como VPC-connected Cluster. | vsw-bp1hejs0los38rn |
Security Group | Recomendamos que você selecione o grupo de segurança ao qual a instância ECS do cluster autogerenciado pertence. Se selecionar um diferente, certifique-se de que as regras do grupo de segurança selecionado permitam o acesso aos nós da instância de destino do ApsaraMQ for RocketMQ. Este parâmetro é necessário apenas quando o Network Type está definido como VPC-connected Cluster. | sg-bp160qvtcxvwl |
Name Server Address | O endereço do name server do cluster autogerenciado de código aberto. Separe vários endereços com vírgulas (,) ou ponto e vírgula (;). Importante Você deve configurar as informações do name server para todos os clusters autogerenciados a serem migrados. Se alguma informação estiver ausente, você não poderá selecionar os tópicos necessários para migração nas etapas subsequentes. | 192.168.XX.XX:9876 |
Access Credential |
| ACL |
Username | A conta Admin do cluster autogerenciado de código aberto. Este parâmetro é necessário apenas se a ACL estiver habilitada para o cluster autogerenciado de código aberto. | admin |
Password | A senha da conta Admin do cluster autogerenciado de código aberto. Este parâmetro é necessário apenas se a ACL estiver habilitada para o cluster autogerenciado de código aberto. |
Etapa 3: Migrar metadados
Após o estabelecimento da conexão de rede, selecione os tópicos e grupos especificados com base no escopo da migração para concluir a migração de metadados.
Observações de uso
Ao migrar metadados, a ferramenta de migração do ApsaraMQ for RocketMQ lê e exibe dinamicamente todos os tópicos e grupos do cluster autogerenciado de origem. Selecione apenas os tópicos e grupos relevantes para a tarefa de migração atual.
Esta etapa não pode ser desfeita. Certifique-se de migrar todos os tópicos e grupos dentro do escopo de migração atual antes de prosseguir para a próxima etapa. Caso contrário, você precisará adicionar manualmente quaisquer tópicos ausentes posteriormente.
Procedimento
Na página Metadata Migration do assistente de migração, clique na aba Topic Metadata.
-
Na lista de tópicos, selecione os tópicos que deseja migrar, escolha o tipo de tópico correspondente na lista suspensa Message Type e, em seguida, clique em Confirm and Import na coluna Actions.
Você também pode selecionar vários tópicos e clicar em Batch Import.
ImportanteO Apache RocketMQ 4.x de código aberto não possui o conceito de tipos de mensagem. O ApsaraMQ for RocketMQ valida a consistência entre o tipo de mensagem de um tópico e o tipo de mensagem real. Portanto, durante a migração de metadados, você deve inserir manualmente o tipo de mensagem do tópico com base no seu cenário de negócios.
Se você selecionar um tipo de mensagem incorreto, a produção e o consumo de mensagens falharão após a migração. Se não tiver certeza sobre o tipo de mensagem do tópico ou se um tópico for usado para tipos de mensagem mistos, envie um ticket para obter assistência.
-
Clique na aba Group Metadata. Na lista de grupos, selecione os grupos que deseja migrar, escolha a ordem de entrega para o consumo de mensagens na lista suspensa Consumption Order e, em seguida, clique em Confirm and Import na coluna Actions.
Você também pode selecionar vários grupos e clicar em Batch Import.
ImportanteNos SDKs da série 4.x do Apache RocketMQ de código aberto, a ordem de consumo de mensagens é configurada no lado do cliente. Nas instâncias 5.x do ApsaraMQ for RocketMQ, a ordem de consumo de um grupo é controlada no lado do servidor. Portanto, durante a migração de metadados, você deve inserir manualmente o tipo de ordem de consumo do grupo com base no seu cenário de negócios.
Se você selecionar um tipo de ordem de consumo incorreto, a ordem de consumo de mensagens poderá estar incorreta após a migração. Se não tiver certeza sobre a ordem de consumo do grupo, envie um ticket para obter assistência.
Após confirmar que todos os tópicos e grupos para esta tarefa de migração foram importados, clique em Next.
Etapa 4: Alterar o endpoint
Nesta fase, você se prepara para migrar o serviço de produção. Altere o endpoint em todas as aplicações de produtor e consumidor relevantes para o da instância de destino do ApsaraMQ for RocketMQ 5.x.
Observações de uso
Após alterar o endpoint, reinicie as aplicações de produtor e consumidor. Embora esta etapa conecte as aplicações de mensagens à instância de destino do ApsaraMQ for RocketMQ, o backend da ferramenta de migração ainda roteia o tráfego do tópico para o cluster autogerenciado de origem. Portanto, os links de mensagens permanecem inalterados neste estágio. Você pode alternar as aplicações de mensagens em qualquer ordem.
Certifique-se de que todas as aplicações de produtor e consumidor envolvidas nesta migração tenham alterado seus endpoints antes de prosseguir para a próxima etapa.
Exemplos de alterações de endpoint
Para o SDK do protocolo Apache RocketMQ Remoting, execute as seguintes configurações com base na versão do SDK:
-
Antes da alteração:
producer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080"); // The default value of vipChannelEnabled is true. You must set it to false. producer.setVipChannelEnabled(false); consumer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080"); // The default value of vipChannelEnabled is true. You must set it to false. consumer.setVipChannelEnabled(false); -
Após a alteração:
SDK version >= 4.5.1
producer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080"); // The default value of vipChannelEnabled is true. You must set it to false. producer.setVipChannelEnabled(false); consumer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080"); // The default value of vipChannelEnabled is true. You must set it to false. consumer.setVipChannelEnabled(false);SDK version < 4.5.1
producer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080"); // The default value of vipChannelEnabled is true. You must set it to false. producer.setVipChannelEnabled(false); consumer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080"); // The default value of vipChannelEnabled is true. You must set it to false. consumer.setVipChannelEnabled(false);
Procedimento
Após modificar as configurações de endpoint nas suas aplicações de mensagens e reiniciar as aplicações, clique em Next na página Change Endpoint do assistente de migração.
Etapa 5: Migrar tráfego de mensagens
Para migrar o tráfego de mensagens, você deve alternar o tráfego de cada tópico individualmente para transferir gradualmente o tráfego de leitura e gravação para a instância de destino.
Observações de uso
Ao executar uma operação de troca de tráfego, monitore a produção e o consumo de mensagens para garantir que atendam às expectativas após cada alteração de estado do tópico. Se não ocorrerem exceções, prossiga com a próxima operação de troca. Se ocorrer uma exceção, você poderá reverter a operação imediatamente. Após identificar e resolver a causa da exceção, você poderá retomar a operação de troca de tráfego.
Certifique-se de que a troca de tráfego foi concluída para todos os tópicos dentro do escopo da tarefa de migração e que o envio e o recebimento de mensagens estejam estáveis e sem exceções antes de concluir a tarefa de migração. Uma tarefa de migração não pode ser modificada após a sua conclusão.
Estágios de troca de tráfego
Tabela 2. Estágios de troca de tráfego
Estágio | Descrição | Topologia de tráfego |
Read and Write in Source Cluster | O estágio inicial da migração de mensagens.
|
|
Write in Source Cluster and Read in Source and Destination Clusters |
|
|
Write in Destination Cluster and Read and Write in Source and Destination Clusters |
Neste estágio, a instância de destino lida com o tráfego de produção e consumo de mensagens. Verifique se o novo fluxo de mensagens está normal e aguarde até que as mensagens no cluster de origem sejam totalmente consumidas. Importante Neste estágio, certifique-se de que todas as mensagens no cluster de origem foram consumidas e de que não há mensagens agendadas pendentes antes de passar para o estágio Read and Write in Destination Cluster. |
|
Read and Write in Destination Cluster | Após confirmar que o novo fluxo de mensagens atende às expectativas e que todas as mensagens acumuladas no cluster de origem foram consumidas, você pode alternar o tópico para este estado. Neste ponto, tanto o tráfego de leitura quanto o de gravação são direcionados apenas para a instância de destino, e a migração está concluída.
|
|
Troca de tráfego
-
Na página Message Migration do assistente de migração, selecione o tópico que deseja migrar e verifique seu status de verificação.
Se o status for Check Passed, prossiga para a próxima etapa.
-
Se o status não for Check Passed, solucione o problema. Clique em Re-verify na coluna Actions até que a verificação seja aprovada e, em seguida, prossiga para a próxima etapa.
Para as verificações realizadas em cada estágio de troca de tráfego, consulte {{XREF_14}}.
Se o status não for Check Passed, mas você confirmar que o resultado da verificação não é bloqueante, clique em Ignore Check na coluna Actions para o tópico especificado e, em seguida, prossiga para a próxima etapa.
Na coluna Actions do tópico a ser alternado, clique em Switch Traffic.
-
Na caixa de diálogo exibida, leia atentamente o aviso e clique em OK.
O processo de troca de tráfego possui quatro estágios. Você deve executar a operação de troca para cada estágio até que o Traffic Switching Stage do tópico se torne Read and Write in Destination Cluster.
Para obter informações sobre o status de tráfego de leitura e gravação do tópico em cada estágio de troca, consulte {{XREF_15}}.
Após confirmar que a troca de tráfego foi concluída para todos os tópicos nesta tarefa de migração, clique em Migrated na parte inferior da página.
Operações relacionadas
A seguir estão outras operações disponíveis na página de migração de mensagens durante a troca de tráfego:
-
Roll Back
Reverter para o estágio anterior: Se ocorrer um resultado inesperado durante a migração, você poderá reverter o estágio de troca de tráfego do tópico especificado para o último estágio em execução normal. Após solucionar a causa da exceção, você poderá decidir as operações subsequentes.
-
Reverter para o estágio inicial: Este método força diretamente o estágio de troca de tráfego a retornar ao estado inicial, que é o estado de roteamento antes do início da troca de tráfego. Este método é normalmente usado para mitigação de emergência.
NotaEste método envolve uma mudança significativa de estado. Mensagens não consumidas geradas durante o processo de migração podem ser atrasadas ou permanecer não processadas.
-
Create Topic
Se você perdeu um tópico durante a migração de metadados, poderá adicioná-lo durante a tarefa de troca de tráfego. Isso envolve criar manualmente um tópico na instância 5.x do ApsaraMQ for RocketMQ com o mesmo nome do tópico do cluster de origem.
-
Batch Traffic Switching/Batch Rollback
Execute operações de troca de tráfego ou rollback em lotes.
NotaA troca em lote e o rollback em lote aplicam-se apenas a tópicos que estão no mesmo Traffic Switching Stage.
Verificação do estágio de troca
Tabela 3. Verificações de validação
Estágio de troca de tráfego | Verificação de validação |
Alternar para o estágio Write in Source Cluster and Read in Source and Destination Clusters |
|
Alternar para o estágio Write in Destination Cluster and Read and Write in Source and Destination Clusters |
|
Alternar para o estágio Read and Write in Destination Cluster |
|
Etapa 6: Concluir a tarefa de migração
Observações de uso
Antes de concluir a tarefa de migração, certifique-se de que todas as mensagens agendadas no cluster RocketMQ autogerenciado de código aberto foram consumidas.
Você só pode desativar o cluster RocketMQ autogerenciado de código aberto após a conclusão da tarefa de migração.
Procedimento
Na página Migration to Cloud, selecione a tarefa de destino e clique em Details na coluna Actions.
Na página Details da tarefa de migração, clique em Migrated.
Documentos relacionados
Para obter informações sobre as diferenças entre o Apache RocketMQ de código aberto e o ApsaraMQ for RocketMQ, bem como os princípios e vantagens da solução de migração, consulte {{XREF_16}}.
Após a conclusão da tarefa de migração, você pode usar as métricas no {{XREF_17}} do ApsaraMQ for RocketMQ para verificar se a instância está sendo executada conforme o esperado e se os dados do negócio estão normais. Se ocorrerem exceções, você poderá executar um {{XREF_18}} a qualquer momento.



