Esegui il deployment di RIOT Live Migration per eseguire la migrazione a Redis Enterprise Cloud

Last reviewed 2024-01-29 UTC

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.

Le origini compatibili con Redis vengono migrate tramite RIOT a 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:

La migrazione di Redis OSS a Redis Enterprise Cloud avviene tramite RIOT e il peering VPC.

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:

Prima di iniziare

Completa i seguenti passaggi per configurare un ambiente per la migrazione.

  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. 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

  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. 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.
  3. 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
    
  4. 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

  1. In Cloud Shell, avvia Redis CLI:

    redis-cli
    
  2. 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.

  1. In Cloud Shell, avvia Redis CLI:

    redis-cli
    
  2. 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
    
  3. 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.

  1. 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
    
  2. Installa JDK per RIOT:

    sudo apt install default-jre -y
    
  3. 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
    
  4. 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:

    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.

  1. 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.

  2. Accedi alla console Redis utilizzando i dati dell'account Redis che hai fornito quando hai sottoscritto un abbonamento a Redis Enterprise Cloud Flexible.

  3. 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.

  4. 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.

  5. Nella console Redis, vai a Abbonamento e individua la stringa di connessione del database Redis Enterprise:

    1. 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.
    2. 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:

  1. 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
    
  2. 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

  1. 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
    
  2. Avvia la Redis CLI:

    redis-cli -u redis://ENDPOINT_IP:ENDPOINT_PORT \
    -a REDIS_ENTERPRISE_DB_PASSWORD
    
  3. 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"
    
  4. Ottieni il valore della chiave tennis:

    get tennis
    

    L'output è il seguente:

    [return federer]
    
  5. 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:

  1. In Cloud Shell, utilizza una connessione SSH per accedere alla VM Redis OSS.
  2. Avvia l'interfaccia a riga di comando Redis:

    redis-cli
    
  3. Aggiungi nuove coppie chiave-valore:

    1. Aggiungi una nuova coppia runner bolt:

      set runner bolt
      
    2. Esegui l'upsert di una nuova coppia tennis alcaraz:

      set tennis alcaraz
      

    L'output di ciascuno di questi comandi è il seguente:

    OK
    
  4. Nell'istanza Redis Enterprise, osserva che vengono aggiunte nuove coppie chiave-valore:

    get runner
    

    L'output è il seguente:

    [return bolt]
    
  5. 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:

  1. Sospendi l'accesso in scrittura del client all'istanza OSS Redis di origine utilizzando l'elenco di controllo dell'accesso Redis.
  2. 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.
  3. Esegui la migrazione del client nella stessa regione dell'istanza del database Redis Enterprise. Per informazioni, consulta la documentazione dell'host client.
  4. 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.
  5. 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

  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.

Elimina il database Redis Enterprise

Per eliminare il database Redis Enterprise, consulta Eliminare il database nella documentazione di Redis

Passaggi successivi

Collaboratori

Autori:

Altri collaboratori: