Conectar-se a uma instância do Memorystore para Redis Cluster

Nesta página, explicamos como se conectar a uma instância do Memorystore for Redis Cluster.

Suporte ao cliente

O Memorystore for Redis Cluster não oferece bibliotecas de cliente próprias, mas tem suporte a bibliotecas de cliente de terceiros que oferecem suporte ao protocolo Redis. Para mais informações sobre as bibliotecas de cliente compatíveis com o Redis, consulte Clientes de conexão compatíveis.

Prática recomendada para clientes redis-py

Para se conectar à instância do Memorystore for Redis Cluster usando o cliente Python redis-py, adicione o skip_full_coverage_check=True ao declarar um cluster do Redis:

from rediscluster import RedisCluster
endpoints = [{"host": "IPADDRESS", "port": "6379"}]

rdb = RedisCluster(
    startup_nodes=endpoints,
    skip_full_coverage_check=True, # Required for Memorystore
    decode_responses = True)

print(rdb.set('PYTHON', 'CLUSTER'))
print(rdb.get('PYTHON'))
print(rdb.unlink('PYTHON'))

Permitir portas no firewall

Se você não permitir as portas corretas no firewall, o cluster poderá encontrar erros de conexão porque o firewall pode bloquear as portas que o Memorystore para cluster do Redis usa.

Para todos os endpoints do Private Service Connect do cluster, é necessário permitir a porta TCP 6379, bem como as portas TCP de 11000 a 13047. Para mais informações, consulte Resolver problemas.

Acesso entre regiões

É possível acessar uma instância do Memorystore for Redis Cluster de um cliente localizado em uma região diferente daquela em que a instância do Memorystore está localizada.

Ver o endpoint de descoberta do cluster

Cada cluster tem um endpoint de descoberta a que seu cliente se conecta. Esse endpoint é uma combinação de um endereço IP e um número de porta.

É possível conferir o endpoint de descoberta de um cluster no Memorystore for Redis Cluster usando o console do Google Cloud ou a CLI gcloud.

Console

  1. Acesse a página Memorystore for Redis Cluster no console Google Cloud .

    Memorystore for Redis Cluster

  2. Clique no ID do cluster.

  3. Na seção Conectar-se a esta instância, anote o endereço IP e o número da porta ao lado de Endpoint de descoberta. Esses dois valores usados juntos são o endpoint de descoberta do cluster.

gcloud

Para conferir o endpoint de descoberta do cluster, execute a CLI gcloud describe conforme explicado na seção conferir detalhes da instância.

A saída será semelhante a esta:

authorizationMode: AUTH_MODE_DISABLED
createTime: '2023-08-04T17:49:07.988918793Z'
discoveryEndpoints:
- address: 10.142.0.13
  port: 6379
  pscConfig:
  - network: projects/my-project-364018/global/networks/default
name: projects/my-project-364018/locations/us-east1/clusters/my-cluster-1
pscConnections:
- address: 10.142.0.13
  forwardingRule: https://www.googleapis.com/compute/v1/projects/my-project-364018/regions/us-east1/forwardingRules/sca-auto-fr-5bc46f69-ec80-4c5a-8971-ce267a4d8ddd
  network: projects/my-project-364018/global/networks/default
  projectId: my-project-364018
  pscConnectionId: '25734306048376845'
- address: 10.142.0.10
  forwardingRule: https://www.googleapis.com/compute/v1/projects/my-project-364018/regions/us-east1/.
  forwardingRules/sca-auto-fr-817b64c5-85ac-48d0-82e3-c6fa99b4e67d
  network: projects/my-project-364018/global/networks/default
  projectId: my-project-364018
  pscConnectionId: '25734306048376842'
replicaCount: 0
shardCount: 3
sizeGb: 39
state: ACTIVE
tier: PERFORMANCE
transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED
uid: cddda5de-d91f-449b-8755-3a665430271a

Anote o endereço do endpoint e o número da porta listados na seção discovery_endpoints:. Esses dois valores usados juntos são o endpoint de descoberta do cluster.

Conectar-se de uma VM do Compute Engine usando redis-cli

É possível se conectar à instância do Memorystore para Redis Cluster de qualquer VM do Compute Engine que use a rede autorizada da instância do Memorystore.

Para se conectar à instância:

  1. Se você ainda não tiver uma VM do Linux no Compute Engine que use a rede autorizada para sua instância do cluster do Memorystore para Redis, crie uma e conecte-se a ela seguindo o Guia de início rápido para criar uma VM do Linux.

  2. Instale a versão 6.0 ou mais recente do redis-cli na VM do Compute Engine seguindo as instruções em Instalar o Redis no Linux.

  3. Veja o endpoint de descoberta do seu cluster e anote-o.

  4. Execute o comando a seguir para se conectar ao endpoint de descoberta da instância:

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    

    Em que:

    • DISCOVERY_ENDPOINT_ADDRESS e PORT_NUMBER são os valores que você anotou na etapa anterior.
  5. Execute o comando CLUSTER SHARDS para conferir a topologia do cluster. Anote um dos endereços IP e números de porta do nó.

  6. Conecte-se ao nó desejado executando o seguinte comando:

    redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -c
    

    Substitua:

    • NODE_IP_ADDRESS é o endereço IP do nó que você encontrou na etapa anterior.
    • NODE_PORT é o número da porta do nó encontrado na etapa anterior.
  7. Depois de se conectar ao nó, insira alguns comandos do Redis:

    Insira o seguinte:

    PING
    

    Result:

    PONG
    

    Enter

    SET HELLO WORLD
    

    Result:

    OK
    

    Insira o seguinte:

    GET HELLO
    

    Resultado:

    "WORLD"
    
  8. Depois de testar a conexão com o nó do Redis, considere excluir a VM do Compute Engine usada para se conectar à instância do Redis. Isso ajuda a evitar cobranças na sua conta do Cloud Billing.

Conectar-se a uma instância com criptografia em trânsito ativada

Esta seção mostra um exemplo de como se conectar a uma instância do Memorystore for Redis Cluster com a criptografia em trânsito ativada.

  1. Se você ainda não tiver uma VM do Compute Engine que use a mesma rede autorizada da instância do Redis da etapa anterior, crie uma e se conecte a ela seguindo o Guia de início rápido sobre como usar uma VM do Linux.

    1. Instale a versão 6.0 ou mais recente do redis-cli na VM do Compute Engine seguindo as instruções em Instalar o Redis no Linux.
  2. Verifique o modo de autoridade certificadora (CA) que você está usando no cluster.

  3. Veja o endpoint de descoberta do cluster e anote o endereço IP e o número da porta do endpoint.

  4. Execute o comando a seguir para se conectar ao endpoint de descoberta da instância:

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c --tls --cacert /tmp/server_ca.pem
    

    Substitua:

    • DISCOVERY_ENDPOINT_ADDRESS: o endereço IP do endpoint de descoberta que você anotou na etapa anterior.
    • PORT_NUMBER: o número da porta que você anotou na etapa anterior.

    Para ativar o modo de suporte a cluster redis-cli, use a chave -c. Se você não fornecer essa opção, quando tentar acessar chaves de um fragmento diferente daquele a que está conectado, o cluster vai retornar um erro MOVED. No entanto, se você usar a chave, o cliente vai se reconectar automaticamente ao endereço fornecido na resposta de erro. Para mais informações, consulte Escalonabilidade do Redis: clustering, fragmentação e slots de hash.

    Se você ativar a autenticação do Identity and Access Management (IAM) ou a autenticação básica baseada em token no cluster, será necessário fornecer credenciais de autenticação junto com as flags do Transport Layer Security (TLS). Exemplo:

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c --tls --cacert /tmp/server_ca.pem --user USERNAME -a TOKEN
    

    Substitua:

    • USERNAME: o nome de usuário do cluster.
    • TOKEN: o token de autenticação

    Para mais informações sobre como gerar ou gerenciar suas credenciais de autenticação, consulte Gerenciar a autenticação do IAM e Proteger o acesso aos clusters usando a autenticação básica baseada em token.

  5. Execute o comando CLUSTER SHARDS para conferir a topologia do cluster. Anote o endereço IP e o número da porta de um dos nós.

  6. Conecte-se ao nó executando o seguinte comando:

    redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -c --tls --cacert /tmp/server_ca.pem
    

    Substitua:

    • NODE_IP_ADDRESS: o endereço IP do nó que você anotou na etapa anterior.
    • NODE_PORT: o número da porta do nó que você anotou na etapa anterior.

    Se o cluster usar o IAM ou a autenticação básica baseada em token, inclua as flags --user e -a, como fez na etapa do endpoint de descoberta.

  7. Depois de se conectar ao nó, insira alguns comandos do Redis:

    Insira o seguinte:

    PING
    

    Resultado:

    PONG