Connettersi a un'istanza di cluster Memorystore for Redis

Questa pagina spiega come connettersi a un'istanza di Memorystore for Redis Cluster.

Assistenza clienti

Il cluster Memorystore for Redis non dispone di librerie client proprie, ma supporta le librerie client di terze parti esistenti che supportano il protocollo Redis. Un elenco di esempio di client è disponibile nella pagina Clienti di Redis.

Best practice per il client Redis py

Per connetterti all'istanza Cluster Memorystore for Redis utilizzando il client Python redis-py, devi aggiungere skip_full_coverage_check=True quando dichiari un cluster 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'))

Accesso tra regioni diverse

Puoi accedere a un'istanza del cluster Memorystore for Redis da un client che si trova in una regione diversa da quella in cui si trova l'istanza di Memorystore.

Visualizza l'endpoint di rilevamento del tuo cluster

Per visualizzare l'endpoint di rilevamento del cluster Memorystore, segui queste istruzioni:

Console

  1. Vai alla pagina Memorystore for Redis Cluster nella console Google Cloud.

    Memorystore per cluster Redis

  2. Fai clic sull'ID cluster.

  3. Nella sezione Connetti a questa istanza, prendi nota delle informazioni relative a indirizzo IP interno e porta di connessione. Questi due valori usati insieme sono l'endpoint di rilevamento del tuo cluster.

gcloud

Per visualizzare l'endpoint di rilevamento del cluster, esegui l'interfaccia alla gcloud CLI di describe come spiegato nella sezione visualizza i dettagli dell'istanza.

L'output dovrebbe essere simile al seguente:

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

Prendi nota dell'indirizzo e del numero di porta dell'endpoint elencati nella sezione discovery_endpoints:. Questi due valori utilizzati insieme sono l'endpoint di rilevamento del tuo cluster.

Connettiti da una VM Compute Engine utilizzando redis-cli

Puoi connetterti all'istanza del cluster Memorystore for Redis da qualsiasi VM di Compute Engine che utilizza la rete autorizzata dell'istanza di Memorystore.

Per connetterti all'istanza:

  1. Se non hai ancora una VM di Compute Engine che utilizza la rete autorizzata per la tua istanza del cluster Memorystore for Redis, creane una e connettila seguendo Guida rapida per creare una VM Linux.

  2. Installa redis-cli sulla VM di Compute Engine. Se hai creato una VM basata su Linux Debian, puoi eseguire il seguente comando dal terminale SSH di Compute Engine:

    sudo apt-get update
    sudo apt-get install redis
    
  3. Visualizza l'endpoint di rilevamento del cluster e prendine nota.

  4. Esegui questo comando nel terminale cluster Memorystore for Redis, sostituendo le variabili con valori appropriati.

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    

    Dove:

    • DISCOVERY_ENDPOINT_ADDRESS e PORT_NUMBER sono i valori annotati nel passaggio precedente.
  5. Una volta stabilita la connessione, inserisci alcuni comandi Redis:

    Digita:

    PING
    

    Risultato:

    PONG
    

    Invio

    SET HELLO WORLD
    

    Risultato:

    OK
    

    Digita:

    GET HELLO
    

    Risultato:

    "WORLD"
    
  6. Al termine del test della connessione all'istanza Redis, devi valutare di eliminare la VM di Compute Engine utilizzata per la connessione all'istanza Redis. In questo modo eviterai che al tuo account di fatturazione Cloud vengano addebitati costi.

Connettiti in modo sicuro a un cluster Memorystore tramite Stunnel e telnet

Questa sezione fornisce un esempio di come connettersi a un'istanza del cluster Memorystore for Redis in cui è abilitata la crittografia dei dati in transito utilizzando Stunnel.

  1. Se non hai ancora un cluster Memorystore con la crittografia in transito abilitata, creane uno seguendo la procedura Crea un'istanza con crittografia in transito.

  2. Se non hai ancora una VM Compute Engine che utilizza la stessa rete autorizzata dell'istanza Redis del passaggio precedente, creane una e connettiti seguendo questa guida rapida all'utilizzo di una VM Linux.

    1. Installa gli strumenti necessari per questa guida:

      sudo apt-get install stunnel4
      
      sudo apt-get install telnet
      
  3. Configura la tua VM di Compute Engine da utilizzare con Stunnel:

    1. Crea un nuovo file in cui inserire l'autorità di certificazione (CA) eseguendo il seguente comando:

      sudo vim /tmp/server_ca.pem
      
    2. Visualizza le autorità di certificazione dell'istanza Redis eseguendo questo comando nel terminale standard che utilizzi per gestire le risorse Google Cloud (non il terminale Compute Engine):

      gcloud alpha redis clusters get-cluster-certificate-authority  --cluster-id=CLUSTER_ID
      
    3. Copia tutte le autorità di certificazione visibili, incluse la riga -----BEGIN CERTIFICATE----- e le righe -----END CERTIFICATE-----, quindi incolla e salva il file server_ca.pem creato in precedenza.

    4. Crea un nuovo file in cui inserire le informazioni di configurazione del tunnel:

      sudo vim /etc/stunnel/redis-client.conf
      
    5. Incolla il testo seguente nel file, sostituendo DISCOVERY_ENDPOINT_ADDRESS con l'indirizzo IP dell'endpoint di connessione privato del 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
      

      Avvia stunnel:

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

      Verifica che stunnel sia in esecuzione:

      ps aux | grep stunnel
      
    6. Riavvia Stunnel:

      sudo systemctl restart stunnel4
      
  4. Per connetterti all'istanza Redis utilizzando Redis, esegui il comando seguente:

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    
  5. Una volta stabilita la connessione, inserisci alcuni comandi Redis:

    Digita:

    PING
    

    Risultato:

    PONG