Comment puis-je résoudre l'erreur « READONLY You can't write against a read only replica » (vous ne pouvez pas écrire sur une replica en lecture seule) après le basculement de mon cluster Redis (mode cluster désactivé) ?

Dernière mise à jour: 17/06/2022

Pourquoi est-ce que je reçois l'erreur « READONLY You can't write against a read only replica » (réplica en lecture seule) dans mon cluster Amazon ElastiCache for Redis (mode cluster désactivé) après le basculement ?

Brève description

Si le nœud principal a basculé vers les nœuds de réplica de votre cluster Amazon ElastiCache, le réplica joue le rôle de nœud primaire pour traiter les demandes entrantes. Toutefois, dans les scénarios suivants, l'erreur READONLY s'affiche :

  • Vous utilisez un point de terminaison de nœud au lieu du point de terminaison principal du cluster dans votre application.

    -ou-

  • La mise en cache DNS dans le nœud de l'application achemine le trafic vers l'ancien nœud primaire.

Résolution

1.    Vérifiez que le mode cluster est désactivé. Pour ce faire :
Ouvrez la console ElastiCache, puis sélectionnez des clusters Redis. Vérifiez que le mode Cluster pour le cluster est désactivé.
Remarque : Si le mode Cluster est activé, consultez la section J'utilise ElastiCache ou Redis. Pourquoi les requêtes de lecture de mon client Redis effectuent toujours la lecture depuis le nœud primaire d'une partition ou sont redirigées vers le nœud primaire d'une partition ?

2.    Vérifiez que vous envoyez la commande d'écriture au point de terminaison principal plutôt qu'au point de terminaison du nœud. Pour vérifier que la commande d'écriture va vers le nœud primaire, effectuez l'une des opérations suivantes :
Option 1
Connectez-vous au cluster Redis à l'aide du redis-cli, puis exécutez la commande get key pour la clé mise à jour. Ensuite, vérifiez la sortie de la commande pour vérifier que la valeur de clé a été mise à jour après la dernière commande.
Par exemple, la commande suivante définit la valeur key1 sur hello :

set key1 "hello" 
OK

Pour vérifier que la clé est correctement définie, exécutez la commande get :

get key1
"hello"

Option 2

Connectez-vous au cluster Redis à l'aide du redis-cli, puis exécutez la commande MONITOR. Cela répertorie toutes les commandes arrivant au cluster. N'oubliez pas que l'exécution d'un seul client MONITOR peut réduire le débit de plus de 50 %.

3.    Pour éviter les problèmes de mise en cache DNS, activez la logique de nouvelle tentative dans votre application en suivant les directives relatives à la bibliothèque cliente Redis utilisée par votre application.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?