ELASTICACHE REDIS → STACKIT VALKEY · TUTORIAL
ElastiCache Redis zu STACKIT Valkey: ein durchgespieltes Beispiel
STACKIT Key Value Store ist Valkey, und der Bericht des Laufs zitiert das Valkey-Projekt mit der Aussage, es sei kompatibel mit Redis OSS 7.2 und älteren Versionen; bestehende Clients laufen im Regelfall also weiter. Was sich ändert, ist alles rund um die Engine: Zugriffskontrolle, Dimensionierung, Endpunkt und Zugangsdaten. Dieses Tutorial lässt StackToIT über eine kleine Session-Cache-Umgebung laufen und folgt dem Ergebnis bis zum Kopieren der Keys.
Die Eingabe: eine Redis-7.1-Gruppe mit zwei Nodes
Eine für diese Seite geschriebene Demo-Umgebung: eine Replication Group aus zwei Nodes cache.m6g.large mit automatischem Failover, Verschlüsselung bei der Übertragung und im Ruhezustand, AUTH-Token, sieben Tagen Snapshot-Aufbewahrung und einer Parameter Group mit LRU-Eviction. Links Parameter Group und Gruppe, wie sie in der Datei stehen. Rechts das Valkey-Terraform, das der Lauf geschrieben hat, ohne seine Review-Kommentare.
resource "aws_elasticache_parameter_group" "sessions" {
name = "sessions-redis7"
family = "redis7"
parameter {
name = "maxmemory-policy"
value = "allkeys-lru"
}
}
resource "aws_elasticache_replication_group" "sessions" {
replication_group_id = "sessions"
description = "Session store for the web tier"
engine = "redis"
engine_version = "7.1"
node_type = "cache.m6g.large"
num_cache_clusters = 2
automatic_failover_enabled = true
multi_az_enabled = true
port = 6379
subnet_group_name = aws_elasticache_subnet_group.sessions.name
security_group_ids = [aws_security_group.cache.id]
parameter_group_name = aws_elasticache_parameter_group.sessions.name
at_rest_encryption_enabled = true
transit_encryption_enabled = true
auth_token = var.cache_auth_token
snapshot_retention_limit = 7
snapshot_window = "02:00-03:00"
}resource "stackit_valkey_instance" "sessions" {
project_id = var.project_id
name = "sessions"
plan_name = var.sessions_plan_name
version = var.sessions_version
parameters = {
sgw_acl = join(",", var.sessions_allowed_cidrs)
}
}
resource "stackit_valkey_credential" "sessions" {
project_id = var.project_id
instance_id = stackit_valkey_instance.sessions.instance_id
}Was der Lauf meldet
Die Zusammenfassung für die Demo-Umgebung, ausgegeben von stacktoit assess . <Ausgabeordner> --offline --no-validate (console.txt; wegen --no-validate lief die OpenTofu-Prüfung der Quelle nicht). Sieben Ressourcen wurden gelesen. Fünf wurden Migrationseinheiten, alle RECONFIGURE; Subnet Group und Parameter Group gehen in die Cache-Einheit ein und brauchen keine eigene Ressource.
Source: input
Source files: 1
Resources scanned: 7
support resources: 2 (+0 Terraform helpers, out of scope; 2 + 0 = the 2 support nodes of summary.support.nodes in assessment.json)
Migration units: 5 (5 instances)
Unit dependencies: 6
Source checks: Built-in source checks found inputs the package does not hold — OpenTofu validation of the source was not run
Source inputs: missing required input ×1 (1 stops nothing) (summary.source_inputs)
Source completeness: VARIABLE_UNRESOLVED — 1 root variable(s) have no default and no value (cache_auth_token): what reads them is unknown until a run supplies them (-var-file, -var or TF_VAR_*; give a variable file with --var-file)
STACKIT mapping
────────────────────────────────────────────
DIRECT 0
RECONFIGURE 5 ██████████████████████████████ 100%
REPLATFORM 0
CONTAINERIZE 0
REDESIGN 0
MANUAL_REVIEW 0
BLOCKED 0 (the mapping class BLOCKED, not the execution blockers, which Migration readiness counts)Was der Entwurf übernimmt und was nicht
| ElastiCache-Einstellung | Im Valkey-Entwurf | Was Sie tun |
|---|---|---|
| engine redis, engine_version 7.1 | Valkey, Version über eine Variable; der Katalog bietet die Hauptversion 8 | Version wählen; der Wechsel von 7.1 ist ein Engine-Upgrade, der Bericht sagt das |
| node_type cache.m6g.large, zwei Nodes | Ein Plan-Name, standardmäßig ein Replica-Plan; der Plan bestimmt Nodes und Replikate | Die aus der Quelle abgeleitete Größe bestätigen; die Entscheidung bleibt offen, bis Sie antworten |
| Subnet Group, Security Group | Nicht übernommen: die Instanz hat kein Subnetz- oder Security-Group-Attribut | Client-CIDRs in die Variable der Zugriffsliste eintragen; sie hat keinen Standardwert |
| Port 6379 | Nicht übernommen: der Port kommt mit den Zugangsdaten | Clients auf Host und Port der Zugangsdaten umstellen |
| auth_token | Von STACKIT erzeugte Valkey-Zugangsdaten, als sensitiver Output bereitgestellt | Nach dem Apply auslesen und vor dem Cutover an jeden Client geben |
| Transit-Verschlüsselung an | TLS wird vom Dienst erzwungen | Prüfen, dass jeder Client-Treiber TLS nutzt (rediss:// oder TLS-Option) |
| Verschlüsselung im Ruhezustand an | Als unbekannt gemeldet: kein Attribut und keine Aussage zum Dienst gefunden | Bei STACKIT klären, bevor Sie sich für eine Anforderung darauf stützen |
| Parameter Group, maxmemory-policy | Nicht übersetzt; ausgewählte Einstellungen liegen unter den Instanz-Parametern | Die Einstellungen abbilden, die Ihre Anwendung braucht |
| snapshot_window 02:00-03:00, Aufbewahrung 7 | Nicht übernommen; die Snapshot-Zeit ist ein Parameter der Instanz | Snapshot-Zeitplan festlegen |
Der Plan zum Kopieren der Keys
Der Lauf schreibt neben das Terraform ein Runbook für den Datenumzug (terraform/handover/cache-sessions/data-move.md) und die Schritte in den Ausführungsplan. StackToIT überträgt keine Daten. Das sind die Schritte der einen Methode, die der Lauf offen hält: ein Kopieren durch einen Client, den Sie selbst betreiben.
Preflight
Lesende Prüfungen vom Umzugs-Host: Engine-Version, Key-Anzahl, Speicherverbrauch, ob SCAN, DUMP und PTTL mit den Zugangsdaten funktionieren, mit denen Sie kopieren, ob die Clients TLS nutzen. Der Service Key des Ziels ist kein Administrator; erwarten Sie also nicht, dass CONFIG, ACL oder MODULE funktionieren.
Probelauf
Eine Stichprobe in eine temporäre Instanz mit gleichem Plan und gleicher Version kopieren, Keys pro Sekunde und die von RESTORE abgelehnten Keys notieren, die Anwendungstests dagegen laufen lassen, die temporäre Instanz danach löschen.
Schreibstopp
Auflisten, wer schreibt, die Verbindungseinstellungen jedes Clients festhalten, die schreibenden Clients stoppen. Die Quelle bleibt unangetastet; der Rückweg braucht dort also nichts.
Abschlusskopie
Die Keys per SCAN durchlaufen, jeden mit DUMP und PTTL lesen und mit RESTORE samt verbleibender Lebensdauer (TTL) schreiben. Der Plan vermeidet KEYS und MIGRATE bewusst: Das Migrations-Tutorial von STACKIT leitet KEYS an MIGRATE weiter, und MIGRATE braucht eine direkte Verbindung von der Quelle zum Backend-Host des Ziels.
Abgleich und Aufräumen
Key-Anzahl und sortierte Key-Listen vergleichen, solange die schreibenden Clients gestoppt sind, einen echten Lesezugriff der Anwendung ausführen, GO oder NO-GO festhalten, danach den Umzugs-Host aus der Zugriffsliste nehmen und die Arbeitsdateien löschen.
Die Abgleichsprüfung im Wortlaut
Die erste Prüfung nach der Übertragung (key-counts). Der Client fragt das Passwort interaktiv ab; es erscheint daher nie auf der Kommandozeile. Ersetzen Sie die Platzhalter durch die Endpunkte Ihrer Quelle und der Zugangsdaten.
valkey-cli -h <source-host> -p <source-port> --tls --askpass DBSIZE
valkey-cli -h <source-host> -p <source-port> --tls --askpass INFO keyspace
valkey-cli -h <target-host> -p <target-port> --tls --sni <target-host> --user <target-user> --askpass DBSIZE
valkey-cli -h <target-host> -p <target-port> --tls --sni <target-host> --user <target-user> --askpass INFO keyspaceVier Wege für den Datenumzug und was der Plan zu jedem sagt
| Methode | Stand im Plan | Begründung |
|---|---|---|
| Export und Import mit den Engine-Clients | Kandidat, nicht gewählt | Braucht einen Schreibstopp so lang wie Kopie und Vergleich; der Plan hat RESTORE nicht gegen einen Key Value Store ausgeführt |
| Snapshot-Restore (ElastiCache-Export nach S3, in Valkey laden) | Vom Plan abgelehnt | AWS kann ein Backup als .rdb-Dateien in einen S3-Bucket exportieren, aber keine gelesene STACKIT-Seite und keine API beschreibt das Laden einer solchen Datei in einen Key Value Store |
| Online-Replikation aus der Quelle | Vom Plan abgelehnt | Keine gelesene STACKIT-Seite und keine API beschreibt, eine Instanz als Replikat eines externen Primärsystems anzuhängen; laut Plan bietet auch die Quellseite sie nicht an |
| Ein eigenes Werkzeug | In Kundenhand | Der Plan nennt keine Dauer und kein Fenster für den Schreibstopp; er behält die Schritte für Schreibstopp, Abgleich und Rückweg |
Was Sie vor dem Anwenden ändern
Vier Werte und Entscheidungen stehen im Demo-Lauf zwischen Entwurf und Apply.
Client-CIDRs
Die Variable der Zugriffsliste füllen. Ohne Liste gilt die Standardliste von STACKIT, die die Adressen aller STACKIT-Kunden zulässt.
Öffentlicher Endpunkt
Die Instanz hat einen eigenen Endpunkt außerhalb Ihres Projektnetzwerks. Der Entwurf akzeptiert einen öffentlichen Endpunkt, begrenzt durch die CIDR-Liste; planen Sie um, wenn Clients ihn nicht von außen erreichen dürfen.
Version und Plan
Valkey-Version setzen und den Plan-Namen bestätigen oder ändern. Einen Replica-Plan wählen, wenn die Quelle selbst ein Failover macht.
Darf der Cache leer starten?
Sagt der Anwendungsverantwortliche, dass sich die Keys neu aufbauen lassen, entfällt das Kopieren; beantworten Sie die Entscheidung zum Datenumzug dann mit einem eigenen Werkzeug.
Fragen aus den Teams
Brauchen unsere Redis-Clients Codeänderungen?
Meist nur Konfiguration: Host, Port, TLS und Zugangsdaten. STACKIT nennt den Key Value Store kompatibel zu bestehenden Redis-Setups; der Bericht beschränkt seine eigene Aussage auf Redis OSS 7.2 und älter, ohne Redis-Module oder spätere Funktionen.
Kann ich mein ElastiCache-Backup in Valkey einspielen?
AWS kann ein Backup als .rdb-Dateien nach S3 exportieren, doch der Plan lehnt die Methode ab, weil keine gelesene STACKIT-Dokumentation das Laden einer solchen Datei beschreibt. Ein selbst betriebener Valkey-Server kann eine RDB-Datei lesen; diese Variante schreibt der Plan nicht als Schritte.
Warum gibt es keine Netzwerkplatzierung der Instanz?
Die Valkey-Instanz hat kein Netzwerk-Attribut; der Entwurf kann sie also nicht in ein entworfenes Netzwerk setzen. Den Zugriff steuert die CIDR-Zugriffsliste, deshalb gibt es die Entscheidung zur Erreichbarkeit.
Was, wenn eine Session eine Stunde lang ruht?
Der Plan führt als Risiko auf, dass öffentlich erreichbare STACKIT-Datendienste eine ruhende Verbindung nach 60 Minuten trennen. Sorgen Sie dafür, dass sich der Kopier-Client neu verbindet.
Quellen
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.