Tutorial: Migración a Amazon OpenSearch Service - OpenSearch Servicio Amazon

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial: Migración a Amazon OpenSearch Service

Las instantáneas de índice son una forma popular de migrar desde un clúster de OpenSearch autoadministrado o Elasticsearch heredado a Amazon OpenSearch Service. En términos generales, el proceso consta de los siguientes pasos:

  1. Tome una instantánea del clúster existente y cargue la instantánea en un bucket de Amazon S3.

  2. Cree un dominio de OpenSearch Service.

  3. Conceda permisos a OpenSearch Service para acceder al bucket, y asegúrese de disponer de permisos para trabajar con instantáneas.

  4. Restaure la instantánea en el dominio de OpenSearch Service.

Este tutorial proporciona pasos más detallados y opciones alternativas, cuando corresponda.

Tomar y cargar la instantánea

Aunque puede utilizar el complemento repository-s3 para tomar instantáneas directamente a S3, tiene que instalar el complemento en cada nodo, ajustar opensearch.yml (o elasticsearch.yml si usa un clúster Elasticsearch), reiniciar cada nodo, agregar sus credenciales de AWS y, finalmente, tomar la instantánea. El complemento es una gran opción para uso continuo o para migrar clústeres más grandes.

En clústeres más pequeños, un enfoque único consiste en tomar una instantánea del sistema de archivos compartida y, luego, utilizar la AWS CLI para cargarla a S3. Si ya tiene una instantánea, vaya al paso 4.

Cómo tomar una instantánea y cargarla a Amazon S3
  1. Agregue la configuración path.repo a opensearch.yml (o Elasticsearch.yml) en todos los nodos y, a continuación, reinicie cada nodo.

    path.repo: ["/my/shared/directory/snapshots"]
  2. Registre un repositorio de instantáneas, necesario antes de tomar una instantánea. Un repositorio es solo una ubicación de almacenamiento: un sistema de archivos compartido, Amazon S3, un sistema de archivos distribuido de Hadoop (HDFS), etc. En este caso, utilizaremos un sistema de archivos compartido (“fs”):

    PUT _snapshot/my-snapshot-repo-name { "type": "fs", "settings": { "location": "/my/shared/directory/snapshots" } }
  3. Tomar la instantánea:

    PUT _snapshot/my-snapshot-repo-name/my-snapshot-name { "indices": "migration-index1,migration-index2,other-indices-*", "include_global_state": false }
  4. Instale la AWS CLI y ejecute aws configure para agregar sus credenciales.

  5. Desplácese hasta el directorio de instantáneas. A continuación, ejecute los siguientes comandos para crear un nuevo bucket de S3 y cargar el contenido del directorio de instantáneas en ese bucket:

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

    En función del tamaño de la instantánea y la velocidad de su conexión a internet, esta operación puede tardar un tiempo.

Crear un dominio

Aunque la consola es la forma más fácil de crear un dominio, en este caso, ya tiene el terminal abierto y la AWS CLI instalada. Modifique el siguiente comando para crear un dominio que se ajuste a sus necesidades:

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

Tal como está, el comando crea un dominio accesible a Internet con dos nodos de datos, cada uno con 100 GiB de almacenamiento. También habilita el control de acceso detallado con autenticación básica HTTP y toda la configuración de cifrado. Utilice la consola de OpenSearch Service si necesita una configuración de seguridad más avanzada, como una VPC.

Antes de ejecutar el comando, cambie el nombre de dominio, las credenciales del usuario maestro y el número de cuenta. Especifique la misma Región de AWS que utilizó para el bucket de S3 y una versión de OpenSearch/Elasticsearch que sea compatible con la instantánea.

importante

Las instantáneas solo son compatibles con versiones posteriores y solo con una versión principal. Por ejemplo, no puede restaurar una instantánea desde un clúster OpenSearch 1.x en un clúster Elasticsearch 7.x, solo un clúster OpenSearch 1.x o 2.x. La versión secundaria también importa. No se puede restaurar una instantánea desde un clúster 5.3.3 autoadministrado en un dominio de OpenSearch Service 5.3.2. Recomendamos elegir la versión más reciente de OpenSearch o Elasticsearch que admita la instantánea. Para obtener una tabla de versiones compatibles, consulte Uso de una instantánea para migrar datos.

Conceda permisos al bucket de S3.

En la consola AWS Identity and Access Management (IAM), cree un rol con los siguientes permisos y relación de confianza. Al crear un rol, elija S3 como el Servicio de AWS. Asigne al rol el nombre OpenSearchSnapshotRole para que sea fácil de encontrar.

Permisos

{ "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/*" ] } ] }

Relación de confianza

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

Después, conceda permisos a su rol de IAM personal para asumir OpenSearchSnapshotRole. Cree la siguiente política y adjúntela a su identidad.

Permisos

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

Asigne el rol de instantánea en OpenSearch Dashboards (si utiliza el control de acceso detallado)

Si ha habilitado el control de acceso detallado, incluso si utiliza autenticación HTTP básica para todos los demás fines, debe asignar el rol manage_snapshots al rol de IAM para poder trabajar con instantáneas.

Para otorgar permisos a la identidad a fin de trabajar con instantáneas
  1. Inicie sesión en el panel con las credenciales de usuario maestro que especificó al crear el dominio de OpenSearch Service. Puede encontrar la URL del panel en la consola de OpenSearch Service. Adopta el formato https://domain-endpoint/_dashboards/.

  2. En el menú principal, seleccione Seguridad, Roles y seleccione el rol manage_snapshots.

  3. Seleccione Usuarios asignados, Administrar mapeo.

  4. Agregue el ARN del dominio de su rol de IAM personal en el campo apropiado. El ARN está en uno de los siguientes formatos:

    arn:aws:iam::123456789123:user/user-name
    arn:aws:iam::123456789123:role/role-name
  5. Seleccione Asignar y confirme que el rol aparece en Usuarios asignados.

Restaurar la instantánea

En este punto, tiene dos formas de acceder a su dominio de OpenSearch Service: la autenticación básica HTTP con sus credenciales de usuario maestro o la autenticación de AWS con las credenciales de IAM. Dado que las instantáneas utilizan Amazon S3, que no tiene un concepto de usuario maestro, debe utilizar sus credenciales de IAM para registrar el repositorio de instantáneas en su dominio de OpenSearch Service.

La mayoría de los lenguajes de programación tienen bibliotecas para ayudar con las solicitudes de firma, pero el enfoque más simple es utilizar una herramienta como Postman y poner sus credenciales de IAM en la sección Autorización.

Postman interface showing Authorization settings for AWS API request with Signature type.
Para restaurar la instantánea
  1. Independientemente de cómo elija firmar sus solicitudes, el primer paso es registrar el repositorio:

    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. A continuación, enumere las instantáneas en el repositorio y busque la que desea restaurar. En este punto, puede continuar utilizando Postman o cambiar a una herramienta como curl.

    Abreviado

    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. Restaurare la instantánea.

    Abreviado

    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. Finalmente, verifique que sus índices se restablecieron como se esperaba.

    Abreviado

    GET _cat/indices?v

    curl

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

En este punto, la migración está completa. Puede configurar sus clientes para que utilicen el nuevo punto de conexión de OpenSearch Service, cambiar el tamaño del dominio para adaptarse a su carga de trabajo, comprobar el recuento de particiones de sus índices, cambiar a un usuario maestro de IAM o comenzar a crear visualizaciones en OpenSearch Dashboards.