Migre índices do Amazon OpenSearch Service para o Alibaba Cloud Elasticsearch por meio de snapshots. Este guia utiliza clusters Elasticsearch 7.1.0.0.
Como funciona
Esta solução independente de nuvem utiliza o mecanismo de snapshot do Elasticsearch. Use a ferramenta Implementação de Migração do Alibaba Cloud para migrar índices do AWS ES ou dados de snapshot do Tencent Cloud COS para o Alibaba Cloud OSS e, em seguida, restaure-os a partir do repositório OSS. Consulte Backup e Restauração Manuais.
A restauração de snapshots só é possível em clusters da mesma versão ou superior. Consulte Compatibilidade de snapshots.
Contexto
Arquitetura de referência para esta migração:

Conceitos
Elasticsearch: mecanismo de busca e análise distribuído e RESTful. Como núcleo do Elastic Stack, armazena dados centralmente para busca e análise.
Kibana: ferramenta de visualização para buscar e analisar dados do Elasticsearch.
Amazon OpenSearch Service: serviço gerenciado da AWS que fornece APIs do Elasticsearch e análises em tempo real.
Alibaba Cloud Elasticsearch: serviço gerenciado baseado no Elasticsearch open source, projetado para cenários de análise de dados e busca. Oferece controle de acesso de nível empresarial, monitoramento de segurança e alertas, além de relatórios automatizados.
-
Snapshot e restauração: cria snapshots de índices individuais ou de um cluster inteiro em um repositório remoto (sistema de arquivos compartilhado, Amazon S3 ou HDFS) para restauração em uma versão compatível do Elasticsearch.
Um snapshot de índice criado na versão 5.x pode ser restaurado na versão 6.x.
Um snapshot de índice criado na versão 2.x pode ser restaurado na versão 5.x.
Um snapshot de índice criado na versão 1.x pode ser restaurado na versão 2.x.
Visão geral da solução
Etapas da migração:
-
Crie um índice de base.
Crie um repositório de snapshots e associe-o a um bucket do Amazon Simple Storage Service (Amazon S3).
-
Faça o primeiro snapshot completo dos índices que deseja migrar.
Esse snapshot é armazenado automaticamente no bucket do Amazon S3 criado na etapa anterior.
No Alibaba Cloud, crie um bucket do Object Storage Service (OSS) e registre-o como repositório de snapshots para seu cluster do Alibaba Cloud Elasticsearch.
Use o ossimport para transferir os dados do bucket do Amazon S3 para o bucket do Alibaba Cloud OSS.
Restaure esse snapshot completo no cluster do Alibaba Cloud Elasticsearch.
-
Processe snapshots incrementais periodicamente.
Repita as etapas anteriores para processar e restaurar snapshots incrementais.
-
Crie o snapshot final e execute o cutover do serviço.
Interrompa quaisquer serviços que possam modificar os dados do índice.
Faça um snapshot incremental final do domínio de origem do Amazon OpenSearch Service.
Migre o snapshot incremental final para o OSS e restaure-o no cluster do Alibaba Cloud Elasticsearch.
Mude seus serviços para o cluster do Alibaba Cloud Elasticsearch e verifique a migração.
Pré-requisitos
Certifique-se do seguinte:
-
Um domínio do Amazon OpenSearch Service com Elasticsearch 7.1.0.0 foi criado na região de Singapura.
-
Um cluster do Alibaba Cloud Elasticsearch versão 7.1.0.0 foi criado na região China (Hangzhou).
-
Um bucket do OSS foi criado.
Este guia utiliza um bucket na região China (Hangzhou) com classe de armazenamento Standard e ACL privada. Todos os outros parâmetros usam as configurações padrão. Consulte Criar buckets.
Tenha o índice que deseja migrar pronto. Este tópico usa um índice chamado
moviescomo exemplo.
Pré-requisitos para snapshots manuais na AWS
O Amazon OpenSearch Service cria automaticamente snapshots diários dos shards primários do índice, armazenados em um bucket S3 pré-configurado por 14 dias sem custo adicional. Esses snapshots podem restaurar um domínio, mas não permitem migrar dados para um novo domínio. Para migração, crie snapshots manuais em seu próprio bucket S3. Aplicam-se as taxas padrão de armazenamento S3.
Para criar e restaurar snapshots de índice manualmente, você precisa do IAM e do Amazon S3. Certifique-se de atender aos seguintes pré-requisitos antes de fazer um snapshot.
|
Pré-requisito |
Descrição |
|
Criar um bucket do Amazon S3 |
Armazena snapshots manuais do domínio do Amazon OpenSearch Service. |
|
Criar uma função IAM |
Concede permissões ao Amazon OpenSearch Service. Especifique o Amazon OpenSearch Service na instrução |
|
Criar uma política IAM |
Especifica as ações que a função IAM pode executar no bucket S3. Anexe esta política à função IAM. A instrução Resource deve especificar o ARN do bucket S3. |
-
Criar um bucket do Amazon S3
Crie um bucket S3 para armazenar snapshots manuais. Anote seu ARN para uso em:
A instrução Resource da política IAM anexada à função IAM.
O cliente Python usado para registrar o repositório de snapshots.
Exemplo de ARN de bucket S3:
arn:aws:s3:::eric-es-index-backups -
Criar uma função IAM
Certifique-se de que a função IAM especifique o Amazon OpenSearch Service (
es.amazonaws.com) na instruçãoServicede sua relação de confiança:{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Visualize os detalhes da relação de confiança no console IAM.
NotaO Amazon OpenSearch Service não está disponível na lista suspensa Selecione role type ao criar uma função para um serviço AWS. Selecione AWS EC2, crie a função e edite a relação de confiança para alterar
ec2.amazonaws.comparaes.amazonaws.com. -
Criar uma política IAM
Crie uma política IAM e anexe-a à função IAM. O exemplo a seguir especifica o ARN do bucket
eric-es-index-backups:{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::eric-es-index-backups" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::eric-es-index-backups/*" ] } ] }Copie o conteúdo da política para o editor de políticas.

Revise a política.

Anexe a política IAM à função IAM.

Etapa 1: Registrar um repositório de snapshots manual
Registre um repositório de snapshots no Amazon OpenSearch Service antes de criar snapshots manuais. Assine a solicitação de registro usando credenciais do usuário ou função especificada na relação de confiança da função IAM. Consulte Pré-requisitos para snapshots manuais na AWS.
Não é possível usar curl para registrar um repositório de snapshots, pois ele não oferece suporte à assinatura de solicitações da AWS. Use o cliente Python de exemplo (register_snapshot_repository.py) em vez disso.
Baixe o arquivo register_snapshot_repository.py.
-
Modifique o arquivo do cliente Python de exemplo.
Atualize os valores destacados para corresponder à sua configuração e salve o arquivo como snapshot.py.
Parâmetros no arquivo do cliente Python de exemplo:
Parâmetro
Descrição
region
A região da AWS onde o repositório de snapshots é criado.
host
O endpoint do domínio do Amazon OpenSearch Service.
aws_access_key_id
O ID da chave de acesso da sua credencial IAM.
aws_secret_access_key
A chave de acesso secreta da sua credencial IAM.
path
O caminho para o repositório de snapshots.
data
Deve incluir o nome e o ARN do bucket S3 criado para a função IAM. Consulte Pré-requisitos para snapshots manuais na AWS.
Importante-
Para ativar a criptografia no lado do servidor com chaves gerenciadas pelo S3 para o repositório de snapshots, adicione
"server_side_encryption": trueao JSON de configurações. -
Se o bucket do Amazon S3 estiver na região ap-southeast-1, use
"endpoint": "s3.amazonaws.com"em vez de"region": "ap-southeast-1".
-
-
Instale o boto-2.48.0.
O cliente Python de exemplo requer boto 2.x:
# wget https://pypi.python.org/packages/66/e7/fe1db6a5ed53831b53b8a6695a8f134a58833cadb5f2740802bc3730ac15/boto-2.48.0.tar.gz#md5=ce4589dd9c1d7f5d347363223ae1b970 # tar zxvf boto-2.48.0.tar.gz # cd boto-2.48.0 # sudo python setup.py install -
Execute o cliente Python para registrar o repositório de snapshots.
# python snapshot.py -
No console Kibana do seu domínio do Amazon OpenSearch Service, acesse Dev Tools > Console e execute:
GET _snapshot
Etapa 2: Criar e restaurar o snapshot inicial
-
Crie um snapshot manualmente no Amazon OpenSearch Service.
NotaExecute os comandos a seguir no console Kibana ou usando curl em uma linha de comando Linux ou macOS.
-
Crie um snapshot chamado
snapshot_movies_1para o índicemoviesno repositórioeric-snapshot-repository.PUT _snapshot/eric-snapshot-repository/snapshot_movies_1 { "indices": "movies" } -
Verifique o status do snapshot.
GET _snapshot/eric-snapshot-repository/snapshot_movies_1
No console do Amazon S3, visualize os arquivos de snapshot.

-
-
Transfira os dados do snapshot do Amazon S3 para o Alibaba Cloud OSS.
Consulte Migrar aplicativos do Amazon S3 para o OSS.
Após a transferência, verifique os dados do snapshot no console OSS.

-
Restaure o snapshot no cluster do Alibaba Cloud Elasticsearch.
-
Crie um repositório de snapshots.
ImportanteDurante uma migração de snapshot do Elasticsearch, garanta que cada cluster utilize um repositório ou caminho de snapshot dedicado. Se vários clusters compartilharem o mesmo repositório, a restauração de dados poderá falhar e ocorrer perda de dados.
No console Kibana do cluster de destino do Alibaba Cloud Elasticsearch (consulte Fazer login no console Kibana), acesse Dev Tools > Console e crie um repositório de snapshots com o mesmo nome:
PUT _snapshot/eric-snapshot-repository { "type": "oss", "settings": { "base_path": "my/snapshot/directory" "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "your AccessKeyID", "secret_access_key": "your AccessKeySecret ", "bucket": "eric-oss-aws-es-snapshot-s3", "compress": true } } -
Verifique o status do snapshot chamado
snapshot_movies_1.GET _snapshot/eric-snapshot-repository/snapshot_movies_1
NotaAnote os horários de início e término para a migração de snapshot incremental com ossimport:
"start_time_in_millis": 1519786844591
"end_time_in_millis": 1519786846236
-
-
Restaure o snapshot.
POST _snapshot/eric-snapshot-repository/snapshot_movies_1/_restore { "indices": "movies" }Verifique a disponibilidade do índice
movies:GET movies/_recoveryApós a restauração bem-sucedida, o índice
moviescontém três documentos, correspondendo ao domínio do Amazon OpenSearch Service.
Etapa 3: Criar e restaurar o snapshot final
-
Insira dados no índice
moviesno domínio do Amazon OpenSearch Service.O índice
moviesjá possui três documentos. Insira mais dois.
Use o comando
GET movies/_countpara verificar o número de documentos no índice. -
Crie outro snapshot manualmente.
Crie outro snapshot. Consulte Criar um snapshot manualmente no Amazon OpenSearch Service.
PUT _snapshot/eric-snapshot-repository/snapshot_movies_2 { "indices": "movies" }Verifique o status do snapshot:
GET _snapshot/eric-snapshot-repository/snapshot_movies_2Visualize os arquivos listados no bucket do Amazon S3.

-
Transfira os dados do snapshot incremental do Amazon S3 para o Alibaba Cloud OSS.
Use o ossimport para migrar dados do S3 para o OSS. Para migrar apenas novos arquivos, defina
isSkipExistFilecomo true em local_job.cfg.Quando
isSkipExistFileé true, os objetos são ignorados se seusizeeLastModifiedTimecoincidirem. Quando false (padrão), os objetos existentes são sobrescritos. Esta opção é inválida quandojobTypeéaudit.Após a migração, verifique os novos arquivos no OSS.

-
Restaure o snapshot incremental.
Siga o procedimento de restauração de snapshot em Etapa 2: Criar e restaurar o primeiro snapshot. Feche o índice
moviesantes da restauração e reabra-o em seguida.-
Feche o índice
movies.POST /movies/_close -
Verifique o status do índice
movies.GET movies/_stats -
Restaure o snapshot incremental.
POST _snapshot/eric-snapshot-repository/snapshot_movies_2/_restore { "indices": "movies" } -
Abra o índice
movies.POST /movies/_open
Após a restauração, o índice
moviescontém5documentos, correspondendo ao domínio do Amazon OpenSearch Service.
-
Resumo
Migre dados de índice do Amazon OpenSearch Service para o Alibaba Cloud Elasticsearch utilizando snapshots. Feche os índices no cluster de destino antes da restauração para evitar gravações e solicitações durante a migração.
Recursos relacionados:
Perguntas frequentes
Por que a unicidade do repositório é necessária?
Se vários clusters do Elasticsearch compartilharem o mesmo repositório de snapshots, podem ocorrer os seguintes problemas:
Conflitos de metadados: Vários clusters operando no mesmo repositório podem sobrescrever ou corromper arquivos de metadados, impedindo a identificação correta dos snapshots.
Sobrescrita de dados: Snapshots de clusters diferentes podem sobrescrever os arquivos de dados uns dos outros, causando perda ou corrupção de dados.
Falhas na restauração: O Elasticsearch não consegue determinar quais dados pertencem a qual cluster, fazendo com que as operações de restauração falhem ou restaurem dados incorretos.
Por que as restaurações de snapshot do OSS falham?
Esse erro pode ocorrer se o nome de um objeto de snapshot no OSS contiver um caractere especial, como uma barra (/).
O Alibaba Cloud Elasticsearch não suporta nomes de objetos com caracteres especiais durante a restauração de snapshots do OSS. Use o ossbrowser para mover os dados do snapshot para uma pasta com um nome padrão.