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

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

Suporte ao cliente

O cluster do Memorystore para Redis não fornece bibliotecas próprias de cliente, mas oferece suporte a bibliotecas de cliente atuais de terceiros compatíveis com o protocolo Redis. Uma lista de exemplo de clientes pode ser encontrada na página Clientes do Redis.

Práticas recomendadas para clientes Redis

Para se conectar à sua instância do Cluster do Memorystore para Redis 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'))

Acesso entre regiões

É possível acessar uma instância de cluster do Memorystore para Redis a partir 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

Para ver o endpoint de descoberta do cluster do Memorystore, use as seguintes instruções:

Console

  1. Acesse a página Cluster do Memorystore para Redis no Console do Google Cloud.

    Cluster do Memorystore para Redis

  2. Clique no ID do cluster.

  3. Na seção Conectar-se a esta instância, anote o Endereço IP interno e a Porta de conexão. Esses dois valores usados juntos são o endpoint de descoberta do cluster.

gcloud

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

A saída será semelhante a esta:

createTime: '2023-05-30T19:47:37.850985390Z'
discoveryEndpoints:
- address: 10.142.0.10
  port: 6379
  pscConfig:
     network: projects/my-project-364018/global/networks/default
     projectId: my-project-364018
name: projects/my-project-364018/locations/us-east1/clusters/my-cluster-1
replicaCount: 0
shardCount: 3
sizeGb: 39
state: ACTIVE
transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED
uid: 87b47146-217d-472e-96e5-13962c0e8706

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 a partir de uma VM do Compute Engine usando redis-cli

É possível se conectar à instância do Cluster do Memorystore para Redis a partir 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 Compute Engine que use a rede autorizada para sua instância de 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 redis-cli na VM do Compute Engine. Se você criou uma VM baseada em Debian do Linux, poderá executar o seguinte comando no terminal SSH do Compute Engine:

    sudo apt-get update
    sudo apt-get install redis
    
  3. Visualize o endpoint de descoberta do cluster e anote-o.

  4. Execute o comando a seguir no terminal do cluster do Memorystore para Redis, substituindo as variáveis pelos valores apropriados.

    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. Depois de se conectar, digite alguns comandos do Redis:

    Insira o seguinte:

    PING
    

    Result:

    PONG
    

    Enter

    SET HELLO WORLD
    

    Result:

    OK
    

    Insira o seguinte:

    GET HELLO
    

    Resultado:

    "WORLD"
    
  6. Quando terminar de testar a conexão com a instância do Redis, exclua 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.

Conecte-se com segurança a um cluster do Memorystore usando stunnel e telnet

Nesta seção, fornecemos um exemplo de como se conectar a uma instância de cluster do Memorystore para Redis que tem a criptografia em trânsito ativada usando stunnel.

  1. Se você ainda não tiver um cluster do Memorystore com a criptografia em trânsito ativada, crie um seguindo Criar uma instância com criptografia em trânsito.

  2. Se você ainda não tiver uma VM do Compute Engine que use a mesma rede autorizada que a 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 as ferramentas necessárias para este guia:

      sudo apt-get install stunnel4
      
      sudo apt-get install telnet
      
  3. Configure a VM do Compute Engine para uso com o stunnel:

    1. Crie um novo arquivo para colocar a Autoridade de certificação (CA, na sigla em inglês) executando o seguinte comando:

      sudo vim /tmp/server_ca.pem
      
    2. Visualize as autoridades de certificação da instância do Redis executando o comando a seguir no terminal padrão usado para gerenciar os recursos do Google Cloud (não o terminal do Compute Engine):

      gcloud alpha redis clusters get-cluster-certificate-authority  --cluster-id=CLUSTER_ID
      
    3. Copie todas as autoridades de certificação visíveis, incluindo a linha -----BEGIN CERTIFICATE----- e as linhas -----END CERTIFICATE-----, e cole e salve o arquivo server_ca.pem criado anteriormente.

    4. Crie um novo arquivo para colocar as informações de configuração do stunnel:

      sudo vim /etc/stunnel/redis-client.conf
      
    5. Cole o texto a seguir no arquivo, substituindo DISCOVERY_ENDPOINT_ADDRESS pelo endereço IP do endpoint de conexão de serviço particular do cluster:

      output=/tmp/stunnel.log
      CAfile=/tmp/server_ca.pem
      client=yes
      pid=/var/run/stunnel.pid
      verifyChain=yes
      sslVersion=TLSv1.2
      [redis]
      accept=127.0.0.1:6379
      connect=DISCOVERY_ENDPOINT_ADDRESS:PORT_NUMBER
      

      Iniciar stunnel:

      sudo stunnel /etc/stunnel/redis-client.conf
      

      Verifique se o stunnel é executado:

      ps aux | grep stunnel
      
    6. Reinicie o stunnel:

      sudo systemctl restart stunnel4
      
  4. Para se conectar à sua instância do Redis usando o Redis, execute o seguinte comando:

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    
  5. Depois de se conectar, digite alguns comandos do Redis:

    Insira o seguinte:

    PING
    

    Resultado:

    PONG