Auf dieser Seite wird beschrieben, wie die Architektur von Memorystore for Redis Cluster Hochverfügbarkeit (HA) unterstützt und bietet. Außerdem werden empfohlene Konfigurationen erläutert, die zu einer besseren Instanzleistung und ‑stabilität beitragen.
Weitere Informationen zu regionsspezifischen Aspekten finden Sie unter Geografie und Regionen.
Hochverfügbarkeit
Memorystore for Redis Cluster basiert auf einer hochverfügbaren Architektur, in der Ihre Clients direkt auf verwaltete Memorystore for Redis Cluster-VMs zugreifen. Ihre Clients stellen dazu eine Verbindung zu den einzelnen Shard-Netzwerkadressen her, wie unter Verbindung zu einer Memorystore for Redis-Clusterinstanz herstellen beschrieben.
Die direkte Verbindung zu Shards bietet folgende Vorteile:
Durch die direkte Verbindung wird ein Single Point of Failure vermieden, da jeder Shard so konzipiert ist, dass er unabhängig ausfällt. Wenn beispielsweise der Traffic von mehreren Clients einen Slot (Keyspace-Chunk) überlastet, wird der Einfluss eines Shard-Fehlers auf den Shard begrenzt, der für die Bereitstellung des Slots verantwortlich ist.
Durch die direkte Verbindung werden Zwischen-Hops vermieden, wodurch die Paketumlaufzeit (Clientlatenz) zwischen Ihrem Client und der Redis-VM minimiert wird.
Empfohlene Konfigurationen
Wir empfehlen, hochverfügbare Instanzen mit mehreren Zonen anstelle von Instanzen mit einer einzelnen Zone zu erstellen, da sie eine höhere Zuverlässigkeit bieten. Wenn Sie jedoch eine Instanz ohne Replikate bereitstellen möchten, empfehlen wir, eine Instanz mit einer einzelnen Zone auszuwählen. Weitere Informationen finden Sie unter Instanz mit einer einzelnen Zone auswählen, wenn Ihre Instanz keine Replikate verwendet.
Wenn Sie Hochverfügbarkeit für Ihre Instanz aktivieren möchten, müssen Sie für jeden Shard mindestens einen Replikatknoten bereitstellen. Sie können dies beim Erstellen der Instanz tun oder die Anzahl der Replikate auf mindestens 1 Replikat pro Shard skalieren. Replikate bieten automatisches Failover bei geplanter Wartung und unerwarteten Shard-Fehlern.
Sie sollten Ihren Client gemäß den Best Practices für Redis-Clients konfigurieren. Wenn Sie die empfohlenen Best Practices verwenden, kann Ihr OSS-Redis-Client die Rollen (automatische Failover) und Änderungen bei der Slotzuweisung (Knotenaustausch, horizontales Skalieren von Consumern) für Ihren Cluster automatisch und reibungslos ohne Ausfallzeiten verarbeiten.
Replikate
Eine hochverfügbare Memorystore for Redis Cluster-Instanz ist eine regionale Ressource. Das bedeutet, dass primäre VMs und Replikat-VMs von Shards auf mehrere Zonen verteilt werden, um vor Zonenausfällen zu schützen. Memorystore for Redis Cluster unterstützt Instanzen mit 0, 1 oder 2 Replikaten pro Knoten.
Mit Replikaten können Sie den Durchsatz von Lesevorgängen durch Skalieren von Lesevorgängen erhöhen.
Dazu müssen Sie mit dem Befehl READONLY
eine Verbindung herstellen, die es Ihrem Client ermöglicht, Daten von Replikaten zu lesen. Weitere Informationen zum Lesen von Replikaten finden Sie unter Mit Redis-Cluster skalieren.
Clusterform mit 0 Replikaten pro Knoten
Clusterform mit 1 Replikat pro Knoten
Clusterform mit 2 Replikaten pro Knoten
Automatische Ausfallsicherung
Automatische Failover innerhalb eines Shards können aufgrund von Wartungsarbeiten oder eines unerwarteten Fehlers des primären Knotens auftreten. Bei einem Failover wird ein Replikat zur primären Instanz hochgestuft. Sie können Replikate explizit konfigurieren. Der Dienst kann während der internen Wartung auch vorübergehend zusätzliche Replikate bereitstellen, um Ausfallzeiten zu vermeiden.
Automatische Failovers verhindern Datenverlust bei Wartungsupdates. Weitere Informationen zum Verhalten beim automatischen Failover während der Wartung finden Sie unter Verhalten beim automatischen Failover während der Wartung.
Dauer von Failover und Knotenreparatur
Automatische Failover können bei ungeplanten Ereignissen wie einem Prozessabsturz des primären Knotens oder einem Hardwarefehler mehrere zehn Sekunden dauern. Während dieser Zeit erkennt das System den Fehler und wählt ein Replikat als neue primäre Instanz aus.
Die Reparatur von Knoten kann einige Minuten dauern, bis der Dienst den ausgefallenen Knoten ersetzt. Dies gilt für alle primären Knoten und Replikatknoten. Bei Instanzen, die nicht hochverfügbar sind (keine Replikate bereitgestellt), dauert die Reparatur eines ausgefallenen primären Knotens ebenfalls einige Minuten.
Clientverhalten bei einem ungeplanten Failover
Clientverbindungen werden je nach Art des Fehlers wahrscheinlich zurückgesetzt. Nach der automatischen Wiederherstellung sollten Verbindungen mit exponentiellem Backoff wiederholt werden, um eine Überlastung der primären und Replikatknoten zu vermeiden.
Clients, die Replikate für den Lesedurchsatz verwenden, sollten sich auf eine vorübergehende Verringerung der Kapazität einstellen, bis der ausgefallene Knoten automatisch ersetzt wird.
Verlorene Schreibvorgänge
Bei einem Failover aufgrund eines unerwarteten Fehlers können bestätigte Schreibvorgänge aufgrund der asynchronen Natur des Replikationsprotokolls von Redis verloren gehen.
Clientanwendungen können den Redis-Befehl WAIT verwenden, um die Datensicherheit in der Praxis zu verbessern. Es handelt sich um einen Best-Effort-Ansatz, der mit Kompromissen verbunden ist, wie in der Dokumentation zum Redis-Befehl WAIT
beschrieben.
Auswirkungen eines einzelnen Zonenausfalls auf den Keyspace
In diesem Abschnitt wird beschrieben, welche Auswirkungen ein Ausfall einer einzelnen Zone auf eine Memorystore for Redis Cluster-Instanz hat.
Instanzen in mehreren Zonen
HA-Instanzen:Wenn es in einer Zone zu einem Ausfall kommt, ist der gesamte Keyspace für Lese- und Schreibvorgänge verfügbar. Da jedoch einige Lesereplikate nicht verfügbar sind, ist die Lesekapazität reduziert. Wir empfehlen dringend, die Clusterkapazität zu überdimensionieren, damit die Instanz im seltenen Fall eines Ausfalls einer einzelnen Zone über genügend Lesekapazität verfügt. Sobald der Ausfall behoben ist, werden die Replikate in der betroffenen Zone wiederhergestellt und die Lesekapazität des Clusters kehrt zum konfigurierten Wert zurück. Weitere Informationen finden Sie unter Muster für skalierbare und zuverlässige Anwendungen.
Nicht-HA-Instanzen (keine Replikate): Wenn es in einer Zone zu einem Ausfall kommt, werden die Daten des Teils des Schlüsselbereichs, der in der betroffenen Zone bereitgestellt wird, geleert. Während des Ausfalls ist dieser Teil des Schlüsselbereichs nicht für Schreib- oder Lesevorgänge verfügbar. Sobald der Ausfall behoben ist, werden die primären Instanzen in der betroffenen Zone wiederhergestellt und die Kapazität des Clusters kehrt zum konfigurierten Wert zurück.
Single-Zone-Instanzen
- Instanzen mit und ohne Hochverfügbarkeit:Wenn die Zone, in der die Instanz bereitgestellt wird, ausfällt, ist der Cluster nicht verfügbar und die Daten werden geleert. Wenn eine andere Zone ausfällt, verarbeitet der Cluster weiterhin Lese- und Schreibanfragen. Sobald der Ausfall behoben ist, wird die konfigurierte Kapazität des Clusters wiederhergestellt.
Best Practices
In diesem Abschnitt werden Best Practices für Hochverfügbarkeit und Replikate beschrieben.
Replikat hinzufügen
Zum Hinzufügen eines Replikats ist ein RDB-Snapshot erforderlich. Bei RDB-Snapshots wird ein Prozess-Fork und ein Copy-on-Write-Mechanismus verwendet, um einen Snapshot der Knotendaten zu erstellen. Je nach Muster der Schreibvorgänge für Knoten wächst der verwendete Speicher der Knoten, da die von den Schreibvorgängen betroffenen Seiten kopiert werden. Der Speicherbedarf kann bis zu doppelt so groß sein wie die Daten im Knoten.
Damit Knoten genügend Arbeitsspeicher für den Snapshot haben, sollte maxmemory
bei 80% der Knotenkapazität liegen, sodass 20% für den Overhead reserviert sind. Dieser zusätzliche Arbeitsspeicher hilft Ihnen zusammen mit der Überwachung von Snapshots, Ihre Arbeitslast so zu verwalten, dass Snapshots erfolgreich erstellt werden. Wenn Sie Replikate hinzufügen, sollten Sie außerdem den Schreibtraffic so weit wie möglich reduzieren. Weitere Informationen finden Sie unter Cluster mit hoher Schreiblast überwachen.