ElastiCache-Redis-Replikationsgruppen und Clustermodus
Erstellen Sie eine Redis-Replikationsgruppe zur Skalierung von Lesezugriffen und aktivieren Sie den Clustermodus, um Daten auf mehrere Node-Gruppen zu verteilen.
ElastiCache-Redis-Replikationsgruppen und Clustermodus ist eine kostenlose AWS Solutions Architect-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AWS Solutions Architect-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AWS Solutions Architect-Kurs umfasst insgesamt 4 Lektionen.
Überblick über Redis-Replikationsgruppen
Eine ElastiCache-Replikationsgruppe ist eine logische Gruppierung aus einem primären Redis-Knoten und bis zu fünf Lesereplikaten. Der primäre Knoten verarbeitet alle Schreibvorgänge; Replikate werden asynchron vom primären Knoten repliziert und bedienen den Leseverkehr. Replikationsgruppen ermöglichen zwei zentrale Funktionen: Skalierung der Leseleistung (Verteilung von Leseanforderungen auf mehrere Replikate) und hohe Verfügbarkeit mit automatischem Failover (Hochstufung eines Replikats zum primären Knoten, wenn der primäre Knoten ausfällt). Alle Knoten einer Replikationsgruppe verfügen über denselben Datensatz.
# Create a replication group with 1 primary and 2 read replicas
aws elasticache create-replication-group \
--replication-group-id web-cache \
--replication-group-description 'Web application cache' \
--num-cache-clusters 3 \
--cache-node-type cache.r7g.large \
--engine redis \
--engine-version '7.0' \
--automatic-failover-enabled \
--multi-az-enabled \
--cache-subnet-group-name my-multi-az-subnet-groupPrimärer Endpunkt vs. Reader-Endpunkt
ElastiCache stellt für eine Replikationsgruppe zwei DNS-Endpunkte bereit: Der primäre Endpunkt verweist immer auf den aktuellen primären Knoten (und wird bei einem Failover automatisch aktualisiert) – verwenden Sie ihn für alle Schreibvorgänge. Der Reader-Endpunkt verteilt Leseanforderungen per Load-Balancing auf alle verfügbaren Replikate – verwenden Sie ihn für Lesevorgänge, um die Last zu verteilen. Ihre Anwendung sollte zwei Verbindungspools verwalten: einen für Schreibvorgänge über den primären Endpunkt und einen für Lesevorgänge über den Reader-Endpunkt. Dies ist das empfohlene Verbindungsmuster für ElastiCache-Redis-Replikationsgruppen.
# Get primary and reader endpoints
aws elasticache describe-replication-groups \
--replication-group-id web-cache \
--query 'ReplicationGroups[].{
Primary:NodeGroups[].PrimaryEndpoint.Address,
Reader:ReaderEndpoint.Address
}'
# Application connection pattern:
# write_client = redis.Redis(host='primary-endpoint', port=6379)
# read_client = redis.Redis(host='reader-endpoint', port=6379)Ablauf des automatischen Failovers
Wenn der primäre Knoten ausfällt (von ElastiCache innerhalb weniger Sekunden über Zustandsprüfungen erkannt), wählt das automatische Failover eines der Lesereplikate aus und stuft es zum primären Knoten hoch. Der Vorgang läuft folgendermaßen ab: (1) Das ausgewählte Replikat wird zum primären Knoten hochgestuft, (2) der DNS-Eintrag des primären Endpunkts wird aktualisiert und verweist auf den neuen primären Knoten (TTL ca. 1 Sekunde), (3) der alte primäre Knoten wird durch ein neues Replikat ersetzt. Die gesamte Failover-Zeit beträgt in der Regel 30–60 Sekunden. Anwendungen, die den DNS-Namen des primären Endpunkts verwenden, verbinden sich automatisch neu, sobald die DNS-Änderung propagiert wurde – fest codierte IP-Adressen sind nicht erforderlich.
# Test failover manually (triggers primary failover)
aws elasticache test-failover \
--replication-group-id web-cache \
--node-group-id 0001
# Monitor failover events
aws elasticache describe-events \
--source-identifier web-cache \
--source-type replication-group \
--duration 60 \
--query 'Events[].{Time:Date,Message:Message}'Platzierung von Multi-AZ-Replikaten
Für maximale Ausfallsicherheit sollten Sie Replikate über mehrere Availability Zones verteilen. Wenn Sie Multi-AZ für eine Replikationsgruppe aktivieren, platziert ElastiCache den primären Knoten und die Replikate automatisch in unterschiedlichen AZs. Wenn eine gesamte AZ ausfällt, stuft das Failover ein Replikat aus einer weiterhin verfügbaren AZ hoch. Beim Erstellen der Replikationsgruppe können Sie außerdem die bevorzugten AZs für jeden Knoten mit der Option --preferred-cache-cluster-a-zs explizit angeben.
# Create replication group with explicit AZ placement
aws elasticache create-replication-group \
--replication-group-id ha-redis \
--replication-group-description 'Multi-AZ Redis' \
--num-cache-clusters 3 \
--cache-node-type cache.r7g.xlarge \
--engine redis \
--automatic-failover-enabled \
--multi-az-enabled \
--preferred-cache-cluster-a-zs us-east-1a us-east-1b us-east-1c \
--cache-subnet-group-name multi-az-subnetsWas ist der Redis-Cluster-Modus?
Redis Cluster Mode Enabled (CME) partitioniert den Datensatz über mehrere Knotengruppen (Shards), die jeweils einen primären Knoten und bis zu fünf Replikate enthalten. Dies ist die Lösung von Redis für horizontales Sharding. Mit dem Cluster-Modus können Sie die Speicherkapazität eines einzelnen Knotens überschreiten – Sie können bis zu 500 Knotengruppen mit jeweils 500 GB verwenden, sodass ein einzelner Redis-Cluster bis zu 500 × 500 GB = 250 TB an Daten aufnehmen kann. Der Cluster-Modus vervielfacht außerdem den Schreibdurchsatz, da jede Knotengruppe Schreibvorgänge für ihren Schlüsselbereich unabhängig verarbeitet.
# Create a Redis Cluster Mode Enabled replication group
# with 3 shards, each with 1 primary and 2 replicas
aws elasticache create-replication-group \
--replication-group-id clustered-redis \
--replication-group-description 'Cluster mode: 3 shards x 3 nodes' \
--num-node-groups 3 \
--replicas-per-node-group 2 \
--cache-node-type cache.r7g.large \
--engine redis \
--automatic-failover-enabled \
--multi-az-enabled \
--cache-subnet-group-name multi-az-subnetsHash-Slots und Schlüsselverteilung
Der Redis-Cluster-Modus teilt den Schlüsselbereich in 16.384 Hash-Slots auf. Jede Knotengruppe besitzt einen zusammenhängenden Bereich von Hash-Slots. Beim Schreiben eines Schlüssels berechnet Redis CRC16(key) % 16384, um den Hash-Slot und damit die zuständige Knotengruppe zu bestimmen. Ihre Anwendung muss einen Cluster-fähigen Redis-Client verwenden (z. B. redis-py-cluster oder Jedis im Cluster-Modus), der die Slot-Zuordnung kennt und jeden Befehl an den richtigen Knoten weiterleitet. Standardclients geben MOVED-Weiterleitungsfehler zurück, wenn sie einen Schlüssel an den falschen Shard senden.
# Python cluster-aware client example
# pip install redis[hiredis]
# from redis.cluster import RedisCluster
# cluster_client = RedisCluster(
# host='clustered-redis.abc123.clustercfg.use1.cache.amazonaws.com',
# port=6379,
# decode_responses=True
# )
# The client automatically resolves slot-to-node mapping
# cluster_client.set('user:1', 'Alice') # routes to correct shard
# cluster_client.get('user:1') # routes to correct shardCluster-Modus vs. Nicht-Cluster-Modus
Wählen Sie für das SAA-C03-Examen den Nicht-Cluster-Modus, wenn: Ihre Daten auf einen einzelnen Knoten passen (< 400 GB nach Abzug der Reserve), Sie eine einfache Konfiguration aus primärem Knoten und Replikaten benötigen oder Ihre Anwendung komplexe Operationen mit mehreren Schlüsseln verwendet (Transaktionen über mehrere Schlüssel hinweg erfordern, dass sich alle Schlüssel im selben Slot befinden). Wählen Sie den Cluster-Modus, wenn: Ihr Datensatz den Arbeitsspeicher eines einzelnen Knotens übersteigt, Sie eine horizontale Skalierung des Schreibdurchsatzes benötigen oder Sie ein künftiges Wachstum erwarten, das Online-Resharding erfordern wird. Der Cluster-Modus unterstützt das Hinzufügen von Shards ohne Ausfallzeit (Online-Resharding).
# Scale out a cluster-mode Redis by adding shards
aws elasticache modify-replication-group-shard-configuration \
--replication-group-id clustered-redis \
--node-group-count 5 \
--apply-immediately \
--resharding-configuration \
NodeGroupId=0004,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c \
NodeGroupId=0005,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c
# No downtime — slots are migrated incrementallyGlobal Datastore für regionsübergreifende Replikation
ElastiCache Global Datastore erweitert die Redis-Replikation über mehrere AWS-Regionen hinweg. Sie bestimmen eine Region als primären Cluster und fügen sekundäre Cluster in anderen Regionen hinzu. Schreibvorgänge werden an den primären Cluster gesendet; die sekundären Cluster erhalten eine asynchrone Replikation mit einer typischen Verzögerung von unter 1 Sekunde. Sekundäre Cluster können lokale Lesevorgänge mit sehr geringer Latenz bedienen. Global Datastore ermöglicht globale Anwendungen, bei denen Benutzer auf verschiedenen Kontinenten aus der nächstgelegenen Region lesen, sowie eine regionsübergreifende Disaster Recovery, bei der Sie einen sekundären Cluster zum primären Cluster heraufstufen können, wenn die primäre Region ausfällt.
# Create a Global Datastore (adds a secondary region to an existing cluster)
aws elasticache create-global-replication-group \
--global-replication-group-id-suffix my-global-cache \
--primary-replication-group-id prod-redis
# Add a secondary cluster in another region
aws elasticache create-replication-group \
--replication-group-id prod-redis-eu \
--replication-group-description 'EU secondary' \
--global-replication-group-id ldgnf-my-global-cache \
--region eu-west-1Redis Pub/Sub im großen Maßstab
In einer nicht geclusterten Redis-Replikationsgruppe werden Pub/Sub-Nachrichten an alle Replikate verteilt – jeder Subscriber auf jedem Knoten empfängt Nachrichten, die in einem Channel veröffentlicht werden. Im Cluster Mode ist Pub/Sub jedoch auf Keyspace-Benachrichtigungen beschränkt, und Channel-basiertes Pub/Sub funktioniert nur innerhalb eines einzelnen Shards, sofern Sie nicht Redis 7+ mit Pub/Sub-Sharding verwenden (SSUBSCRIBE / SPUBLISH für shard-bewusstes Pub/Sub). Dies ist eine wichtige Einschränkung bei der Konzeption von Pub/Sub im großen Maßstab mit dem Cluster Mode.
# Keyspace notification (fires when a key expires)
# Enable in parameter group: notify-keyspace-events Ex
# Subscriber in Python:
# pubsub = redis_client.pubsub()
# pubsub.psubscribe('__keyevent@0__:expired')
# for message in pubsub.listen():
# if message['type'] == 'pmessage':
# expired_key = message['data']
# print(f'Key expired: {expired_key}')Replikationsverzögerung überwachen
Überwachen Sie die CloudWatch-Metrik ReplicationLag auf Lesereplikaten, um sicherzustellen, dass diese mit dem primären Cluster Schritt halten. Eine Verzögerung von mehr als einigen Sekunden weist auf einen Engpass beim Replikat hin, beispielsweise einen überlasteten Knoten, Netzwerkprobleme oder mehr Schreibvorgänge, als das Replikat verarbeiten kann. Überwachen Sie in Global-Datastore-Szenarien GlobalDatastoreReplicationLag. Eine hohe Replikationsverzögerung bedeutet, dass Lesereplikate möglicherweise veraltete Daten zurückgeben – besonders wichtig für Anwendungen, die eine letztendliche Konsistenz innerhalb enger Grenzen erwarten.
# Monitor replication lag for all replicas
aws cloudwatch get-metric-statistics \
--namespace AWS/ElastiCache \
--metric-name ReplicationLag \
--dimensions Name=ReplicationGroupId,Value=web-cache \
--statistic Maximum \
--period 60 \
--start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ)
# Alert if ReplicationLag > 10 secondsReplikationsgruppen skalieren
Sie können vertikal skalieren (den Knotentyp ändern) oder horizontal skalieren (Replikate hinzufügen oder entfernen). Das Ändern des Knotentyps erfordert einen Aufruf von modify-replication-group und führt bei sofortiger Anwendung zu einem kurzen Failover – der primäre Knoten wird durch einen neuen Knoten des neuen Typs ersetzt. Das Hinzufügen von Replikaten ist online und ohne Ausfallzeit möglich. Wenn Sie vom nicht geclusterten Modus in den Cluster Mode wechseln, müssen Sie eine neue Gruppe im Cluster Mode erstellen und die Daten migrieren – eine direkte Konvertierung zwischen Cluster Mode und nicht geclustertem Modus ist nicht möglich.
# Scale up node type with maintenance window
aws elasticache modify-replication-group \
--replication-group-id web-cache \
--cache-node-type cache.r7g.xlarge \
--apply-immediately false
# Add a read replica
aws elasticache increase-replica-count \
--replication-group-id web-cache \
--new-replica-count 4 \
--apply-immediatelyKurztest
Testen Sie Ihr Verständnis der Konzepte aus dieser Lektion für AWS Solutions Architect (SAA-C03).
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: Replikationsgruppen ermöglichen die Skalierung von Lesevorgängen mithilfe von Replikaten sowie hohe Verfügbarkeit durch automatisches Failover mit primären und Reader-Endpunkten. Der Cluster Mode verteilt Daten mithilfe von 16.384 Hash-Slots auf bis zu 500 Knotengruppen und ermöglicht so horizontale Skalierung über den Speicher eines einzelnen Knotens hinaus. Global Datastore repliziert Daten über Regionen hinweg und ermöglicht weltweit Lesevorgänge mit niedriger Latenz sowie regionsübergreifende Disaster Recovery. Als Nächstes untersuchen wir Caching-Strategien: Lazy Loading und Write-Through.
Häufig gestellte Fragen
Ist die Lektion „ElastiCache-Redis-Replikationsgruppen und Clustermodus“ kostenlos?
Ja — der vollständige Text von „ElastiCache-Redis-Replikationsgruppen und Clustermodus“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AWS Solutions Architect-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AWS Solutions Architect-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „ElastiCache-Redis-Replikationsgruppen und Clustermodus“?
Erstellen Sie eine Redis-Replikationsgruppe zur Skalierung von Lesezugriffen und aktivieren Sie den Clustermodus, um Daten auf mehrere Node-Gruppen zu verteilen. Du übst AWS Solutions Architect mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AWS Solutions Architect zu starten?
Keine Vorkenntnisse erforderlich. AWS Solutions Architect auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „ElastiCache-Redis-Replikationsgruppen und Clustermodus“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AWS Solutions Architect-Lektion Code schreiben und ausführen?
Ja. Jede AWS Solutions Architect-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Redis im Vergleich zu Memcached: Die richtige Engine auswählen
- ElastiCache-Redis-Replikationsgruppen und Clustermodus
- Caching-Strategien: Lazy Loading und Write-Through
- Sitzungsspeicherung und Leaderboard-Muster