Tutorial: migração para o Amazon OpenSearch Service - OpenSearch Serviço Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tutorial: migração para o Amazon OpenSearch Service

Os snapshots de índices são uma maneira popular de realizar migração de um cluster autogerenciado do OpenSearch ou obsoleto do Elasticsearch para o Amazon OpenSearch Service. Em termos gerais, o processo consiste nas seguintes etapas:

  1. Faça um snapshot do cluster existente e faça upload do snapshot para um bucket do Amazon S3.

  2. Crie um domínio do OpenSearch Service.

  3. Conceda ao OpenSearch Service permissões para acessar o bucket e verifique se você tem permissões para trabalhar com snapshots.

  4. Restaure o snapshot no domínio do OpenSearch Service.

Esta demonstração fornece etapas mais detalhadas e opções alternativas, quando aplicável.

Obter e fazer upload do snapshot

Embora você possa usar o plug-in repository-s3 para obter snapshots diretamente no S3, você precisa instalar o plug-in em cada nó, ajustar o opensearch.yml (ou o elasticsearch.yml, se estiver usando um cluster Elasticsearch), reiniciar cada nó, adicionar suas credenciais da AWS e, finalmente, obter o snapshot. O plug-in é uma ótima opção para uso contínuo ou para migrar clusters maiores.

Para clusters menores, uma abordagem única é fazer um snapshot do sistema de arquivos compartilhado e usar a AWS CLI para fazer upload para o S3. Se você já tiver um snapshot, avance para a etapa 4.

Para obter um snapshot e fazer upload no Amazon S3
  1. Adicione a configuração path.repo ao opensearch.yml (ou ao Elasticsearch.yml) em todos os nós e, em seguida, reinicie cada nó.

    path.repo: ["/my/shared/directory/snapshots"]
  2. Registre um repositório de snapshots, o que é obrigatório para poder tirar um snapshot. Um repositório é apenas um local de armazenamento: um sistema de arquivos compartilhados, o Amazon S3, o Sistema de Arquivos Distribuído do Hadoop (HDFS) etc. Nesse caso, usaremos um sistema de arquivos compartilhados (“fs”):

    PUT _snapshot/my-snapshot-repo-name { "type": "fs", "settings": { "location": "/my/shared/directory/snapshots" } }
  3. Faça o snapshot:

    PUT _snapshot/my-snapshot-repo-name/my-snapshot-name { "indices": "migration-index1,migration-index2,other-indices-*", "include_global_state": false }
  4. Instale a AWS CLI, e execute aws configure para adicionar suas credenciais.

  5. Navegue até o diretório de snapshots. Depois disso, execute os seguintes comandos para criar um novo bucket do S3 e fazer upload do conteúdo do diretório de snapshots para esse bucket:

    aws s3 mb s3://bucket-name --region us-west-2 aws s3 sync . s3://bucket-name --sse AES256

    Dependendo do tamanho do snapshot e da velocidade da sua conexão com a Internet, essa operação pode demorar um pouco.

Crie um domínio

Embora o console seja a maneira mais fácil de criar um domínio, nesse caso, você já tem o terminal aberto e a AWS CLI instalada. Modifique o seguinte comando para criar um domínio que atenda às suas necessidades:

aws opensearch create-domain \ --domain-name migration-domain \ --engine-version OpenSearch_1.0 \ --cluster-config InstanceType=c5.large.search,InstanceCount=2 \ --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 \ --node-to-node-encryption-options Enabled=true \ --encryption-at-rest-options Enabled=true \ --domain-endpoint-options EnforceHTTPS=true,TLSSecurityPolicy=Policy-Min-TLS-1-2-2019-07 \ --advanced-security-options Enabled=true,InternalUserDatabaseEnabled=true,MasterUserOptions='{MasterUserName=master-user,MasterUserPassword=master-user-password}' \ --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["*"]},"Action":["es:ESHttp*"],"Resource":"arn:aws:es:us-west-2:123456789012:domain/migration-domain/*"}]}' \ --region us-west-2

Da maneira em que se encontra, o comando cria um domínio acessível à Internet com dois nós de dados, cada um com 100 GiB de armazenamento. Ele também habilita o controle de acesso refinado com autenticação básica de HTTP e todas as configurações de criptografia. Use o console do OpenSearch Service se for necessária uma configuração de segurança mais avançada, como uma VPC.

Antes de emitir o comando, altere o nome do domínio, as credenciais do usuário mestre e o número da conta. Especifique a mesma Região da AWS usada para o bucket do S3 e uma versão do OpenSearch/Elasticsearch compatível com seu snapshot.

Importante

Os snapshots são compatíveis somente com versões posteriores e somente com uma versão principal. Por exemplo, você não pode restaurar um snapshot de um OpenSearch 1. cluster x em um Elasticsearch 7. cluster x, somente um OpenSearch 1. x ou 2. cluster x. A versão secundária também é importante. Não é possível restaurar um snapshot de um cluster 5.3.3 autogerenciado em um domínio do OpenSearch Service 5.3.2. Recomendamos escolher a versão mais recente do OpenSearch ou Elasticsearch compatível com seu snapshot. Para obter uma tabela de versões compatíveis, consulte Como usar um snapshot para migrar dados.

Conceder permissões para o bucket do S3

No console do AWS Identity and Access Management (IAM), crie uma função com as seguintes permissões e relação de confiança. Ao criar a função, escolha S3 como o Serviço da AWS. Nomeie a função como OpenSearchSnapshotRole para que ela seja fácil de encontrar.

Permissões

{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucket-name" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucket-name/*" ] } ] }

Relação de confiança

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Em seguida, dê ao seu perfil do IAM pessoal permissões para assumir OpenSearchSnapshotRole. Crie a seguinte política e anexe-a à sua identidade:

Permissões

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole" } ] }

Mapear a função de snapshot no OpenSearch Dashboards (se estiver usando um controle de acesso refinado)

Se você habilitou o controle de acesso detalhado, mesmo se usar a autenticação básica HTTP para todos os outros fins, precisará mapear o perfil do manage_snapshots para o seu perfil do IAM para poder trabalhar com snapshots.

Para conceder à sua identidade permissões para trabalhar com snapshots
  1. Faça login no Dashboards usando as credenciais de usuário primário especificadas ao criar o domínio do OpenSearch Service. É possível encontrar o URL do Dashboards no console do OpenSearch Service. Ele segue o formato https://domain-endpoint/_dashboards/.

  2. No menu principal, escolha Segurança, Funções e selecione a função manage_snapshots.

  3. Escolha Usuários mapeados e Gerenciar mapeamento.

  4. Adicione o ARN do domínio do seu perfil do IAM pessoal no campo apropriado. O ARN assume um dos seguintes formatos:

    arn:aws:iam::123456789123:user/user-name
    arn:aws:iam::123456789123:role/role-name
  5. Selecione Mapa e confirme se o perfil aparece em Usuários mapeados.

Restaure o snapshot

Neste momento, você tem duas maneiras de acessar o domínio do OpenSearch Service: a autenticação básica HTTP com suas credenciais de usuário primário ou a autenticação da AWS usando suas credenciais do IAM. Como os snapshots usam o Amazon S3, o qual não tem um conceito de usuário primário, é necessário usar suas credenciais do IAM para registrar o repositório de snapshots com seu domínio do OpenSearch Service.

A maioria das linguagens de programação tem bibliotecas para ajudar com a assinatura de solicitações, mas a abordagem mais simples é usar uma ferramenta como o Postman e colocar suas credenciais do IAM na seção Autorização .

Como restaurar o snapshot
  1. Independentemente de como você optar por assinar suas solicitações, a primeira etapa é registrar o repositório:

    PUT _snapshot/my-snapshot-repo-name { "type": "s3", "settings": { "bucket": "bucket-name", "region": "us-west-2", "role_arn": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole" } }
  2. Depois disso, liste os snapshots no repositório e encontre o que deseja restaurar. Neste momento, é possível continuar usando o Postman ou alternar para uma ferramenta como o curl.

    Abreviatura

    GET _snapshot/my-snapshot-repo-name/_all

    curl

    curl -XGET -u 'master-user:master-user-password' https://domain-endpoint/_snapshot/my-snapshot-repo-name/_all
  3. Restaure o snapshot.

    Abreviatura

    POST _snapshot/my-snapshot-repo-name/my-snapshot-name/_restore { "indices": "migration-index1,migration-index2,other-indices-*", "include_global_state": false }

    curl

    curl -XPOST -u 'master-user:master-user-password' https://domain-endpoint/_snapshot/my-snapshot-repo-name/my-snapshot-name/_restore \ -H 'Content-Type: application/json' \ -d '{"indices":"migration-index1,migration-index2,other-indices-*","include_global_state":false}'
  4. Por fim, verifique se seus índices foram restaurados conforme o esperado.

    Abreviatura

    GET _cat/indices?v

    curl

    curl -XGET -u 'master-user:master-user-password' https://domain-endpoint/_cat/indices?v

Neste momento, a migração está concluída. Você pode configurar seus clientes para usar o novo endpoint do OpenSearch Service, redimensionar o domínio para se adequar à sua workload, verificar a contagem de fragmentos para seus índices, alternar para um usuário primário do IAM ou começar a criar visualizações no OpenSearch Dashboards.