¿Cómo resuelvo las solicitudes de lectura de clientes de Redis que se redirigen al nodo principal de una partición en lugar de a un nodo de réplica en ElastiCache para Redis?

3 minutos de lectura
0

Quiero resolver las solicitudes de lectura de los clientes de Redis que se redirigen al nodo principal de una partición en lugar de a un nodo de réplica en Amazon ElastiCache para Redis.

Descripción breve

Cualquier nodo de un clúster de ElastiCache para Redis puede recibir consultas de los clientes de Redis. Cuando un cliente envía una consulta de lectura y escritura a un nodo de réplica, el nodo comprueba que la solicitud sea una operación de clave única o de varias claves. La operación de clave única o de varias claves debe pertenecer a la misma ranura de hash de la partición. De forma predeterminada, los nodos de réplica con el modo clúster activado redirigen todas las solicitudes de lectura y escritura al nodo principal. Las solicitudes de lectura y escritura se redirigen a un nodo principal autorizado de la partición que pertenece a la ranura de hash de la clave. Si la partición pertenece a la ranura de hash y primero se inicia un comando readonly, el nodo de réplica solo completa la solicitud de lectura. El nodo de réplica procesa la solicitud de lectura solo si el cliente emite primero readonly. Si la solicitud de readonly no se envía primero, el nodo de réplica redirige la solicitud a un nodo principal.

Resolución

Para asegurarse de que el nodo de réplica lea las solicitudes de lectura del cliente de Redis, siga estos pasos:

  1. Inicie sesión en el clúster y, a continuación, establezca una clave. Ejemplo:

    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. Conéctese a un nodo de réplica. Asegúrese de ejecutar un comando readonly. Ejemplo: Nota: En el siguiente ejemplo se muestra un comando readonly solo lectura que no se envía primero y la solicitud se redirige a un nodo principal.

    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>
    

    Nota: El error MOVED que se muestra en el ejemplo anterior se produce cuando el cliente del clúster de Redis no puede gestionar las solicitudes de redireccionamiento al nodo principal. Para obtener más información sobre el error MOVED, consulte MOVED redirection en el sitio web de Redis.

    Ejemplo:
    Nota: En el siguiente ejemplo se muestra un comando de readonly que se envía primero. Esto permite que el nodo de réplica procese la solicitud y no la redirija a un nodo 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>

Nota: Asegúrese de ejecutar el comando readonly cuando el cliente se conecte a un nodo por primera vez. El comando solo estará activo hasta que el cliente lea las claves del mismo nodo. Si el cliente se conecta a otro nodo de réplica en la misma partición o en una diferente, asegúrese de que se emita un comando readonly.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 8 meses