HUAWEI CLOUD DCS → STACKIT VALKEY · TUTORIAL
Huawei DCS Redis zu STACKIT Valkey
Eine DCS-Instanz wird zu einer Key-Value-Store-Instanz auf Basis von Valkey. Die Daten ziehen nicht von selbst um, und die Kopiermethode, die STACKIT für Redis dokumentiert, nutzt einen Befehl, den DCS sperrt. Dieses Tutorial bewertet eine kleine DCS-Umgebung, zeigt, was StackToIT benennt und offenlässt, und führt durch Kopie und Vergleich, die Sie vor dem Cutover erproben.
Zwei DCS-Instanzen, bewertet
Eine kleine Huawei-Cloud-Umgebung, für diese Seite geschrieben und am 4. November 2026 von StackToIT bewertet: ein hochverfügbarer Session-Cache und ein Single-Node-Job-Cache. Links die beiden DCS-Blöcke der Eingabe, rechts das für den Session-Cache festgehaltene Ergebnis, ein Auszug aus assessment.json, die Werte so, wie der Lauf sie geschrieben hat.
resource "huaweicloud_dcs_instance" "sessions" {
name = "web-sessions"
engine = "Redis"
engine_version = "6.0"
capacity = 4
flavor = "redis.ha.xu1.large.r2.4"
availability_zones = ["eu-west-101a", "eu-west-101b"]
password = var.redis_password
vpc_id = huaweicloud_vpc.main.id
subnet_id = huaweicloud_vpc_subnet.data.id
backup_policy {
backup_type = "auto"
save_days = 3
backup_at = [1, 3, 5, 7]
begin_at = "02:00-04:00"
}
whitelists {
group_name = "app-servers"
ip_address = ["10.40.1.0/24"]
}
}
resource "huaweicloud_dcs_instance" "queue_cache" {
name = "job-cache"
engine = "Redis"
engine_version = "5.0"
capacity = 2
flavor = "redis.single.xu1.large.2"
availability_zones = ["eu-west-101a"]
password = var.redis_password
vpc_id = huaweicloud_vpc.main.id
subnet_id = huaweicloud_vpc_subnet.data.id
}{
"id": "huaweicloud_dcs_instance.sessions",
"result": {
"class": "RECONFIGURE",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT Key Value Store (Valkey)",
"resources": [
"stackit_valkey_instance",
"stackit_valkey_credential"
]
},
"reason": "A DCS instance becomes a Valkey instance. The application changes its endpoint and credentials; check the engine and version in use, since a Memcached instance needs a client change."
}
}Beide werden Valkey
Beide Instanzen sind RECONFIGURE mit Konfidenz MEDIUM und landen auf STACKIT Key Value Store (Valkey). Die Anwendung wechselt Endpunkt und Zugangsdaten; ob auch ein Client wechselt, hängt von Engine und Version ab.
Einstellungen benannt, nicht übernommen
Für den Session-Cache nennt der Lauf 15 Einstellungen für Ihr Plattformteam: engine, engine_version, capacity, flavor, die zwei Verfügbarkeitszonen, das Passwort, die Netzwerkverweise, vier backup_policy-Werte und die zwei Whitelist-Werte. Für den Job-Cache sind es neun.
Zuerst das Netzwerk
Der Lauf ordnet die Umgebung in drei Wellen: erst die VPC, dann das Subnetz, dann beide Caches. Legen Sie das STACKIT-Netzwerk vor den Valkey-Instanzen an.
Kein Terraform für diese Quelle
Für eine Huawei-Cloud-Quelle schreibt dieser Build keine STACKIT-Ressourcenblöcke. Die vier Einheiten sind manuelle Schritte mit Verantwortlichen: Network Architect und Data Architect.
Die Migration in sieben Schritten
Die Schritte 1 bis 4 bereiten das Ziel vor und kosten keine Ausfallzeit. Die Schritte 5 bis 7 sollten Sie proben.
1. Terraform bewerten
Führen Sie die Bewertung für den Ordner mit dem huaweicloud-Provider-Code aus. Sie liest nur Dateien und verbindet sich nie mit Ihrem Huawei-Cloud-Konto. Geben Sie die Variablendatei mit an: Fehlt einer sensiblen Variable der Wert, wird die Instanz als „fehlende Eingabe“ markiert.
2. Engine und Version bestätigen
engine und engine_version gehören zu den benannten Einstellungen. Im Beispiel sind es Redis 5.0 und 6.0. Der Lauf vermerkt, dass eine Memcached-Instanz einen Client-Wechsel bräuchte, denn Valkey ist kein Memcached.
3. Ziel anlegen
Legen Sie eine Key-Value-Store-Instanz in der STACKIT-Region an, die Sie in der Eingabedatei beantwortet haben (eu01 oder eu02), mit gleicher oder größerer Kapazität als die Quelle. STACKIT rät, erst nach den Konsistenzprüfungen darauf zu schreiben.
4. Zugangsdaten erzeugen
Key Value Store verlangt Benutzername und Passwort, und die Verbindungsstrings nutzen das Schema rediss://, also TLS. Jeder Client der alten Instanz bekommt einen neuen Verbindungsstring und, falls er nur ein Passwort kannte, einen Benutzernamen.
5. Kopiermethode wählen
Die Datei zum Datenumzug führt beide Caches mit Verfahren UNKNOWN und Status DECISION_REQUIRED. Größe, Änderungsrate, tolerierte Ausfallzeit und Wiederherstellungspunkt stehen nicht im Terraform; die liefern Sie. Der nächste Abschnitt zeigt, warum der dokumentierte Standard zu einer DCS-Quelle nicht passt.
6. Kopieren und vergleichen
Schreibende Clients trennen oder anhalten, kopieren, dann INFO KEYSPACE auf beiden Seiten vergleichen: keys und expires müssen übereinstimmen. Vergleichen Sie zusätzlich die sortierten Schlüsselnamen und den Speicherverbrauch mit Toleranz für den Overhead der Engine.
7. Umschalten, Quelle behalten
Richten Sie die Clients auf den neuen Endpunkt aus. Behalten Sie die DCS-Instanz und ihr letztes Backup, bis die Anwendung über ihre übliche Lastspitze auf Valkey gelaufen ist.
Was aus jeder DCS-Einstellung wird
Der Lauf benennt diese Einstellungen und überlässt Ihnen die Entscheidung. Die rechte Spalte gibt wieder, was die STACKIT-Dokumentation zur Zielseite sagt.
| DCS-Einstellung im Beispiel | Wert in der Eingabe | Was daraus auf Key Value Store wird |
|---|---|---|
| engine, engine_version | Redis 6.0 und Redis 5.0 | Eine Valkey-Instanz. STACKIT erklärt, dass Key Value Store das frühere Redis-Angebot ersetzt und mit bestehenden Redis-Setups funktioniert; testen Sie die Befehle Ihrer Anwendung. |
| capacity, flavor | 4 GB mit hochverfügbarem Flavor, 2 GB mit Single-Node-Flavor | Ein Plan, den Sie bei STACKIT wählen. Legen Sie das Ziel mit gleicher oder größerer Kapazität (RAM, Speicher, Knoten) wie die Quelle an. |
| availability_zones | Zwei Zonen beim Session-Cache, eine beim Job-Cache | Hochverfügbarkeit heißt bei Key Value Store: Replika-Sets mit mehreren Knoten und automatischem Failover. Ein einzelner Knoten hat kein Failover. |
| backup_policy | Automatisches Backup, drei Tage Aufbewahrung, vier Tage pro Woche | Wird nicht kopiert. Richten Sie das Backup auf der neuen Instanz neu ein und testen Sie vor dem Cutover eine Wiederherstellung. |
| whitelists | Gruppe app-servers mit 10.40.1.0/24 | Netzwerk-ACLs der neuen Instanz. Legen Sie die erlaubten Bereiche mit den Adressen des STACKIT-Netzwerks neu an. |
| password | Eine sensible Variable | Wird nicht übernommen. Die neue Instanz vergibt eigenen Benutzernamen und eigenes Passwort. |
| vpc_id, subnet_id | VPC und Subnetz der Umgebung | Ein STACKIT-Netzwerk, in den Wellen 1 und 2 vor den Caches angelegt. |
Die Werte stammen aus der Beispieleingabe. Plannamen und Preise bei STACKIT sind nicht Teil der Bewertung.
Ausführen und die offene Datenfrage lesen
Ein Befehl bewertet den Ordner. Die Datei zum Datenumzug führt danach beide Caches als zustandsbehaftete Einheiten ohne gewähltes Verfahren.
stacktoit assess . ../out --offline| Unit | Source service | Target service | Application | Mechanism | State | Data class | RPO | Downtime tolerance |
|---|---|---|---|---|---|---|---|---|
| huaweicloud_dcs_instance.queue_cache | huaweicloud_dcs_instance | STACKIT Key Value Store (Valkey) | | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED |
| huaweicloud_dcs_instance.sessions | huaweicloud_dcs_instance | STACKIT Key Value Store (Valkey) | | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED |Bewusst unbekannt
Die Datei hält fest, dass Datenmenge, Änderungsrate, tolerierte Ausfallzeit, Wiederherstellungspunkt und Datenklassifizierung nicht in der Quelle stehen. StackToIT überträgt nie Daten und rät diese Werte nicht.
Zuerst die Region
Die einzige Frage, die den Entwurf blockiert, ist die Zielregion. Die Eingabevorlage bietet eu01 und eu02; beantworten Sie sie, bevor Sie Kapazität planen.
Wo eine DCS-Quelle vom dokumentierten Weg abweicht
STACKIT dokumentiert eine Migration aus dem eigenen Redis-Angebot. Sie liest die Schlüssel der Quelle und sendet sie mit MIGRATE. Vier Tatsachen zu DCS ändern diesen Plan.
MIGRATE ist gesperrt
Huawei führt MIGRATE unter den gesperrten Befehlen von DCS Redis 6.0, für Single-Node-, Master/Standby- und Redis-Cluster-Instanzen und ebenso für Proxy Cluster, Read/Write Splitting und die Enterprise Edition. Auch die Liste für Redis 5.0 sperrt MIGRATE für Single-Node-, Master/Standby-, Proxy-Cluster-, Redis-Cluster- und Read/Write-Splitting-Instanzen; das gilt also auch für den Job-Cache mit 5.0. Die Pipe von STACKIT sendet MIGRATE über die Verbindung zur Quelle und funktioniert mit DCS als Quelle deshalb in dieser Form nicht.
SYNC und PSYNC sind ebenfalls gesperrt
Dieselben Huawei-Listen sperren SYNC und PSYNC für die Instanztypen von Redis 6.0 und 5.0. Ein Werkzeug, das sich als Replikat anhängt, kann eine solche Quelle nicht lesen; planen Sie eine Kopie Schlüssel für Schlüssel oder eine Backup-Datei.
Single-Node ohne Konsolen-Backup
Laut Huawei lassen sich die Daten von Single-Node-Instanzen nicht über die Konsole sichern. Im Beispiel betrifft das den Job-Cache, den Sie gesondert einplanen: Lesen Sie seine Schlüssel mit einem Client, nicht aus einer Backup-Datei.
Mehrere Datenbanken
Laut Huaweis Anleitung zum Backup-Import haben Proxy-Cluster- und Redis-Cluster-Instanzen standardmäßig nur DB0. Nutzt die Quellanwendung nummerierte Datenbanken, ordnen Sie sie vor dem Kopieren zu, denn der STACKIT-Befehl nimmt eine Datenbanknummer.
Nach dem Kopieren vergleichen
Diese Prüfungen stammen aus dem Migrations-Tutorial von STACKIT. Ersetzen Sie die Platzhalter durch die Verbindungsstrings und Zertifikatsdateien beider Seiten.
valkey-cli -u "[source-db-connection-string]" --tls --sni [source-frontend-hosts-fqdn] --cacert [/path/to/ca_cert.pem] INFO KEYSPACEvalkey-cli -u "[target-db-connection-string]" --tls --sni [target-frontend-hosts-fqdn] --cacert [/path/to/ca_cert.pem] INFO KEYSPACEWas übereinstimmen muss
Die Werte keys und expires beider Ausgaben. STACKIT vergleicht außerdem die sortierten Schlüssellisten mit diff und erwartet ein leeres Ergebnis.
Was darüber hinaus zu testen ist
Time-to-live-Werte, die Datentypen, die Ihr Code liest, und eine echte Client-Sitzung über TLS. Eine gleiche Schlüsselzahl zeigt nicht, dass sich die Anwendung gleich verhält.
Was Sie ändern, bevor Sie etwas anwenden
Eingabedatei beantworten
Übernehmen Sie target.region aus inputs-template.yaml in Ihre Eingabedatei, beantworten Sie die Anfrage und führen Sie die Bewertung mit --inputs erneut für denselben Ausgabeordner aus, wie es die Vorlage beschreibt. Lesen Sie danach Entwurf und Plan neu.
Datenfakten ergänzen
Geben Sie jeder Anwendung in der Anwendungsdatei Wiederherstellungspunkt und tolerierte Ausfallzeit mit, damit die Zeilen zum Datenumzug nicht mehr NOT_PROVIDED zeigen. Größe und Änderungsrate stehen nie im Terraform: Messen Sie sie an der Quelle und halten Sie sie im Kopierplan fest.
Provider festschreiben
Der Lauf warnt, dass keine Lock-Datei den huaweicloud-Provider festschreibt. Committen Sie .terraform.lock.hcl, damit die bewertete Version die belegte ist.
Verantwortliche für die Kopie benennen
Beide Cache-Einheiten sind der Rolle Data Architect zugeordnet. Benennen Sie, wer die Kopie ausführt und wer den Vergleich abzeichnet.
Fragen, die Teams zu DCS und Valkey stellen
Schreibt StackToIT das Valkey-Terraform für eine DCS-Instanz?
Für eine Huawei-Cloud-Quelle in diesem Build nicht. Der Lauf benennt die Zielressourcen, eine Valkey-Instanz und einen Zugang, und führt jeden Cache als manuellen Schritt. Der Terraform-Entwurf enthält nur Provider, Variablen und eine README.
Können wir den MIGRATE-Befehl aus dem STACKIT-Tutorial nutzen?
Mit DCS als Quelle nicht in der beschriebenen Form: Huawei führt MIGRATE für DCS Redis 6.0 und 5.0 als gesperrt. Das Tutorial liefert zudem das Python-Kopierskript copy_redis.py für Schlüsselnamen mit, an denen MIGRATE scheitert. Laut seinem veröffentlichten Code nutzt es kein MIGRATE: Es durchläuft die Quelle mit SCAN und kopiert Strings, Listen, Sets, Hashes und Sorted Sets samt TTL über gewöhnliche Lese- und Schreibbefehle, von denen Huawei für Redis 6.0 keinen als gesperrt führt. Andere Schlüsseltypen wie Streams kopiert es nicht, und seine Verbindungseinstellungen stehen standardmäßig auf TLS. Prüfen Sie beides an Ihrer DCS-Instanz und proben Sie an einer Kopie; gegen DCS haben wir es nicht ausgeführt.
Muss sich der Anwendungscode ändern?
Endpunkt und Zugangsdaten ändern sich sicher, und die Verbindung nutzt TLS mit Benutzername und Passwort. Ob Befehle identisch reagieren, testen Sie selbst: STACKIT beschreibt Key Value Store als lauffähig mit bestehenden Redis-Setups, sagt das aber nicht für jeden einzelnen Befehl zu.
Wie lange dauert das Kopieren?
Das weiß die Bewertung nicht: Größe und Änderungsrate stehen nicht im Terraform. STACKIT nennt für die eigene MIGRATE-Kopie rund 50 Sekunden pro Gigabyte und sagt, dass der Wert mit Latenz und Datenstruktur schwankt. Messen Sie an Ihren Daten.
Verbindet sich StackToIT mit unserem Huawei-Cloud-Konto?
Nein. Es liest die Terraform- und OpenTofu-Dateien und sonst nichts.
Quellen
- STACKIT Key Value Store
- STACKIT: Daten von Redis in eine Key-Value-Store-Instanz migrieren
- STACKIT Key Value Store: Release Notes
- Huawei Cloud: Von DCS für Redis 6.0 unterstützte und gesperrte Befehle
- Huawei Cloud: DCS-Backup-Daten exportieren
- Huawei Cloud: Migration von selbst betriebenem Redis mit Backup-Dateien
- Huawei Cloud: Von DCS für Redis 5.0 unterstützte und gesperrte Befehle
Ihr nächster Schritt: STACKIT.
Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.