Se a sua instância do Alibaba Cloud Elasticsearch utiliza o modo de implantação cloud-native (v3), você pode migrar dados de um cluster Elasticsearch autogerenciado em uma instância ECS estabelecendo uma conexão de rede privada e usando o recurso de reindex.
Pré-requisitos
-
O cluster Elasticsearch autogerenciado deve atender aos seguintes requisitos:
O cluster deve estar hospedado em uma instância ECS na mesma VPC da instância do Alibaba Cloud Elasticsearch. Conexões estabelecidas por meio de ClassicLink não são compatíveis.
O grupo de segurança da instância ECS deve permitir o acesso a partir de todos os endereços ip dos nós da instância do Alibaba Cloud Elasticsearch pela porta 9200. Os endereços ip dos nós podem ser encontrados no console do Kibana.
-
É necessário conseguir se conectar à instância do Alibaba Cloud Elasticsearch. verifique a conexão executando o comando
curl -XGET http://<host>:9200em uma máquina.NotaVocê pode executar o script deste guia em qualquer máquina que consiga acessar tanto o cluster Elasticsearch autogerenciado quanto a instância do Alibaba Cloud Elasticsearch pela porta 9200.
-
Os dados do índice de origem devem estar prontos no cluster Elasticsearch autogerenciado. Este guia utiliza um índice chamado
sourcecomo exemplo.[root@elasticsearch1 ~]# curl -XGET http://172.16.xxx.xxx:9200/_cat/indices?v health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open source lGFcaUIgT1-Nsj9b_EezAQ 1 1 6 0 28.2kb 19.1kb green open dest Kn3Tu9TmT62J4ouMHi_37w 1 1 6 0 23.3kb 9.1kb [root@elasticsearch1 ~]#
-
A instância do Alibaba Cloud Elasticsearch deve atender aos seguintes requisitos:
Ative o recurso de criação automática de índices com antecedência ou crie os
mappingsesettingsdo índice no Alibaba Cloud Elasticsearch.Certifique-se de que nenhuma restrição de lista de permissões esteja configurada.
Limitações
O Alibaba Cloud ES oferece dois modos de implantação: arquitetura de gerenciamento básico (v2) e arquitetura cloud-native de novo gerenciamento (v3). Identifique o modo de implantação da sua instância na seção Basic Information.

Para clusters com a arquitetura cloud-native de novo gerenciamento (v3), a reindexação entre clusters requer o PrivateLink para estabelecer uma conexão de rede privada entre pares. consulte a tabela a seguir e escolha uma solução com base no seu cenário de negócio.
|
Cenário |
Arquitetura de rede do cluster ES |
Soluções |
|
Migração de dados entre clusters do Alibaba Cloud ES |
Ambos os clusters ES foram criados com a arquitetura de gerenciamento básico (v2). |
api de reindex. Para mais informações, consulte Use the reindex API to migrate data between Alibaba Cloud ES clusters. |
|
Um dos clusters ES foi criado com a arquitetura cloud-native de novo gerenciamento (v3). Nota
O outro cluster ES pode ter sido criado com a arquitetura cloud-native de novo gerenciamento (v3) ou com a arquitetura de gerenciamento básico (v2). |
|
|
|
Migrar dados de um cluster ES autogerenciado em uma instância ECS para um cluster do Alibaba Cloud ES |
O cluster do Alibaba Cloud ES foi criado com a arquitetura de gerenciamento básico (v2). |
api de reindex. Para mais informações, consulte Migrate data from a self-managed Elasticsearch cluster to Alibaba Cloud Elasticsearch using reindex. |
|
O cluster do Alibaba Cloud ES foi criado com a arquitetura cloud-native de novo gerenciamento (v3). |
api de reindex. Para mais informações, consulte Migrate self-managed Elasticsearch data via a private connection. |
Procedimento
-
Step 1: configure an SLB instance that supports PrivateLink
Apenas instâncias SLB compatíveis com PrivateLink podem ser usadas como recurso de serviço para um endpoint service. Antes de estabelecer uma conexão privada entre VPCs por meio do PrivateLink, crie uma instância SLB compatível com PrivateLink e configure um listener.
-
Step 2: crie an endpoint service
Um endpoint service permite que outras VPCs estabeleçam conexões privadas por meio da criação de endpoints. Após configure a instância SLB, crie um endpoint service.
-
Step 3: configure a private connection for Alibaba Cloud Elasticsearch
No console do Alibaba Cloud Elasticsearch, associe a instância do Alibaba Cloud Elasticsearch ao endpoint service criado na Step 2.
-
Step 4: Get the endpoint domain name
Após associar a instância de destino ao endpoint service, obtenha o nome de domínio do endpoint para configure a lista de permissões de reindex.
-
Step 5: configure the reindex whitelist
No console do Alibaba Cloud Elasticsearch, adicione o nome de domínio obtido na Step 4 à lista de permissões de reindex da instância de destino para conceder acesso.
-
Após concluir as etapas anteriores, a conexão de rede entre as instâncias de source e destino estará estabelecida, e você poderá iniciar a migração dos dados.
Etapa 1: configure uma instância SLB para o PrivateLink
-
crie uma instância SLB.
Certifique-se de que a instância SLB esteja na mesma região da instância ECS adicionada como servidor de backend. Para mais informações, consulte Create an SLB instance that supports PrivateLink.
-
configure o Protocol and listener. defina o protocolo como TCP e a porta como 9200.
Na lista de instâncias SLB, localize a instância de destino e clique em Create Listener na coluna Actions.
Para mais informações, consulte Add a TCP listener.
-
clique em Next step. configure o grupo de servidores de backend adicionando a instância ECS que hospeda o cluster Elasticsearch autogerenciado e defina a porta como 9200.
Para mais informações, consulte configure backend servers.
clique em Next step e configure o Configure Health Check conforme necessário. Este guia utiliza as configurações padrão.
-
clique em Next step. Revise a configuração, clique em Submit, confirme os detalhes da configuração e clique em I Understand. Você retornará à página Manage Cluster, onde é possível verifique o status da verificação de integridade da instância ECS de backend.
O status Normal indica que a instância ECS de backend consegue processar as solicitações encaminhadas pela instância SLB.
Etapa 2: crie um endpoint service
-
Na barra de navegação superior, selecione a região onde deseja criar o endpoint service.
Este guia utiliza China (Hangzhou) como exemplo.
-
clique em Create Endpoint Service. Na página Create Endpoint Service, configure os parâmetros conforme necessário.
Para instruções detalhadas, consulte crie and gerencie an endpoint service. Na seção Service resource, defina Resource type como Classic Load Balancer (CLB). Este guia utiliza as seguintes configurações principais. Para os demais parâmetros, use os valores padrão ou configure conforme necessário.
Parâmetro
Descrição
Select service resource
Selecione a zona de disponibilidade que receberá o tráfego e, em seguida, selecione a instância SLB a ser associada ao endpoint service.
A instância SLB associada aceita tráfego de rede dos seus usuários de serviço. A zona de disponibilidade do endpoint service corresponde à zona de disponibilidade principal do recurso de serviço.
Uma instância SLB só pode ser usada como recurso de serviço se atender às seguintes condições:
-
O tipo de rede é VPC.
-
O PrivateLink é compatível.
Automatically Accept Endpoint Connections
Indique se as solicitações de conexão de endpoints devem ser aceitas automaticamente. Recomendamos selecionar Yes. As opções são:
-
Yes: O endpoint service aceita as solicitações de conexão automaticamente. Assim, o endpoint pode acessar o serviço.
-
No: A conexão do endpoint permanece em estado desconectado até que o administrador do serviço trate a solicitação:
-
Se o administrador aceitar a solicitação de conexão, o serviço poderá ser acessado por meio do endpoint.
-
Se o administrador rejeitar a solicitação de conexão, o serviço não poderá ser acessado por meio do endpoint.
-
Enable zone affinity
Indique se deseja ativar a afinidade de zona. Recomendamos selecionar Yes.
-
clique em OK.
Etapa 3: configure uma conexão privada
Faça login no console do Alibaba Cloud Elasticsearch.
No menu de navegação à esquerda, escolha Elasticsearch Clusters.
-
acesse o cluster de destino.
Na barra de navegação superior, selecione o grupo de recursos ao qual o cluster pertence e a região onde ele está localizado.
Na página Elasticsearch Clusters, localize o cluster e clique em seu ID.
clique em Add Private Connection e selecione o endpoint service criado na etapa anterior.
Aguarde até que o status da conexão seja Connected. Isso indica que a VPC do cluster ES e a sua VPC estão conectadas.
No painel Configure Private Connection, clique em Add Private Connection. Selecione o endpoint service criado na Step 2 e a zona de disponibilidade de destino, e marque a caixa de seleção referente ao aviso do sistema.
clique em OK. O endpoint service conecta-se ativamente ao endpoint. Após o estabelecimento da conexão, o status muda para Connected.
Etapa 4: Obter o nome de domínio do endpoint
Após concluir as etapas anteriores, obtenha o nome de domínio do endpoint para configure a lista de permissões de reindex.
No painel Configure Private Connection, clique em o Endpoint ID de destino.
-
Na aba Endpoint connections, clique em o ícone de expansão (
) ao lado do ID do endpoint de destino para visualize o nome de domínio correspondente.Após expandir, você encontrará o nome de domínio do PrivateLink no campo Domain Name. O formato é:
ep-{endpoint ID}-{availability zone}.epsrv-{service ID}.{region}.privatelink.aliyuncs.com
Etapa 5: configure a lista de permissões de reindex
Esta operação reinicia o cluster. Recomendamos executá-la fora dos horários de pico.
Faça login no console do Alibaba Cloud Elasticsearch.
No menu de navegação à esquerda, escolha Elasticsearch Clusters.
-
acesse o cluster de destino.
Na barra de navegação superior, selecione o grupo de recursos ao qual o cluster pertence e a região onde ele está localizado.
Na página Elasticsearch Clusters, localize o cluster e clique em seu ID.
No menu de navegação à esquerda, escolha .
Na seção YML File Configuration, clique em Modify Configuration à direita.
-
No painel YML File Configuration, clique em Modify Configuration e adicione o nome de domínio obtido na Step 4.
Exemplo:
reindex.remote.whitelist: 'ep-bp1nitq0krp8yhcf****-cn-hangzhou-i.epsrv-bp1zczi0fgoc5qtv****.cn-hangzhou.privatelink.aliyuncs.com:9200' clique em OK.
Etapa 6: Migrar os dados
-
No Dev Tools do console do Kibana, execute o comando a seguir para migrar os dados.
NotaPara informações sobre como fazer login no console do Kibana, consulte Log on to the Kibana console.
POST /_reindex?pretty { "source": { "remote": { "host": "http://ep-bp1nitq0krp8yhcf****-cn-hangzhou-i.epsrv-bp1zczi0fgoc5qtv****.cn-hangzhou.privatelink.aliyuncs.com:9200", "username": "elastic", "password": "Elastic@123***" }, "index": "source", "size": 5000 }, "dest": { "index": "dest" } }Se o console do Kibana não estiver disponível, você também pode execute um comando cURL em uma máquina com acesso à instância do Alibaba Cloud Elasticsearch para realizar a operação de reindex:
curl -u <username>:<password> -XPOST "http://<Alibaba Cloud Elasticsearch domain name>:9200/_reindex?pretty" -H "Content-Type: application/json" -d '{ "source": { "remote": { "host": "http://<endpoint domain name>:9200", "username": "<self-managed Elasticsearch username>", "password": "<self-managed Elasticsearch password>" }, "index": "source", "size": 5000 }, "dest": { "index": "dest" } }'NotaSe a segurança não estiver habilitada no cluster Elasticsearch autogerenciado, remova os campos
usernameepassworddesource.remote.Para mais informações, consulte api de reindex.
-
Opcional: Para verifique o status das tarefas de reindex em execução, execute o comando a seguir.
GET _tasks?detailed=true&actions=*reindex -
verifique o resultado da migração.
Após a conclusão da migração, execute o comando a seguir para verifique o resultado.
GET _cat/indices?vSe o status de integridade do índice de destino estiver normal e o tamanho dos dados corresponder ao esperado, a migração foi bem-sucedida. Exemplo de saída:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .security-7 WzCXGepRRou3e2qE_NXg6g 1 1 55 0 424.1kb 212.1kb green open .monitoring-kibana-7-2021.08.18 G_D3fb8jRfiC72PwmIn-vg 1 1 9560 0 3.1mb 1.5mb green open test RHVpvC30RnO3lE2O2xPx0w 1 1 6 0 29.3kb 9.2kb green open .apm-custom-link Sav0grXzTe2xA1tmgOQOUl 1 1 0 0 522b 261b green open .monitoring-kibana-7-2021.08.19 iF8kyaZCtdSU8z_MIHsj-Q 1 1 2688 1 1.3mb 497.8kb green open .kibana_task_manager_1 ILArbgzRR7KjOQd9SH8BoA 1 1 6 1524 637.3kb 326.7kb green open .apm-agent-configuration VXCcFRjYQU21A_sSPiVGXA 1 1 0 0 522b 261b green open .kibana-event-log-7.10.0-000001 _A3SURUwThakLepdebZt5A 1 1 1 0 11.4kb 5.7kb green open .monitoring-es-7-2021.08.19 RP2xbG60QaqakDvuF972LQ 1 1 28337 34918 37mb 18.4mb green open .kibana_1 o5MX39bZRTeMma4HjT0fog 1 1 22 4 20.8mb 10.4mb green open .monitoring-es-7-2021.08.18 TGyPtE1bTXCaYHq4i7F5nQ 1 1 90546 60040 103.4mb 55.5mb
Perguntas frequentes
P: Como acelerar a sincronização de dados para um índice grande?
R:
O recurso de reindex utiliza a api de scroll internamente. Você pode aumentar o tamanho do scroll ou configure o fatiamento de scroll para paralelizar a operação e melhorar o desempenho. Para mais informações, consulte api de reindex.
Se o conjunto de dados de source for muito grande, recomendamos o método de snapshot via OSS. Para mais informações, consulte Advanced: Migrate a self-managed Elasticsearch cluster to Alibaba Cloud Elasticsearch by using an OSS snapshot.
-
Para índices grandes, é possível acelerar a sincronização de dados definindo o número de réplicas do índice de destino como 0 e o intervalo de atualização como -1 antes da migração. Após a conclusão, restaure as configurações originais.
// Before migrating index data, set the number of replicas to 0 and disable the refresh interval to speed up the migration. curl -u user:password -XPUT 'http://<host:port>/indexName/_settings' -d' { "number_of_replicas" : 0, "refresh_interval" : "-1" }' // After the index data is migrated, reset the number of replicas to 1 and the refresh interval to "1s" (the default value). curl -u user:password -XPUT 'http://<host:port>/indexName/_settings' -d' { "number_of_replicas" : 1, "refresh_interval" : "1s" }'