Comment corriger les demandes de lecture des clients Redis qui sont redirigées vers le nœud primaire d'une partition plutôt que vers un nœud de réplication dans ElastiCache for Redis ?

Lecture de 3 minute(s)
0

Je souhaite corriger les demandes de lecture des clients Redis qui sont redirigées vers le nœud primaire d'une partition plutôt que vers un nœud de réplication dans Amazon ElastiCache for Redis.

Brève description

N'importe quel nœud d'un cluster ElastiCache for Redis peut recevoir des requêtes de la part des clients Redis. Lorsqu'un client envoie une requête de lecture et d'écriture à un nœud de réplication, celui-ci vérifie s'il s'agit d'une opération à clé unique ou à clés multiples. Cette opération à clé unique ou à clés multiples doit appartenir au même emplacement de hachage que la partition. Par défaut, les nœuds de réplication pour lesquels le mode cluster est activé redirigent toutes les demandes de lecture et d'écriture vers le nœud primaire. Les demandes de lecture et d'écriture sont redirigées vers un nœud primaire faisant autorité pour la partition qui appartient à l'emplacement de hachage de la clé. Si la partition appartient à l'emplacement de hachage et qu'une commande readonly est d’abord émise, le nœud de réplication se contente d’achever la demande de lecture. Le nœud de réplication traite la demande de lecture uniquement si la commande readonly est d'abord émise par le client. Si la demande readonly n'est pas émise en premier, le nœud de réplication redirigera la demande vers un nœud primaire.

Résolution

Pour vous assurer que les demandes de lecture de votre client Redis sont lues par le nœud de réplication, procédez comme suit :

  1. Connectez-vous à votre cluster, puis définissez une clé. Exemple :

    172.31.21.72:6379> set key8 "This is testing for readonly"
    -> Redirected to slot [13004] located at 172.31.21.72:6379
    OK
    172.31.21.72:6379>
  2. Connectez-vous à un nœud de réplication. Veillez à émettre une commande readonly. Exemple : Remarque : dans l'exemple suivant, la commandereadonly n'est pas émise en premier, auquel cas la demande est redirigée vers un nœud primaire.

    172.31.30.175:6379> info replication
     # Replication
     role:slave
     master_host:172.31.21.72
     master_port:6379
     master_link_status:up
     172.31.30.175:637> CLUSTER KEYSLOT key8
     (integer) 13004
     172.31.30.175:637> get key8
     (error) MOVED 13004 172.31.21.72:6379
     172.31.30.175:637> get key8
     -> Redirected to slot [13004] located at 172.31.21.72:6379
     "This is testing for readonly"
     172.31.21.72:6379>
    

    Remarque : l'erreur MOVED illustrée dans l'exemple précédent se produit lorsque le client du cluster Redis ne peut pas gérer les demandes de redirection vers le nœud primaire. Pour en savoir plus sur l'erreur MOVED, consultez la section MOVED redirection sur le site Web de Redis.

    Exemple :
    Remarque : dans l'exemple suivant, la commande readonly est émise en premier. Le nœud de réplication peut ainsi traiter la demande et celle-ci n’est pas redirigée vers un nœud principal.

    172.31.30.175:6379> readonly
    OK
    172.31.30.175:6379> get key8
    "This is testing for readonly"
    172.31.30.175:6379>

Remarque : vous devez émettre la commande readonly lorsque le client se connecte à un nœud pour la première fois. La commande n'est active que jusqu'au moment où le client lit les clés du même nœud. Si le client se connecte à un autre nœud de réplication dans la même partition ou dans une partition différente, veillez à émettre une commande readonly.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois