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.
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:
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:
- Compute Engine-Kosten für die Ausführung von Redis OSS- und RIOT-Instanzen.
- Redis Enterprise Cloud-Kosten, die über den Google Cloud Marketplace verursacht werden.
- Netzwerkgebühren, die durch Datenmigrationstraffic zwischen Zonen und Regionen entstehen.
Hinweise
Führen Sie die folgenden Schritte aus, um eine Umgebung für die Migration einzurichten.
-
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.
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
-
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.
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.
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
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
Starten Sie in Cloud Shell die Redis-Befehlszeile:
redis-cli
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.
Starten Sie in Cloud Shell die Redis-Befehlszeile:
redis-cli
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
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.
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
JDK für RIOT installieren:
sudo apt install default-jre -y
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
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:
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.
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.
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.
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.
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.
Gehen Sie in der Redis-Konsole zu Abo und suchen Sie den Verbindungsstring der Redis Enterprise-Datenbank:
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.
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):
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
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
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
Starten Sie die Redis-Befehlszeile:
redis-cli -u redis://ENDPOINT_IP:ENDPOINT_PORT \ -a REDIS_ENTERPRISE_DB_PASSWORD
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"
Rufen Sie den Wert des Schlüssels „tennis“ ab:
get tennis
Die Ausgabe sieht so aus:
[return federer]
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:
- Melden Sie sich in Cloud Shell über eine SSH-Verbindung in der Redis OSS-VM an.
Starten Sie die Redis-Befehlszeile:
redis-cli
Fügen Sie neue Schlüssel/Wert-Paare hinzu:
Fügen Sie ein neues
runner bolt
-Paar hinzu:set runner bolt
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
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]
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:
- Sperren Sie den Schreibzugriff des Clients auf die Redis OSS-Quellinstanz mithilfe der Redis-Access Control List.
- 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.
- Migrieren Sie den Client in die Region der Redis Enterprise-Datenbankinstanz. Weitere Informationen finden Sie in der Dokumentation zu Ihrem Clienthost.
- 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.
- 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
- 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.
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
- Weitere Informationen zum Definieren des Umfangs Ihrer Migration zu Redis Enterprise Cloud
- Inhalte zur Datenmigration in Google Cloud lesen
- Eine ausführlichere Dokumentation und Best Practices finden Sie in der RIOT-Dokumentation.
- Weitere Referenzarchitekturen, Diagramme und Best Practices finden Sie im Cloud-Architekturcenter.
Beitragende
Autoren:
- Saurabh Kumar | ISV Partner Engineer
- Gilbert Lau | Principal Cloud Architect, Redis
Weitere Beitragende:
- Chris Mague | Customer Engineer, Datenverwaltung
- Gabe Weiss Developer Advocacy Manager
- Marco Ferrari | Cloud Solutions Architect