Wie behebe ich den Fehler „READONLY You can't write against a read only replica“ nach dem Failover meines Redis-Clusters (Clustermodus deaktiviert)?

Letzte Aktualisierung: 17.06.2022

Warum erhalte ich nach dem Failover den Fehler „READONLY You can't write against a read only replica“ in meinem Amazon ElastiCache für Redis (Clustermodus deaktiviert)-Cluster?

Kurzbeschreibung

Wenn der primäre Knoten auf die Replikatknoten in Ihrem Amazon-ElastiCache-Cluster ausgefallen ist, übernimmt das Replikat die Rolle des Primärknotens, um eingehende Anforderungen zu bedienen. In den folgenden Szenarien wird jedoch der READONLY-Fehler angezeigt:

  • Sie verwenden in Ihrer Anwendung einen Knoten-Endpunkt anstelle des primären Endpunkts des Clusters.

    -oder-

  • Das DNS-Caching im Anwendungsknoten leitet den Datenverkehr an den alten Primärknoten weiter.

Auflösung

1.    Stellen Sie sicher, dass der Cluster im Clustermodus deaktiviert ist. Gehen Sie dazu wie folgt vor:
Öffnen Sie die ElastiCache-Konsole und wählen Sie dann Redis-Cluster aus. Stellen Sie sicher, dass der Cluster-Modus für den Cluster ausgeschaltet ist.
Hinweis: Wenn der Cluster-Modus aktiviert ist, lesen Sie Ich verwende ElastiCache oder Redis. Warum werden meine Redis-Client-Leseanfragen immer vom Primärknoten eines Shards gelesen oder an diesen umgeleitet?

2.    Stellen Sie sicher, dass Sie den Schreibbefehl an den primären Endpunkt und nicht an den Knotenendpunkt senden. Führen Sie einen der folgenden Schritte aus, um zu überprüfen, ob der Schreibbefehl an den Primärknoten geht:
Option 1
Stellen Sie mithilfe der redis-cli eine Verbindung zum Redis-Cluster her und führen Sie dann den Befehl get key für den aktualisierten Schlüssel aus. Überprüfen Sie dann die Befehlsausgabe, um sicherzustellen, dass der Schlüsselwert nach dem letzten Befehl aktualisiert wurde.
Der folgende Befehl setzt zum Beispiel den Wert key1 auf hello:

set key1 "hello" 
OK

Führen Sie den Befehl get aus, um zu überprüfen, ob der Schlüssel richtig gesetzt ist:

get key1
"hello"

Option 2

Stellen Sie mithilfe von redis-cli eine Verbindung zum Redis-Cluster her und führen Sie dann den Befehl MONITOR aus. Dies listet alle Befehle auf, die an den Cluster gesendet werden. Denken Sie daran, dass die Ausführung eines einzelnen MONITOR-Clients den Durchsatz um mehr als 50 % reduzieren kann.

3.    Um DNS-Caching-Probleme zu vermeiden, aktivieren Sie die Wiederholungslogik in Ihrer Anwendung gemäß den Richtlinien für die Redis-Client-Bibliothek, die Ihre Anwendung verwendet.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?