Estou usando o ElastiCache para Redis. Por que minhas solicitações de leitura do cliente Redis são sempre lidas ou redirecionadas para o nó primário de um fragmento?

3 minuto de leitura
0

Quero resolver as solicitações de leitura do cliente Redis que são redirecionadas para o nó primário de um fragmento em vez de um nó de réplica no Amazon ElastiCache para Redis.

Breve descrição

Qualquer nó em um cluster do ElastiCache para Redis pode receber consultas de clientes Redis. Quando um cliente envia uma consulta de leitura e gravação para um nó de réplica, o nó verifica se a solicitação é uma operação de chave única ou de várias chaves. A operação de chave única ou multichave deve pertencer ao mesmo slot de hash do fragmento. Por padrão, os nós de réplica com o modo de cluster ativado redirecionam todas as solicitações de leitura e gravação para o nó primário. As solicitações de leitura e gravação são redirecionadas para um nó primário autoritário do fragmento que pertence ao slot de hash da chave. Se o fragmento pertencer ao slot de hash e um comando readonly for iniciado primeiro, o nó de réplica somente concluirá a solicitação de leitura. O nó de réplica processa a solicitação de leitura somente se readonly for emitida primeiro pelo cliente. Se a solicitação readonly não for enviada primeiro, o nó de réplica redirecionará a solicitação para um nó primário.

Resolução

Para garantir que suas solicitações de leitura do cliente Redis sejam lidas pelo nó de réplica, conclua as seguintes etapas:

  1. Faça login no seu cluster e, em seguida, defina uma chave. Exemplo:

    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. Conecte-se a um nó de réplica. Certifique-se de emitir um comando readonly. Exemplo: Observação: o exemplo a seguir mostra um comando readonly que não é enviado primeiro e a solicitação é redirecionada para um nó primário.

    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>
    

    Observação: o erro MOVED mostrado no exemplo anterior ocorre quando o cliente do cluster do Redis não consegue lidar com solicitações de redirecionamento para o nó primário. Para obter mais informações sobre o erro MOVED, consulte MOVED redirection no site do Redis.

    Exemplo:
    Observação: o exemplo a seguir mostra um comando readonly que é enviado primeiro. Isso permite que o nó de réplica processe a solicitação e não redirecione a solicitação para um nó primário.

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

Observação: certifique-se de emitir o comando readonly quando o cliente se conectar a um nó pela primeira vez. O comando está ativo somente até que o cliente leia as chaves do mesmo nó. Se o cliente se conectar a outro nó de réplica no mesmo fragmento ou em um fragmento diferente, certifique-se de que um comando readonly seja emitido.

AWS OFICIAL
AWS OFICIALAtualizada há 8 meses