Los 10 pasos para automatizar la migración de cargas de trabajo de Elastic desde las instalaciones hacia Elastic en AWS

blog-thumb-cloud-aws.png

¿Estás listo para migrar tus cargas de trabajo de Elastic autogestionado a Elastic en Amazon Web Services (AWS) y aprovechar la eficiencia en cuanto a costos, tiempo y escala? Aprovecha las mejores prácticas y herramientas que desarrollamos con AWS para garantizar una transición rápida y sin problemas. Repasemos tus opciones de ruta de migración de autoservicio, luego veremos los pasos simples de las instrucciones para automatizar tu migración.

Elige tu camino

Las tres opciones principales para agregar tus sets de datos en las instalaciones a Elastic en tu entorno de AWS son la reingesta de datos, snapshot y restauración, y reindexación desde un cluster.

1. Si tu fuente de datos (aplicaciones, bases de datos e infraestructura) también se migrarán a AWS, entonces es posible reingestar los datos en Elastic desde tu fuente. Elastic proporciona integraciones en servicios de AWS populares para ayudar a optimizar la ingesta de datos; solo debes hacer clic para capturar, almacenar y buscar los datos.

2. La opción de snapshot y restauración es ideal cuando los datos en los clusters existentes deben migrarse a Elastic Cloud, y el cluster existente ejecuta una versión anterior de Elasticsearch a Elastic Cloud.

3. La otra opción es reindexar desde un cluster. Es más adecuada para cuando los volúmenes de datos son bajos o hay restricciones en cuanto al uso de snapshot y restauración, y el cluster existente ejecuta una versión anterior de Elasticsearch a Elastic Cloud. Encuentra más detalles sobre cómo usar la API de reindexación en la guía de migración.

En este blog, brindamos los pasos simples para automatizar tu ruta de migración con snapshot y restauración.

Automatiza la migración con snapshot y restauración

Repasemos lo fácil que es migrar tus datos mediante snapshot y restauración con Terraform (software open source de infraestructura como código). Primero, comencemos por los requisitos previos, luego veremos los pasos de las instrucciones.

Requisitos previos

  1. Verifica que el Elastic Cloud de destino esté ejecutando una versión igual o superior a la de los clusters de Elasticsearch actuales. Encontrarás una tabla de compatibilidad de versiones más detallada en la guía de snapshot y restauración de Elastic.
  2. Comprueba y asegúrate de que la capacidad de infraestructura del cluster de Elastic Cloud sea suficiente para el volumen de datos y los requisitos informáticos del caso de uso.
  3. Comprueba las limitaciones enumeradas en la guía de snapshot y restauración de Elastic, y los cambios específicos de la versión en la guía de actualización de Elastic, para confirmar que no haya restricciones que afecten la migración del despliegue a Elastic Cloud.
  4. Comprueba que esté instalada la versión correcta del software Terraform y que esté habilitada la característica de almacén de Terraform.
  5. Recopila la información necesaria, como la clave de API de Elasticsearch (var.apikey) y la clave de acceso de AWS (var.s3_client_access_key, var.s3_client_secret_key).
  6. Comprueba la conectividad de red (conexión directa) entre la VPC en las instalaciones y de Elastic en AWS, y otros permisos de recursos de AWS.
  7. Si aún no tienes el plugin para Amazon Simple Storage Service (Amazon S3) y la CLI de AWS de Elasticsearch en tu cluster de Elasticsearch existente, debes instalarlo desde el directorio de inicio de Elasticsearch con el comando siguiente:
> sudo bin/elasticsearch-plugin install repository-s3
  1. Agrega las claves de acceso de Amazon S3 al keystore de Elasticsearch con los comandos siguientes desde el directorio raíz del cluster de Elasticsearch existente (introduce las claves adecuadas del proceso de creación de la cubeta de Amazon S3 anterior cuando se soliciten).
> bin/elasticsearch-keystore add s3.client.default.access_key
> bin/elasticsearch-keystore add s3.client.default.secret_key
Arquitectura de migración de Elastic Cloud

Pasos de la migración

  1. Crea y registra un repositorio de snapshots de Elastic Cloud mediante el servicio Amazon S3.
  2. Crea y configura un repositorio de snapshots local y apunta a la cubeta de Amazon S3.
  3. Crea un snapshot nuevo a partir del cluster local y almacénalo en la cubeta de Amazon S3.
  4. Provisiona el cluster de Elastic Cloud.
  5. Provisiona los recursos de AWS necesarios para Elastic Agent.
  6. Provisiona el reenviador sin servidor de Elastic necesario para la ingesta de logs sin inconvenientes.
  7. Crea varios roles de instancia de AWS Identity and Access Management (IAM) con permisos detallados para el acceso a los servicios de AWS necesarios para el proceso de despliegue.
  8. Cierra todos los índices en Elastic Cloud.
  9. Restaura los datos del cluster local desde el snapshot en Elastic Cloud.
  10. Por último, abre todos los índices en Elastic Cloud.

Pasos del despliegue

A continuación encontrarás los pasos detallados que se mencionaron brevemente en la sección de requisitos previos, como recopilar las claves de acceso secretas necesarias. Si ya tienes tus claves, puedes continuar al paso 3.

  1. Generar una clave de API de Elasticsearch Service (ESS):
    1. Abre tu navegador y ve a https://cloud.elastic.co/login.
    2. Inicia sesión con tu correo electrónico y contraseña.
    3. Haz clic en Elasticsearch Service.
    4. Ve a Features > API Keys (Características > Claves de API) y haz clic en Generate API Key (Generar clave de API).
    5. Elige un nombre para tu clave de API.
    6. Guarda tu clave de API en algún lugar seguro.
  2. Crear una clave de acceso de AWS:
    1. Crea una política de cubeta de S3 que acepte permisos List (Enumerar), Read (Leer) y Write (Escribir).
    2. Crea un usuario de IAM y adjunta la política que se creó antes.
    3. Asegúrate de marcar Programmatic access (Acceso programático) para el usuario de IAM.
    4. Guarda tu clave de acceso de AWS en algún lugar seguro.
  3. Clona tu repositorio de migración de Elastic Cloud de Terraform con los comandos siguientes:
    1. git clone https://github.com/aws-ia/terraform-elastic-cloud
    2. cd terraform-elastic-cloud
  4. Si usas HashiCorp Vault, puedes configurar las variables del entorno de Vault de la siguiente manera:
    1. export VAULT_ADDR= "URL de tu Vault"
    2. export VAULT_TOKEN= "Token de tu Vault"                                                                                  Agrega tu clave de API de Elasticsearch (usamos "ess" para la ruta a modo de ejemplo):
vault kv put secret/ess apikey="Your Elastic API Key"

Agrega tu clave de API de AWS (usamos "aws" para la ruta a modo de ejemplo):

vault kv put secret/aws s3_client_access_key="Your AWS Access Key"     
s3_client_secret_key="Your AWS Secret Key"
  1. Debes proporcionar las claves, lo cual puede hacerse de varias formas en Terraform. Usaremos Variable Definitions (Definiciones de variables) (.tfvars). Esta característica agregada recientemente automatiza la migración de tu cluster de Elasticsearch a Elastic Cloud. Los archivos se muestran a continuación (si usas HashiCorp Vault).

Solo tienes que asignar la URL de tu Elasticsearch autogestionado, como en el ejemplo a continuación.

    var.local_elasticsearch_url (e.g., http://127.0.0.1:9200).

    Por ejemplo, podemos agregar var.local_elasticsearch_url en el mismo testing.tfvars, como se muestra a continuación (si usas HashiCorp Vault):

    name = "Elasticsearch Cluster"
    local_elasticsearch_url = ""
    vault_address = "Your Local Elastic Cluster URL"
    vault_ess_path = "secret/ess"
    vault_aws_path = "secret/aws"
    apikey = "hashicorp/vault"
    s3_client_access_key = "hashicorp/vault"
    s3_client_secret_key  = "hashicorp/vault"

    Como alternativa, puedes proporcionar las claves directamente de la siguiente forma:

    name = "Elasticsearch Cluster"
    local_elasticsearch_url = ""
    apikey = "Your Elastic API Key"
    s3_client_access_key = "Your AWS Access Key"
    s3_client_secret_key  = "Your AWS Secret Key"
    1. Una vez especificadas estas variables en el archivo .tfvars (en el ejemplo siguiente, usamos un archivo llamado testing.tfvars), puedes ejecutar el módulo de Terraform de la siguiente manera:
          terraform init
          terraform validate
          terraform apply -var-file="testing.tfvars"

          Destruir despliegue

          Si ya no necesitas la infraestructura que provisiona el módulo de Terraform, puedes finalizar todos los recursos con facilidad mediante el comando siguiente:
          terraform destroy -var-file="testing.tfvars"

          Aprovecha más recursos de migración con Elastic y AWS

          Se certificó a Elastic como socio del AWS ISV Workload Migration Program (WMP) para respaldar la migración de cargas de trabajo autogestionadas de Elasticsearch o ELK en las instalaciones a Elastic en AWS. La metodología de Elastic proporciona a los clientes un enfoque prescriptivo y repetible para acelerar la adopción de la migración y está directamente alineada con la guía de migración y las mejores prácticas publicadas por AWS, incluyendo el AWS Well-Architected Framework y el AWS Migration Acceleration Program. A través del programa AWS WMP, puedes aprovechar aún más la guía de incorporación, los recursos de migración y los créditos de infraestructura y la asistencia financiera de AWS para lograr tus objetivos comerciales y acelerar su viaje al cloud.

          Da los primeros pasos hoy en la migración a Elastic en AWS

          Migra para aprovechar todas las características habilitadas para el cloud, con las soluciones de Elastic que tu equipo ya conoce. Ve esta guía sobre la migración, guía de inicio rápido, sitio web y documentación, o contáctanos directamente para obtener más información sobre cómo Elastic puede ayudarte en la migración (incluidas la evaluación, planificación y asistencia financiera). También puedes comunicarte con nuestro equipo Consultoría de Elastic que puede ayudarte a migrar cargas de trabajo complejas y a gran escala. Aprovecha una prueba gratuita de 7 días directamente desde AWS Marketplace y despliega Elastic en minutos.

          El lanzamiento y la sincronización de cualquier característica o funcionalidad descrita en este blog quedan a la entera discreción de Elastic. Cualquier característica o funcionalidad que no esté disponible actualmente puede no entregarse a tiempo o no entregarse en absoluto.