Implementa RIOT Live Migration para migrar a Redis Enterprise Cloud

Last reviewed 2024-01-29 UTC

En este documento, se describe cómo implementar RIOT Live Migration para migrar a Redis Enterprise Cloud. Los arquitectos de bases de datos, los equipos de DevOps y SRE, o los administradores de red pueden usar esta arquitectura para ofrecer migraciones con un tiempo de inactividad casi nulo a sus equipos. En este documento, se supone que estás familiarizado con el uso de Google Cloud CLI y Compute Engine.

Arquitectura

En el siguiente diagrama, se muestra la arquitectura de referencia que usa el servicio de RIOT Live Migration para migrar orígenes compatibles con Redis a Redis Enterprise Cloud.

Los orígenes compatibles con Redis se migran a través de RIOT a Redis Enterprise Cloud.

Para obtener detalles sobre la arquitectura, consulta RIOT Live Migration para migrar a Redis Enterprise Cloud.

La implementación de muestra de este documento usa la siguiente arquitectura en la que el origen es Redis OSS en una VM de Compute Engine:

Redis OSS se migra a través del intercambio de tráfico entre VPC y RIOT a Redis Enterprise Cloud.

En el diagrama, una instancia de Redis OSS y RIOT se consolidan en una sola VM de Compute Engine para simplificar. En un entorno de producción, recomendamos que RIOT siempre se ejecute en su propia VM para garantizar un mejor rendimiento.

La arquitectura de implementación de ejemplo tiene estos componentes:

  • Origen: Instancia de Redis OSS que se ejecuta en la VM de Compute Engine.
  • Destino: Redis Enterprise Cloud que se ejecuta en la VPC administrada de Redis.
  • Servicio de migración: RIOT que se ejecuta en la misma VM de Compute Engine que Redis OSS.
  • Configuración de red: Intercambio de tráfico de VPC entre una VPC administrada y la VPC administrada de Redis.

La herramienta de migración RIOT tiene un tiempo de inactividad casi nulo. Durante la migración de Redis OSS (origen) a Redis Enterprise Cloud (destino), tus aplicaciones aún pueden acceder a Redis OSS sin impacto ni interrupción del servicio. Durante el proceso de migración, después de la carga inicial de datos de Redis OSS, RIOT Live Migration continúa migrando cambios de Redis OSS a medida que se producen.

Objetivos

  • Configurar tu origen de Redis OSS mediante la creación y carga de datos.
  • Configurar un clúster de destino de migración en Redis Enterprise Cloud.
  • Usar RIOT Live Migration para migrar datos de Redis OSS a Redis Enterprise Cloud.
  • Comprender las estrategias de prueba, migración de sistemas y resguardo.

Costos

La implementación de esta arquitectura usa los siguientes componentes facturables de Google Cloud:

  • Costos de Compute Engine para ejecutar instancias de Redis OSS y RIOT.
  • Costo de Redis Enterprise Cloud adquirido a través de Google Cloud Marketplace.
  • Cargos de red que se generan por el tráfico de migración de datos entre zonas y regiones.

Antes de comenzar

Completa los siguientes pasos a fin de configurar un entorno para la migración.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery, Pub/Sub, Dataflow, and Compute Engine APIs.

    Enable the APIs

  4. Para obtener los permisos que necesitas para completar esta implementación, pídele a tu administrador que te otorgue el rol de IAM de administrador de facturación (roles/billing.admin) en tu organización. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

    También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Configura una instancia de Redis OSS

Para iniciar la implementación, instala la instancia de Redis OSS en una VM de Compute Engine. La instancia funciona como tu instancia de origen.

Instala la instancia de Redis OSS

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. En Cloud Shell, crea una VM de Ubuntu:

    gcloud compute instances create redis-oss-riot-vm \
      --image-family=ubuntu-2004-lts \
        --image-project=ubuntu-os-cloud \
        --zone=us-central1-a \
        --machine-type=e2-medium \
        --network=VPC_NETWORK_NAME \
        --subnet=VPC_SUBNETWORK_NAME \
      --metadata=startup-script='#! /bin/bash
        apt-get update -y
        apt-get install redis-tools -y
        snap install redis'
    

    Reemplaza lo siguiente:

    • VPC_NETWORK_NAME: es el nombre de tu red de VPC.
    • VPC_SUBNETWORK_NAME: es el nombre de la subred de tu VPC.
  3. Usa una conexión SSH para acceder a la instancia de Compute Engine que ejecuta la instancia de Redis OSS:

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    
    gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  4. Habilita la notificación del espacio de claves para la migración en vivo, que es necesaria en RIOT:

    redis-cli config set notify-keyspace-events KEA
    

Verifica que la instancia de Redis OSS esté en funcionamiento

  1. En Cloud Shell, inicia la CLI de Redis:

    redis-cli
    
  2. Establece y obtén un par clave-valor simple:

    set my_key my_value
    get my_key
    unlink my_key
    

    Esta es la salida:

    OK
    "my_value"
    (integer) 1
    

    Ya creaste la instancia de Redis OSS, accediste a ella y confirmaste que funciona.

Inserta datos de muestra

En esta sección, insertarás datos de muestra en la instancia de Redis OSS y verificarás que se hayan insertado correctamente.

  1. En Cloud Shell, inicia la CLI de Redis:

    redis-cli
    
  2. Agrega los siguientes seis pares clave-valor como el conjunto de datos inicial. Ingresa cada comando de forma individual y espera el OK de salida antes de ingresar el siguiente par clave-valor.

    set tennis federer
    
    set soccer ronaldo
    
    set basketball curry
    
    set football montana
    
    set golf woods
    
    set swimmer phelps
    
  3. Verifica que hayas agregado seis pares clave-valor de forma correcta:

    SCAN 0
    

    Esta es la salida:

    "swimmer"
    "soccer"
    "football"
    "golf"
    "tennis"
    "basketball"
    

Después de configurar y, luego, iniciar la migración RIOT, los datos se migrarán a la instancia de Redis Enterprise Cloud de destino.

Instala RIOT en la VM de la instancia de Redis OSS

Para ejecutar RIOT, debes asegurarte de que tu VM de Compute Engine tenga el tamaño adecuado. En general, te recomendamos que configures el tamaño de tu VM en 8 VCPU o más, según la cantidad de datos que se transportarán y la frecuencia de actualización. Para obtener más información, consulta la guía de comparación y recurso de familias de máquinas.

  1. En Cloud Shell, usa una conexión SSH para acceder a la instancia de Compute Engine que ejecuta la instancia de Redis OSS:

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    
    gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  2. Instala JDK para RIOT:

    sudo apt install default-jre -y
    
  3. Descarga e instala RIOT:

    sudo apt-get install unzip
    
    wget https://github.com/redis-developer/riot/releases/download/v2.19.0/riot-redis-2.19.0.zip
    
    unzip riot-redis-2.19.0.zip
    
  4. Verifica que RIOT esté instalado de forma correcta:

    ./riot-redis-2.19.0/bin/riot-redis -V
    

    El resultado es similar al siguiente, que muestra un logotipo de RIOT y un número de versión:

    Un logotipo de RIOT y un número de versión.

Ya instalaste la herramienta de migración RIOT en la instancia de Redis OSS y confirmaste que está funcionando.

Crear una instancia de Redis Enterprise Cloud

Redis Enterprise Cloud está disponible a través de Cloud Marketplace. Si no tienes un clúster de Redis Enterprise configurado como tu instancia de destino de Redis Enterprise, sigue los pasos de esta sección. Si ya tienes un clúster de Redis Enterprise configurado como tu base de datos de destino, puedes omitir esta sección y continuar con Inicia RIOT Live Migration.

  1. En Cloud Marketplace, ve a Redis Enterprise Cloud Flexible - Pago por uso.

    Ve a Redis Enterprise en Marketplace

    Para obtener más información, consulta las instrucciones en el documento de Redis Suscripciones flexibles con Cloud Marketplace.

  2. Accede a la consola de Redis con la información de la cuenta de Redis que proporcionaste cuando te suscribiste a Redis Enterprise Cloud Flexible.

  3. Para crear una suscripción flexible, sigue las instrucciones del documento de Redis Crea una suscripción flexible. Elige Google Cloud como proveedor de servicios en la nube y crea una base de datos con todos los parámetros de configuración predeterminados.

  4. Sigue las instrucciones del documento Habilita el intercambio de tráfico entre VPC de Redis para crear un intercambio de tráfico de VPC entre tu nube privada virtual de Google y la VPC administrada por Redis.

  5. En la consola de Redis, ve a Suscripción y, luego, ubica la cadena de conexión de base de datos de Redis Enterprise:

    1. Toma nota de la IP y el puerto del extremo privado, en el siguiente formato:

      ENDPOINT_IP:ENDPOINT_PORT
      

      Donde los valores representan lo siguiente:

      • ENDPOINT_IP: Es la dirección IP del extremo privado de la base de datos de Redis Enterprise.
      • ENDPOINT_PORT: el número de puerto del extremo privado de la base de datos de Redis Enterprise.
    2. Anota la contraseña de la base de datos.

Inicia RIOT Live Migration

Para migrar los datos de Redis OSS (origen) a la instancia de Redis Enterprise Cloud (destino), haz lo siguiente:

  1. En Cloud Shell, usa una conexión SSH para acceder a la instancia de Compute Engine que ejecuta la instancia de Redis OSS:

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    
    gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  2. Inicia una migración en vivo entre el origen y el destino. Si tu instancia de Redis OSS está en Redis 7.2, debes usar la replicación basada en tipos. Para obtener información sobre el uso de la opción --type, consulta la documentación de Redis Replicación basada en tipos.

    ./riot-redis-2.19.0/bin/riot-redis -u redis://localhost:6379 replicate  \
    -u redis://ENDPOINT_IP:ENDPOINT_PORT \
      -a REDIS_ENTERPRISE_DB_PASSWORD \
      --mode live
    

    Reemplaza lo siguiente por los valores que anotaste en la sección anterior:

    • ENDPOINT_IP: Es la dirección IP del extremo privado de la base de datos del clúster de Redis Enterprise.
    • ENDPOINT_PORT: Es el número de puerto del extremo privado de la base de datos del clúster de Redis Enterprise.
    • REDIS_ENTERPRISE_DB_PASSWORD: la contraseña de la base de datos del clúster de Redis Enterprise.

    El resultado es similar al siguiente:

    Listening  ? % ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━0/? (0:00:00 / ?) ?/s\
    Scanning 100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6/6 (0:00:00 / 0:00:00) ?/s
    

Verifica la migración de la base de datos

Es importante diseñar e implementar una estrategia de verificación de migraciones de bases de datos para confirmar que se haya migrado correctamente la base de datos. Aunque la estrategia de verificación que uses depende de tu caso de uso específico, te recomendamos que realices estas verificaciones para todas las migraciones:

  • Verificación de integridad: Verifica que los pares clave-valor iniciales se hayan migrado correctamente de Redis OSS a Redis Enterprise (carga inicial).
  • Verificación dinámica: comprueba que los cambios en el origen se estén transfiriendo a la instancia de destino (migración en curso).

Carga inicial

  1. En Cloud Shell, usa una conexión SSH para acceder a la instancia de Compute Engine que ejecuta la instancia de Redis OSS:

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    $ gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  2. Inicia la CLI de Redis:

    redis-cli -u redis://ENDPOINT_IP:ENDPOINT_PORT \
    -a REDIS_ENTERPRISE_DB_PASSWORD
    
  3. Verifica que los seis pares clave-valor se hayan migrado con éxito de Redis OSS a la instancia de Redis Enterprise:

    SCAN 0
    

    Esta es la salida:

    "swimmer"
    "soccer"
    "football"
    "golf"
    "tennis"
    "basketball"
    
  4. Obtén el valor de la clave de tenis:

    get tennis
    

    Esta es la salida:

    [return federer]
    
  5. Sal de la CLI de Redis:

    exit
    

Migración en curso

Verifica que los cambios en curso en la instancia de Redis OSS de origen se reflejen en la instancia de Redis Enterprise de destino:

  1. En Cloud Shell, usa una conexión SSH para acceder a la VM de Redis OSS.
  2. Inicia la CLI de Redis:

    redis-cli
    
  3. Agrega pares clave-valor nuevos:

    1. Agrega un nuevo par runner bolt:

      set runner bolt
      
    2. Actualiza o inserta un par tennis alcaraz nuevo:

      set tennis alcaraz
      

    El resultado de cada uno de estos comandos es el siguiente:

    OK
    
  4. En la instancia de Redis Enterprise, observa que se agregan pares clave-valor nuevos:

    get runner
    

    Esta es la salida:

    [return bolt]
    
  5. Para verificar que todos los pares clave-valor estén presentes, verifica los recuentos de claves:

    redis-cli info keyspace and redis-cli -u <REMOTE> info keyspace
    

    Esta es la salida:

    # Keyspace
    db0:keys=7,expires=0,avg_ttl=0
    

Ya verificaste que RIOT Live Migration migró automáticamente todos los pares clave-valor de la instancia de Redis OSS de origen y cualquier cambio en curso en el origen.

Migra sistemas del origen al destino

Después de verificar la migración de la base de datos, puedes realizar una migración de sistemas desde la instancia de Redis OSS de origen a la instancia de Redis Enterprise de destino:

  1. Suspende el acceso de escritura del cliente a la instancia de Redis OSS de origen mediante la Lista de control de acceso de Redis.
  2. A menos que necesites conservar la base de datos de origen para tu estrategia de resguardo, quita la instancia de VM para retirar la instancia de Redis OSS de origen.
  3. Migra el cliente a la misma región que la instancia de la base de datos de Redis Enterprise. Para obtener más información, consulta la documentación de tu host de cliente.
  4. En la consola de Redis, ubica el extremo privado de la instancia de base de datos de Redis Enterprise y actualiza la conexión de Redis de tu cliente al extremo privado. Para obtener más información, consulta Cómo ver y editar bases de datos en la documentación de Redis.
  5. En Cloud Shell, presiona Ctrl+C para detener el proceso de RIOT.

Prepara una estrategia de resguardo

Una vez que finaliza la migración de sistemas, la instancia de Redis Enterprise de destino es el sistema de registro. La instancia de Redis OSS de origen está desactualizada y, finalmente, se quitará. Sin embargo, recomendamos recurrir a la instancia de Redis OSS de origen en caso de fallas graves en la instancia nueva de Redis Enterprise de destino.

Para evitar este tipo de fallas, recomendamos que mantengas actualizada la instancia original de Redis OSS de origen con los cambios de la base de datos de destino. Cuando estés seguro de que la nueva instancia de destino es confiable, puedes cerrar la instancia de origen.

Limpia

En las siguientes secciones, se explica cómo puedes evitar cargos futuros para el proyecto de Google Cloud y los recursos de Redis que usaste en esta implementación.

Borra el proyecto

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Borra la base de datos de Redis Enterprise

Para borrar la base de datos de Redis Enterprise, consulta Borra la base de datos en la documentación de Redis.

¿Qué sigue?

Colaboradores

Autores:

Otros colaboradores:

  • Chris Mague | Ingeniero de Atención al cliente, Administración de datos
  • Gabe Weiss | Administrador de Developers Advocate
  • Marco Ferrari | Arquitecto de soluciones de nube