RIOT-Live-Migration für die Migration zu Redis Enterprise Cloud bereitstellen

Last reviewed 2024-01-29 UTC

In diesem Dokument wird beschrieben, wie Sie RIOT-Live-Migration für die Migration zu Redis Enterprise Cloud bereitstellen. Datenbankarchitekten, DevOps- und SRE-Teams oder Netzwerkadministratoren können diese Architektur nutzen, um ihren Teams Migrationen mit nahezu null Ausfallzeiten zu ermöglichen. In diesem Dokument wird davon ausgegangen, dass Sie mit der Verwendung der Google Cloud CLI und Compute Engine vertraut sind.

Architektur

Das folgende Diagramm zeigt die Referenzarchitektur, in der der RIOT-Live-Migration-Dienst verwendet wird, um Redis-kompatible Quellen zu Redis Enterprise Cloud zu migrieren.

Redis-kompatible Quellen werden über RIOT zu Redis Enterprise Cloud migriert.

Weitere Informationen zur Architektur finden Sie unter RIOT-Live-Migration zur Migration zu Redis Enterprise Cloud.

Für die Beispielbereitstellung in diesem Dokument wird die folgende Architektur verwendet, bei der die Quelle eine Redis OSS-Instanz auf einer Compute Engine-VM ist:

Redis OSS wird über RIOT und VPC-Peering zu Redis Enterprise Cloud migriert.

Im Diagramm werden eine Redis OSS-Instanz und RIOT der Einfachheit halber in einer einzigen Compute Engine-VM zusammengefasst. In einer Produktionsumgebung empfehlen wir, RIOT immer auf einer eigenen VM auszuführen, um eine bessere Leistung zu erzielen.

Die Beispiel-Bereitstellungsarchitektur enthält die folgenden Komponenten:

  • Quelle: Redis OSS-Instanz, die auf der Compute Engine-VM ausgeführt wird.
  • Ziel: Redis Enterprise Cloud, die in der von Redis verwalteten VPC ausgeführt wird.
  • Migrationsdienst: RIOT, wird auf derselben Compute Engine-VM wie Redis OSS ausgeführt.
  • Netzwerkeinrichtung: VPC-Peering zwischen einer verwalteten VPC und der von Redis verwalteten VPC.

Das RIOT-Migrationstool hat praktisch keine Ausfallzeiten. Während der Migration von Redis OSS (Quelle) zu Redis Enterprise Cloud (Ziel) können Ihre Anwendungen weiterhin ohne Auswirkungen oder Dienstunterbrechung auf Redis OSS zugreifen. Während des Migrationsprozesses migriert RIOT Live Migration nach dem anfänglichen Laden von Daten aus Redis OSS weiterhin Änderungen von Redis OSS, sobald sie auftreten.

Ziele

  • Redis OSS-Quelle durch Erstellen und Laden von Daten einrichten
  • Einen Migrationszielcluster in Redis Enterprise Cloud einrichten
  • RIOT-Live-Migration verwenden, um Daten von Redis OSS zu Redis Enterprise Cloud zu migrieren
  • Test-, Umstellungs- und Fallback-Strategien verstehen

Kosten

Für die Bereitstellung dieser Architektur werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet:

Hinweise

Führen Sie die folgenden Schritte aus, um eine Umgebung für die Migration einzurichten.

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

    Go to project selector

  2. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

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

    Enable the APIs

  4. Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Abrechnungsadministrator“ (roles/billing.admin) für Ihre Organisation zuzuweisen, um die Berechtigungen zu erhalten, die Sie für diese Bereitstellung benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

    Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Redis OSS-Instanz einrichten

Zum Starten der Bereitstellung installieren Sie die Redis OSS-Instanz auf einer Compute Engine-VM. Die Instanz dient als Quellinstanz.

Redis OSS-Instanz installieren

  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. Erstellen Sie in Cloud Shell eine Ubuntu-VM:

    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'
    

    Ersetzen Sie Folgendes:

    • VPC_NETWORK_NAME: Der Name des VPC-Netzwerks.
    • VPC_SUBNETWORK_NAME: der Name des VPC-Subnetzwerks.
  3. Melden Sie sich über eine SSH-Verbindung in der Compute Engine-Instanz an, auf der die Redis-OSS-Instanz ausgeführt wird:

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    
    gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  4. Aktivieren Sie die Schlüsselbereichsbenachrichtigung für die Live-Migration, die von RIOT benötigt wird:

    redis-cli config set notify-keyspace-events KEA
    

Prüfen, ob die Redis OSS-Instanz betriebsbereit ist

  1. Starten Sie in Cloud Shell die Redis-Befehlszeile:

    redis-cli
    
  2. Legen Sie ein einfaches Schlüssel/Wert-Paar fest und rufen Sie es ab:

    set my_key my_value
    get my_key
    unlink my_key
    

    Die Ausgabe sieht so aus:

    OK
    "my_value"
    (integer) 1
    

    Sie haben jetzt Ihre Redis-OSS-Instanz erstellt, darauf zugegriffen und bestätigt, dass sie betriebsbereit ist.

Beispieldaten einfügen

In diesem Abschnitt fügen Sie Beispieldaten in die Redis OSS-Instanz ein und prüfen, ob die Daten erfolgreich eingefügt wurden.

  1. Starten Sie in Cloud Shell die Redis-Befehlszeile:

    redis-cli
    
  2. Fügen Sie die folgenden sechs Schlüssel/Wert-Paare als ersten Datensatz hinzu. Geben Sie jeden Befehl einzeln ein und warten Sie auf die Ausgabe OK, bevor Sie das nächste Schlüssel/Wert-Paar eingeben.

    set tennis federer
    
    set soccer ronaldo
    
    set basketball curry
    
    set football montana
    
    set golf woods
    
    set swimmer phelps
    
  3. Prüfen Sie, ob Sie sechs Schlüssel/Wert-Paare hinzugefügt haben:

    SCAN 0
    

    Die Ausgabe sieht so aus:

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

Nachdem Sie die RIOT-Migration eingerichtet und gestartet haben, werden die Daten in die Zielinstanz von Redis Enterprise Cloud migriert.

RIOT auf der Redis OSS-Instanz-VM installieren

Damit RIOT ausgeführt werden kann, muss Ihre Compute Engine-VM die richtige Größe haben. Im Allgemeinen empfehlen wir, die Größe Ihrer VM auf mindestens 8 VCPUs festzulegen, je nach der Menge der zu übertragenden Daten und der Updatehäufigkeit. Weitere Informationen finden Sie im Leitfaden zu Ressourcen und Vergleichen für Maschinenfamilien.

  1. Verwenden Sie in Cloud Shell eine SSH-Verbindung, um sich bei der Compute Engine-Instanz anzumelden, auf der die Redis OSS-Instanz ausgeführt wird:

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

    sudo apt install default-jre -y
    
  3. Laden Sie RIOT herunter und installieren Sie diese Lösung:

    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. Prüfen Sie, ob RIOT korrekt installiert ist:

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

    Die Ausgabe sieht in etwa so aus und zeigt ein RIOT-Logo und eine Versionsnummer:

    Ein RIOT-Logo und eine Versionsnummer.

Sie haben das RIOT-Migrationstool jetzt auf der Redis OSS-Instanz installiert und bestätigt, dass es betriebsbereit ist.

Redis Enterprise Cloud-Instanz erstellen

Redis Enterprise Cloud ist über Cloud Marketplace verfügbar. Wenn Sie keinen Redis Enterprise-Cluster als Redis Enterprise-Zielinstanz eingerichtet haben, folgen Sie der Anleitung in diesem Abschnitt. Wenn Sie bereits einen Redis Enterprise-Cluster als Zieldatenbank eingerichtet haben, können Sie diesen Abschnitt überspringen und mit RIOT-Live-Migration starten fortfahren.

  1. Rufen Sie im Cloud Marketplace Redis Enterprise Cloud Flexible – Pay as you go auf.

    Redis Enterprise im Marketplace aufrufen

    Weitere Informationen finden Sie in der Anleitung im Redis-Dokument Flexible Abos mit Cloud Marketplace.

  2. Melden Sie sich mit den Redis-Kontoinformationen an, die Sie beim Abschließen des Abos für Redis Enterprise Cloud Flexible angegeben haben, in der Redis-Konsole an.

  3. Erstellen Sie ein Flexible-Abo. Folgen Sie dazu der Anleitung im Redis-Dokument Flexible-Abo erstellen. Wählen Sie Google Cloud als Cloud-Anbieter aus und erstellen Sie eine Datenbank mit allen Standardeinstellungen.

  4. Erstellen Sie ein VPC-Peering zwischen Ihrer Google Virtual Private Cloud und der von Redis verwalteten VPC. Folgen Sie dazu der Anleitung im Redis-Dokument VPC-Peering aktivieren.

  5. Gehen Sie in der Redis-Konsole zu Abo und suchen Sie den Verbindungsstring der Redis Enterprise-Datenbank:

    1. Notieren Sie sich die IP-Adresse und den Port des privaten Endpunkts im folgenden Format:

      ENDPOINT_IP:ENDPOINT_PORT
      

      Die Werte stehen für Folgendes:

      • ENDPOINT_IP: die private Endpunkt-IP-Adresse für die Redis Enterprise-Datenbank.
      • ENDPOINT_PORT: die Portnummer des privaten Endpunkts für die Redis Enterprise-Datenbank.
    2. Notieren Sie sich das Datenbankpasswort.

RIOT-Live-Migration starten

So migrieren Sie die Daten von der Redis OSS-Instanz (Quelle) zur Redis Enterprise Cloud-Instanz (Ziel):

  1. Verwenden Sie in Cloud Shell eine SSH-Verbindung, um sich bei der Compute Engine-Instanz anzumelden, auf der die Redis OSS-Instanz ausgeführt wird:

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    
    gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  2. Initiieren Sie eine Live-Migration zwischen der Quelle und dem Ziel. Wenn Ihre Redis-OSS-Instanz Redis 7.2 verwendet, müssen Sie die typbasierte Replikation verwenden. Informationen zur Verwendung der Option --type finden Sie in der Redis-Dokumentation unter Typbasierte Replikation.

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

    Ersetzen Sie die folgenden Werte durch die Werte, die Sie im vorherigen Abschnitt notiert haben:

    • ENDPOINT_IP: Die private Endpunkt-IP-Adresse für die Redis Enterprise-Clusterdatenbank.
    • ENDPOINT_PORT: Die private Portnummer des Endpunkts für die Redis Enterprise-Clusterdatenbank.
    • REDIS_ENTERPRISE_DB_PASSWORD: Das Passwort für die Redis Enterprise-Clusterdatenbank.

    Die Ausgabe sieht in etwa so aus:

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

Datenbankmigration prüfen

Es ist wichtig, eine Strategie zur Prüfung der Datenbankmigration zu entwerfen und zu implementieren, um zu bestätigen, dass die Datenbankmigration erfolgreich ist. Die von Ihnen verwendete Verifizierungsstrategie hängt zwar von Ihrem spezifischen Anwendungsfall ab, wir empfehlen jedoch, diese Prüfungen für alle Migrationen durchzuführen:

  • Vollständigkeitsprüfung: Prüfen Sie, ob die ursprünglichen Schlüssel/Werte-Paare erfolgreich von Redis OSS zu Redis Enterprise migriert wurden (erster Ladevorgang).
  • Dynamische Prüfung: Prüfen Sie, ob Änderungen in der Quelle in die Zielinstanz übertragen werden (laufende Migration).

Anfänglicher Ladevorgang

  1. Verwenden Sie in Cloud Shell eine SSH-Verbindung, um sich bei der Compute Engine-Instanz anzumelden, auf der die Redis OSS-Instanz ausgeführt wird:

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    $ gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  2. Starten Sie die Redis-Befehlszeile:

    redis-cli -u redis://ENDPOINT_IP:ENDPOINT_PORT \
    -a REDIS_ENTERPRISE_DB_PASSWORD
    
  3. Prüfen Sie, ob die sechs Schlüssel/Wert-Paare erfolgreich von Redis OSS zur Redis Enterprise-Instanz migriert wurden:

    SCAN 0
    

    Die Ausgabe sieht so aus:

    "swimmer"
    "soccer"
    "football"
    "golf"
    "tennis"
    "basketball"
    
  4. Rufen Sie den Wert des Schlüssels „tennis“ ab:

    get tennis
    

    Die Ausgabe sieht so aus:

    [return federer]
    
  5. Beenden Sie die Redis-Befehlszeile:

    exit
    

Laufende Migration

Prüfen Sie, ob laufende Änderungen an der Redis OSS-Quellinstanz in der Redis Enterprise-Zielinstanz übernommen werden:

  1. Melden Sie sich in Cloud Shell über eine SSH-Verbindung in der Redis OSS-VM an.
  2. Starten Sie die Redis-Befehlszeile:

    redis-cli
    
  3. Fügen Sie neue Schlüssel/Wert-Paare hinzu:

    1. Fügen Sie ein neues runner bolt-Paar hinzu:

      set runner bolt
      
    2. Führen Sie ein upsert für ein neues tennis alcaraz-Paar durch:

      set tennis alcaraz
      

    Die Ausgabe für jeden dieser Befehle sieht so aus:

    OK
    
  4. Beachten Sie in der Redis Enterprise-Instanz, dass neue Schlüssel/Wert-Paare hinzugefügt werden:

    get runner
    

    Die Ausgabe sieht so aus:

    [return bolt]
    
  5. Prüfen Sie die Anzahl der Schlüssel, um zu prüfen, ob alle Schlüssel/Wert-Paare vorhanden sind:

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

    Die Ausgabe sieht so aus:

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

Sie haben jetzt überprüft, ob RIOT-Live-Migration alle Schlüssel/Wert-Paare automatisch aus der Redis OSS-Quellinstanz und alle laufenden Änderungen an der Quelle migriert hat.

Von der Quelle zum Ziel umschalten

Nachdem Sie die Datenbankmigration überprüft haben, können Sie eine Umstellung von der Redis OSS-Quellinstanz zur Redis Enterprise-Zielinstanz durchführen:

  1. Sperren Sie den Schreibzugriff des Clients auf die Redis OSS-Quellinstanz mithilfe der Redis-Access Control List.
  2. Wenn Sie die Quelldatenbank nicht für Ihre Fallback-Strategie beibehalten müssen, nehmen Sie die Redis OSS-Quellinstanz außer Betrieb, indem Sie die VM-Instanz entfernen.
  3. Migrieren Sie den Client in die Region der Redis Enterprise-Datenbankinstanz. Weitere Informationen finden Sie in der Dokumentation zu Ihrem Clienthost.
  4. Suchen Sie in der Redis-Konsole den privaten Endpunkt der Redis Enterprise-Datenbankinstanz und aktualisieren Sie die Redis-Verbindung Ihres Clients zum privaten Endpunkt. Weitere Informationen finden Sie in der Redis-Dokumentation unter Datenbanken ansehen und bearbeiten.
  5. Beenden Sie in Cloud Shell den RIOT-Prozess durch Drücken von Strg+C.

Fallback-Strategie vorbereiten

Nach der Umstellung ist die Redis Enterprise-Zielinstanz das Erfassungssystem. Die Redis OSS-Quellinstanz ist veraltet und wird schließlich entfernt. Sie sollten jedoch bei schwerwiegenden Fehlern in der neuen Redis Enterprise-Zielinstanz auf die Redis OSS-Quellinstanz zurückgreifen.

Um die Auswirkungen solcher Fehler möglichst gering zu halten, sollten Sie die ursprüngliche Redis OSS-Quellinstanz mit den Änderungen an der Zieldatenbank auf den neuesten Stand bringen. Wenn Sie sicher sind, dass die neue Zielinstanz zuverlässig ist, können Sie die Quellinstanz herunterfahren.

Bereinigen

In den folgenden Abschnitten wird erläutert, wie Sie zukünftige Gebühren für Ihr Google Cloud-Projekt und die Redis-Ressourcen, die Sie in dieser Bereitstellung verwendet haben, vermeiden können.

Projekt löschen

  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.

Redis Enterprise-Datenbank löschen

Informationen zum Löschen der Redis Enterprise-Datenbank finden Sie in der Redis-Dokumentation unter Datenbank löschen.

Nächste Schritte

Beitragende

Autoren:

Weitere Beitragende: