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.
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:
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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Pub/Sub, Dataflow, and Compute Engine APIs.
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
-
In the Google Cloud console, 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.
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.
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
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
En Cloud Shell, inicia la CLI de Redis:
redis-cli
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.
En Cloud Shell, inicia la CLI de Redis:
redis-cli
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
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.
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
Instala JDK para RIOT:
sudo apt install default-jre -y
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
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:
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.
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.
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.
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.
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.
En la consola de Redis, ve a Suscripción y, luego, ubica la cadena de conexión de base de datos de Redis Enterprise:
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.
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:
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
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
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
Inicia la CLI de Redis:
redis-cli -u redis://ENDPOINT_IP:ENDPOINT_PORT \ -a REDIS_ENTERPRISE_DB_PASSWORD
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"
Obtén el valor de la clave de tenis:
get tennis
Esta es la salida:
[return federer]
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:
- En Cloud Shell, usa una conexión SSH para acceder a la VM de Redis OSS.
Inicia la CLI de Redis:
redis-cli
Agrega pares clave-valor nuevos:
Agrega un nuevo par
runner bolt
:set runner bolt
Actualiza o inserta un par
tennis alcaraz
nuevo:set tennis alcaraz
El resultado de cada uno de estos comandos es el siguiente:
OK
En la instancia de Redis Enterprise, observa que se agregan pares clave-valor nuevos:
get runner
Esta es la salida:
[return bolt]
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:
- Suspende el acceso de escritura del cliente a la instancia de Redis OSS de origen mediante la Lista de control de acceso de Redis.
- 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.
- 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.
- 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.
- 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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- 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?
- Aprende a definir el alcance de tu migración a Redis Enterprise Cloud.
- Lee el contenido de migración de datos de Google Cloud.
- Para obtener documentación más detallada y prácticas recomendadas, consulta la documentación de RIOT.
- Para obtener más información sobre las arquitecturas de referencia, los diagramas y las prácticas recomendadas, explora Cloud Architecture Center.
Colaboradores
Autores:
- Saurabh Kumar | Ingeniero socio de ISV
- Gilbert Lau | Arquitecto principal de nube, Redis
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