Ich möchte den Fehler READONLY beheben, den ich nach einem Failover in meinem selbst entworfenen Cluster von Amazon ElastiCache for Redis erhalte.
Kurzbeschreibung
Wenn der Primärknoten auf die Replikatknoten in Ihrem selbst entworfenen ElastiCache-Cluster ausfällt, wird der Replikatknoten zum Primärknoten. Dadurch können eingehende Anfragen bedient werden. Der Fehler READONLY tritt auf, wenn Sie in Ihrer Anwendung einen Knotenendpunkt anstelle des primären Endpunkts des Clusters verwenden. Dieser Fehler tritt auch auf, wenn das DNS-Caching in der Anwendung den Datenverkehr an den alten primären Knoten weiterleitet.
Behebung
Gehen Sie wie folgt vor, um den Fehler READONLY in Ihrem selbst entworfenen ElastiCache for Redis-Cluster zu beheben, bei dem der Clustermodus deaktiviert ist:
Vergewissern Sie sich, dass der Clustermodus ausgeschaltet ist
Öffnen Sie die ElastiCache-Konsole und wählen Sie dann Redis-Cluster aus. Vergewissern Sie sich, dass der Cluster-Modus für den Cluster ausgeschaltet ist. Weitere Informationen finden Sie unter Wie löse ich Redis-Client-Leseanforderungen auf, die in ElastiCache for Redis an den Primärknoten eines Shards statt an einen Replikatknoten umgeleitet werden?
Überprüfen des Endpunkts
Stellen Sie sicher, dass der primäre Endpunkt verwendet wird und nicht der Knotenendpunkt. Verwenden Sie eine der folgenden Methoden, um zu überprüfen, ob die Schreibbefehle an den primären Knoten gesendet werden:
redis-cli benutzen
-
Verwenden Sie redis-cli für den primären Endpunkt, um eine Verbindung zum Cluster herzustellen.
-
Stellen Sie eine Taste ein und lesen Sie dann die Taste.
Beispiel:
set key1 "hello"
OK
-
Vergewissern Sie sich, dass der Schlüssel richtig eingestellt wurde.
Beispiel:
get key1
"hello"
Überprüfen der DNS-Einstellung
Um DNS-Caching-Probleme zu vermeiden, aktivieren Sie die Wiederholungslogik in Ihrer Anwendung. Stellen Sie sicher, dass Sie die Richtlinien für die Redis-Clientbibliothek befolgen, die Sie verwenden.
Überprüfen eingehender Befehle
Verwenden Sie den Befehl MONITOR, um eingehende Befehle zu überprüfen. Weitere Informationen finden Sie unter MONITOR auf der Redis-Website. Um MONITOR einzuschalten, stellen Sie mit redis-cli eine Verbindung zum Cluster her. Der Befehl MONITOR listet alle eingehenden Befehle für den Clusterknoten auf.
Hinweis: Der Befehl MONITOR ist ein ressourcenintensiver Befehl und kann die Knotenleistung erheblich beeinträchtigen. Verwenden Sie diesen Befehl als letzte Option für die Problembehandlung.