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.

Beispieleingabemain.tf
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"
}
STACKIT-Terraform von StackToITterraform/data.tf
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.

Lauf-Zusammenfassungconsole.txt
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-EinstellungIm Valkey-EntwurfWas Sie tun
engine redis, engine_version 7.1Valkey, Version über eine Variable; der Katalog bietet die Hauptversion 8Version wählen; der Wechsel von 7.1 ist ein Engine-Upgrade, der Bericht sagt das
node_type cache.m6g.large, zwei NodesEin Plan-Name, standardmäßig ein Replica-Plan; der Plan bestimmt Nodes und ReplikateDie aus der Quelle abgeleitete Größe bestätigen; die Entscheidung bleibt offen, bis Sie antworten
Subnet Group, Security GroupNicht übernommen: die Instanz hat kein Subnetz- oder Security-Group-AttributClient-CIDRs in die Variable der Zugriffsliste eintragen; sie hat keinen Standardwert
Port 6379Nicht übernommen: der Port kommt mit den ZugangsdatenClients auf Host und Port der Zugangsdaten umstellen
auth_tokenVon STACKIT erzeugte Valkey-Zugangsdaten, als sensitiver Output bereitgestelltNach dem Apply auslesen und vor dem Cutover an jeden Client geben
Transit-Verschlüsselung anTLS wird vom Dienst erzwungenPrüfen, dass jeder Client-Treiber TLS nutzt (rediss:// oder TLS-Option)
Verschlüsselung im Ruhezustand anAls unbekannt gemeldet: kein Attribut und keine Aussage zum Dienst gefundenBei STACKIT klären, bevor Sie sich für eine Anforderung darauf stützen
Parameter Group, maxmemory-policyNicht übersetzt; ausgewählte Einstellungen liegen unter den Instanz-ParameternDie Einstellungen abbilden, die Ihre Anwendung braucht
snapshot_window 02:00-03:00, Aufbewahrung 7Nicht übernommen; die Snapshot-Zeit ist ein Parameter der InstanzSnapshot-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.

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

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

  3. Schreibstopp

    Auflisten, wer schreibt, die Verbindungseinstellungen jedes Clients festhalten, die schreibenden Clients stoppen. Die Quelle bleibt unangetastet; der Rückweg braucht dort also nichts.

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

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

Prüfung aus dem Runbookterraform/handover/cache-sessions/data-move.md
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 keyspace

Vier Wege für den Datenumzug und was der Plan zu jedem sagt

MethodeStand im PlanBegründung
Export und Import mit den Engine-ClientsKandidat, nicht gewähltBraucht 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 abgelehntAWS 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 QuelleVom Plan abgelehntKeine 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 WerkzeugIn KundenhandDer 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.