Come posso risolvere l'errore "READONLY Non è possibile scrivere su una replica di sola lettura" dopo il failover del mio cluster Redis (modalità cluster disabilitata)?

Ultimo aggiornamento: 17/06/2022

Perché ricevo l'errore "READONLY Non è possibile scrivere su una replica di sola lettura" nel mio cluster Amazon ElastiCache per Redis (modalità cluster disabilitata) dopo il failover?

Breve descrizione

Se il nodo primario esegue il failover sui nodi di replica nel cluster Amazon ElastiCache, la replica assume il ruolo di nodo primario per soddisfare le richieste in arrivo. Tuttavia, nei seguenti scenari viene visualizzato l'errore READONLY:

  • Nella tua applicazione utilizzi un endpoint del nodo anziché un endpoint primario del cluster.

    -oppure-

  • La memorizzazione nella cache DNS nel nodo dell'applicazione instrada il traffico verso il vecchio nodo primario.

Risoluzione

1.    Verifica che la modalità cluster sia disattivata. Per fare questo:
Apri la console ElastiCache, quindi seleziona Cluster Redis. Verifica che la Modalità cluster per il cluster sia disattivata.
Nota: se la Modalità cluster è attiva, consulta Utilizzo di ElastiCache o Redis. Perché le richieste di lettura del mio client Redis vengono sempre lette o reindirizzate al nodo primario di una partizione?

2.    Verifica di inviare il comando di scrittura all'endpoint primario anziché all'endpoint del nodo. Per verificare che il comando di scrittura vada al nodo primario, completa una delle seguenti operazioni:
Opzione 1
Connettiti al cluster Redis utilizzando redis-cli e quindi esegui il comando get key per la chiave aggiornata. Quindi, verifica l'output del comando per verificare che il valore della chiave sia stato aggiornato dopo l'ultimo comando.
Ad esempio, il comando seguente imposta il valore key1 su hello:

set key1 "hello" 
OK

Per verificare che la chiave sia stata impostata correttamente, emetti il comando get:

get key1
"hello"

Opzione 2

Connettiti al cluster Redis usando redis-cli e quindi esegui il comando MONITOR. In questo modo verranno elencati tutti i comandi che arrivano al cluster. Tieni presente che l'esecuzione di un singolo client MONITOR potrebbe ridurre il throughput di oltre il 50%.

3.    Per evitare problemi di memorizzazione nella cache DNS, attiva la logica dei nuovi tentativi nell'applicazione seguendo le linee guida per la libreria client Redis utilizzata dall'applicazione.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?