Questo documento descrive come eseguire il deployment di RIOT Live Migration per eseguire la migrazione a Redis Enterprise Cloud. Gli architetti di database, i team DevOps e SRE o gli amministratori di rete possono utilizzare questa architettura per offrire ai propri team migrazioni con tempi di riposo quasi nulli. Questo documento presuppone che tu abbia dimestichezza con l'utilizzo di Google Cloud CLI e Compute Engine.
Architettura
Il seguente diagramma mostra l'architettura di riferimento che utilizza RIOT Live Migration Service per eseguire la migrazione delle origini compatibili con Redis in Redis Enterprise Cloud.
Per informazioni dettagliate sull'architettura, consulta RIOT Live Migration per eseguire la migrazione a Redis Enterprise Cloud.
Il deployment di esempio in questo documento utilizza la seguente architettura in cui la sorgente è un OSS Redis su una VM Compute Engine:
Nel diagramma, un'istanza Redis OSS e RIOT sono raggruppate in un'unica VM Compute Engine per semplicità. In un ambiente di produzione, consigliamo di eseguire sempre RIOT su una propria VM per garantire un migliore rendimento.
L'architettura di deployment di esempio contiene i seguenti componenti:
- Origine: istanza Redis OSS in esecuzione su VM Compute Engine.
- Destinazione: Redis Enterprise Cloud in esecuzione nella VPC gestita di Redis.
- Migration Service: RIOT in esecuzione sulla stessa VM Compute Engine di Redis OSS.
- Configurazione di rete: peering VPC tra una VPC gestita e la VPC gestita di Redis.
Lo strumento di migrazione RIOT ha tempi di inattività quasi nulli. Durante la migrazione da Redis OSS (origine) a Redis Enterprise Cloud (destinazione), le applicazioni possono comunque accedere a Redis OSS senza interruzioni o interruzioni del servizio. Durante il processo di migrazione, dopo il caricamento iniziale dei dati da Redis OSS, RIOT Live Migration continua a eseguire la migrazione delle modifiche da Redis OSS man mano che si verificano.
Obiettivi
- Configura l'origine Redis OSS creando e caricando i dati.
- Configura un cluster di destinazione della migrazione in Redis Enterprise Cloud.
- Utilizza RIOT Live Migration per eseguire la migrazione dei dati da Redis OSS a Redis Enterprise Cloud.
- Comprendi le strategie di test, transizione e riserva.
Costi
Il deployment di questa architettura utilizza i seguenti componenti fatturabili di Google Cloud:
- Costi di Compute Engine per l'esecuzione di istanze Redis OSS e RIOT.
- Costo di Redis Enterprise Cloud acquisito tramite Google Cloud Marketplace.
- Tariffe di rete incorrenti a causa del traffico di migrazione dei dati tra zone e regioni.
Prima di iniziare
Completa i seguenti passaggi per configurare un ambiente per la migrazione.
-
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.
Per ottenere le autorizzazioni necessarie per completare questo dispiegamento, chiedi all'amministratore di concederti il ruolo IAM Amministratore della fatturazione (
roles/billing.admin
) nella tua organizzazione. Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire l'accesso.Potresti anche riuscire a ottenere le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.
Configura un'istanza Redis OSS
Per avviare il deployment, installa l'istanza Redis OSS su una VM Compute Engine. L'istanza funge da istanza di origine.
Installa l'istanza 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.
In Cloud Shell, crea una VM 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'
Sostituisci quanto segue:
VPC_NETWORK_NAME
: il nome della rete VPC.VPC_SUBNETWORK_NAME
: il nome della subnet VPC.
Utilizza una connessione SSH per accedere all'istanza Compute Engine che esegue l'istanza Redis OSS:
PROJECT_ID=$(gcloud info --format='value(config.project)') gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
Attiva la notifica dello spazio chiavi per la migrazione live, che è richiesta da RIOT:
redis-cli config set notify-keyspace-events KEA
Verifica che l'istanza Redis OSS sia operativa
In Cloud Shell, avvia Redis CLI:
redis-cli
Imposta e recupera una coppia chiave-valore semplice:
set my_key my_value get my_key unlink my_key
L'output è il seguente:
OK "my_value" (integer) 1
Ora hai creato e accedi all'istanza OSS Redis e hai verificato che sia operativa.
Inserisci dati di esempio
In questa sezione, inserisci dati di esempio nell'istanza Redis OSS e verifica che siano stati inseriti correttamente.
In Cloud Shell, avvia Redis CLI:
redis-cli
Aggiungi le sei coppie chiave-valore seguenti come set di dati iniziale. Inserisci ogni comando singolarmente e attendi l'output
OK
prima di inserire la successiva coppia chiave-valore.set tennis federer
set soccer ronaldo
set basketball curry
set football montana
set golf woods
set swimmer phelps
Verifica di aver aggiunto sei coppie chiave-valore:
SCAN 0
L'output è il seguente:
"swimmer" "soccer" "football" "golf" "tennis" "basketball"
Dopo aver configurato e avviato la migrazione RIOT, i dati vengono migrati nell'istanza Redis Enterprise Cloud di destinazione.
Installa RIOT sulla VM dell'istanza Redis OSS
Per eseguire RIOT, devi assicurarti che la VM Compute Engine sia di dimensioni adeguate. In generale, ti consigliamo di impostare la dimensione della VM su 8 VCPU o più, a seconda della quantità di dati da trasportare e della frequenza di aggiornamento. Per ulteriori informazioni, consulta la guida alle risorse e al confronto per le famiglie di macchine.
In Cloud Shell, utilizza una connessione SSH per accedere all'istanza Compute Engine che esegue l'istanza Redis OSS:
PROJECT_ID=$(gcloud info --format='value(config.project)') gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
Installa JDK per RIOT:
sudo apt install default-jre -y
Scarica e installa 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 che RIOT sia installato correttamente:
./riot-redis-2.19.0/bin/riot-redis -V
L'output è simile al seguente, che mostra un logo RIOT e un numero di versione:
Ora hai installato lo strumento di migrazione RIOT nell'istanza Redis OSS e confermato che è operativo.
Crea un'istanza Redis Enterprise Cloud
Redis Enterprise Cloud è disponibile tramite Cloud Marketplace. Se non hai configurato un cluster Redis Enterprise come istanza Redis Enterprise di destinazione, segui i passaggi descritti in questa sezione. Se hai già configurato un cluster Redis Enterprise come database di destinazione, puoi saltare questa sezione e procedere con l'avvio della migrazione in tempo reale di RIOT.
In Cloud Marketplace, vai a Redis Enterprise Cloud Flexible - Pay as You Go.
Vai a Redis Enterprise nel marketplace
Per saperne di più, consulta le istruzioni nella documentazione di Redis Abbonamenti flessibili con Cloud Marketplace.
Accedi alla console Redis utilizzando i dati dell'account Redis che hai fornito quando hai sottoscritto un abbonamento a Redis Enterprise Cloud Flexible.
Crea un abbonamento flessibile seguendo le istruzioni riportate nel documento Redis Creare un abbonamento flessibile. Scegli Google Cloud come fornitore cloud e crea un database con tutte le impostazioni predefinite.
Crea un peering VPC tra il tuo Virtual Private Cloud di Google e il VPC gestito da Redis seguendo le istruzioni riportate nel documento Redis Abilita il peering VPC.
Nella console Redis, vai a Abbonamento e individua la stringa di connessione del database Redis Enterprise:
Prendi nota dell'IP e della porta dell'endpoint privato nel seguente formato:
ENDPOINT_IP:ENDPOINT_PORT
dove i valori rappresentano quanto segue:
ENDPOINT_IP
: l'indirizzo IP dell'endpoint privato per il database Redis Enterprise.ENDPOINT_PORT
: il numero di porta dell'endpoint privato per il database Redis Enterprise.
Prendi nota della password del database.
Avvia la migrazione live di RIOT
Per eseguire la migrazione dei dati da Redis OSS (origine) all'istanza Redis Enterprise Cloud (destinazione), segui questi passaggi:
In Cloud Shell, utilizza una connessione SSH per accedere all'istanza Compute Engine che esegue l'istanza Redis OSS:
PROJECT_ID=$(gcloud info --format='value(config.project)') gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
Avvia una migrazione live tra l'origine e la destinazione. Se la tua istanza Redis OSS è su Redis 7.2, devi utilizzare la replica basata sui tipi. Per informazioni sull'utilizzo dell'opzione
--type
, consulta la documentazione di Redis relativa alla replica basata su tipo../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
Sostituisci quanto segue con i valori che hai annotato nella sezione precedente:
ENDPOINT_IP
: l'indirizzo IP dell'endpoint privato per il database del cluster Redis Enterprise.ENDPOINT_PORT
: il numero di porta dell'endpoint privato per il database del cluster Redis Enterprise.REDIS_ENTERPRISE_DB_PASSWORD
: la password per il database del cluster Redis Enterprise.
L'output è simile al seguente:
Listening ? % ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━0/? (0:00:00 / ?) ?/s\ Scanning 100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6/6 (0:00:00 / 0:00:00) ?/s
Verificare la migrazione del database
È importante progettare e implementare una strategia di verifica della migrazione del database per confermare il buon esito della migrazione. Anche se la strategia di verifica che utilizzi dipende dal tuo caso d'uso specifico, ti consigliamo di eseguire questi controlli per tutte le migrazioni:
- Controllo di completezza: verifica che le coppie chiave-valore iniziali siano state migrate correttamente da Redis OSS a Redis Enterprise (caricamento iniziale).
- Controllo dinamico: verifica che le modifiche nell'origine vengano trasferite all'istanza di destinazione (migrazione in corso).
Caricamento iniziale
In Cloud Shell, utilizza una connessione SSH per accedere all'istanza Compute Engine che esegue l'istanza Redis OSS:
PROJECT_ID=$(gcloud info --format='value(config.project)') $ gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
Avvia la Redis CLI:
redis-cli -u redis://ENDPOINT_IP:ENDPOINT_PORT \ -a REDIS_ENTERPRISE_DB_PASSWORD
Verifica che le sei coppie chiave-valore siano state migrate correttamente da Redis OSS all'istanza Redis Enterprise:
SCAN 0
L'output è il seguente:
"swimmer" "soccer" "football" "golf" "tennis" "basketball"
Ottieni il valore della chiave tennis:
get tennis
L'output è il seguente:
[return federer]
Esci dall'interfaccia a riga di comando Redis:
exit
Migrazione in corso
Verifica che le modifiche in corso al codice open source Redis di origine siano riportate nell'istanza Redis Enterprise di destinazione:
- In Cloud Shell, utilizza una connessione SSH per accedere alla VM Redis OSS.
Avvia l'interfaccia a riga di comando Redis:
redis-cli
Aggiungi nuove coppie chiave-valore:
Aggiungi una nuova coppia
runner bolt
:set runner bolt
Esegui l'upsert di una nuova coppia
tennis alcaraz
:set tennis alcaraz
L'output di ciascuno di questi comandi è il seguente:
OK
Nell'istanza Redis Enterprise, osserva che vengono aggiunte nuove coppie chiave-valore:
get runner
L'output è il seguente:
[return bolt]
Per verificare che tutte le coppie chiave-valore siano presenti, controlla i conteggi delle chiavi:
redis-cli info keyspace and redis-cli -u <REMOTE> info keyspace
L'output è il seguente:
# Keyspace db0:keys=7,expires=0,avg_ttl=0
Ora hai verificato che RIOT Live Migration ha eseguito automaticamente la migrazione di tutte le coppie chiave-valore dall'istanza Redis OSS di origine e di eventuali modifiche in corso all'origine.
Esegui il passaggio dall'origine alla destinazione
Dopo aver verificato la migrazione del database, puoi eseguire il passaggio dall'istanza Redis OSS di origine all'istanza Redis Enterprise di destinazione:
- Sospendi l'accesso in scrittura del client all'istanza OSS Redis di origine utilizzando l'elenco di controllo dell'accesso Redis.
- A meno che tu non debba conservare il database di origine per la tua strategia di riserva, ritira Redis OSS di origine rimuovendo l'istanza VM.
- Esegui la migrazione del client nella stessa regione dell'istanza del database Redis Enterprise. Per informazioni, consulta la documentazione dell'host client.
- Nella console Redis, individua l'endpoint privato dell'istanza del database Redis Enterprise e aggiorna la connessione Redis del client all'endpoint privato. Per ulteriori informazioni, consulta Visualizzare e modificare i database nella documentazione di Redis.
- In Cloud Shell, interrompi il processo RIOT premendo Ctrl+C.
Prepara una strategia di riserva
Al termine del passaggio, l'istanza Redis Enterprise di destinazione è il sistema di record; l'istanza Redis OSS di origine è obsoleta e verrà eventualmente rimossa. Tuttavia, ti consigliamo di eseguire il fallback all'istanza OSS Redis di origine in caso di errori gravi nella nuova istanza Redis Enterprise di destinazione.
Per eseguire il fallback da questi errori, ti consigliamo di mantenere aggiornata l'istanza Redis OSS di origine con le modifiche del database di destinazione. Quando hai la certezza che la nuova istanza di destinazione sia affidabile, puoi arrestare l'istanza di origine.
Esegui la pulizia
Le sezioni seguenti spiegano come evitare addebiti futuri per il progetto Google Cloud e le risorse Redis utilizzate in questo deployment.
Elimina il progetto
- 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.
Elimina il database Redis Enterprise
Per eliminare il database Redis Enterprise, consulta Eliminare il database nella documentazione di Redis
Passaggi successivi
- Scopri come definire l'ambito della migrazione a Redis Enterprise Cloud.
- Leggi i contenuti sulla migrazione dei dati di Google Cloud.
- Per una documentazione e best practice più approfondite, consulta la documentazione di RIOT.
- Per altre architetture di riferimento, diagrammi e best practice, visita il Cloud Architecture Center.
Collaboratori
Autori:
- Saurabh Kumar | ISV Partner Engineer
- Gilbert Lau | Principal Cloud Architect, Redis
Altri collaboratori:
- Chris Mague | Customer Engineer, gestione dei dati
- Gabe Weiss | Developer Advocacy Manager
- Marco Ferrari | Cloud Solutions Architect