Verbindung zu einer Memorystore for Redis-Clusterinstanz herstellen

Auf dieser Seite wird erläutert, wie Sie eine Verbindung zu einer Memorystore for Redis-Clusterinstanz herstellen.

Kundensupport

Memorystore for Redis-Cluster stellt keine eigenen Clientbibliotheken bereit, sondern unterstützt vorhandene Clientbibliotheken von Drittanbietern, die das Redis-Protokoll unterstützen. Eine Beispielliste von Clients finden Sie auf der Redis-Seite Clients.

Best Practice für Redis-py-Client

Wenn Sie über den Python-Client redis-py eine Verbindung zu Ihrer Memorystore for Redis-Clusterinstanz herstellen möchten, müssen Sie beim Deklarieren eines Redis-Clusters skip_full_coverage_check=True hinzufügen:

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'))

Regionsübergreifender Zugriff

Sie können auf eine Memorystore for Redis-Clusterinstanz von einem Client aus zugreifen, der sich in einer anderen Region als der Memorystore-Instanz befindet.

Discovery-Endpunkt des Clusters ansehen

So rufen Sie den Discovery-Endpunkt Ihres Memorystore-Clusters auf:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Memorystore for Redis-Cluster auf.

    Memorystore für Redis-Cluster

  2. Klicken Sie auf Ihre Cluster-ID.

  3. Notieren Sie sich im Abschnitt Mit dieser Instanz verbinden die interne IP-Adresse und den Verbindungsport. Diese beiden Werte, die zusammen verwendet werden, sind der Erkennungsendpunkt Ihres Clusters.

gcloud

Führen Sie die describe-gcloud CLI aus, wie im Abschnitt Instanzdetails anzeigen beschrieben, um den Erkennungsendpunkt Ihres Clusters anzusehen.

Die Ausgabe sollte in etwa so aussehen:

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

Notieren Sie sich die Adresse und die Portnummer des Endpunkts, die im Abschnitt discovery_endpoints: aufgeführt sind. Diese beiden zusammen verwendeten Werte sind der Erkennungsendpunkt Ihres Clusters.

Verbindung von einer Compute Engine-VM mit redis-cli herstellen

Sie können eine Verbindung zur Memorystore for Redis-Clusterinstanz von jeder Compute Engine-VM aus herstellen, die das autorisierte Netzwerk der Memorystore-Instanz verwendet.

So stellen Sie eine Verbindung zur Instanz her:

  1. Wenn Sie noch keine Compute Engine-VM haben, die das autorisierte Netzwerk für Ihre Memorystore for Redis-Clusterinstanz verwendet, erstellen Sie eine und stellen Sie eine Verbindung zu ihr her. Folgen Sie dazu der Kurzanleitung zum Erstellen einer Linux-VM.

  2. redis-cli auf der Compute Engine-VM installieren Wenn Sie eine Linux-Debian-basierte VM erstellt haben, können Sie den folgenden Befehl über das Compute Engine-SSH-Terminal ausführen:

    sudo apt-get update
    sudo apt-get install redis
    
  3. Rufen Sie den Erkennungsendpunkt Ihres Clusters auf und notieren Sie ihn.

  4. Führen Sie im Memorystore for Redis-Clusterterminal den folgenden Befehl aus und ersetzen Sie die Variablen durch die entsprechenden Werte.

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    

    Wobei:

    • DISCOVERY_ENDPOINT_ADDRESS und PORT_NUMBER sind die Werte, die Sie im vorherigen Schritt notiert haben.
  5. Geben Sie nach der Verbindung einige Redis-Befehle ein:

    Geben Sie Folgendes ein:

    PING
    

    Ergebnis:

    PONG
    

    Eingeben

    SET HELLO WORLD
    

    Ergebnis:

    OK
    

    Geben Sie Folgendes ein:

    GET HELLO
    

    Auswirkungen:

    "WORLD"
    
  6. Nachdem Sie die Verbindung zur Redis-Instanz getestet haben, sollten Sie die Compute Engine-VM löschen, mit der Sie die Verbindung zur Redis-Instanz herstellen. So vermeiden Sie, dass Ihrem Cloud-Rechnungskonto Gebühren in Rechnung gestellt werden.

Sichere Verbindung zu einem Memorystore-Cluster über Stunnel und Telnet herstellen

Dieser Abschnitt enthält ein Beispiel für die Verbindung mit einer Memorystore for Redis-Clusterinstanz, für die die Verschlüsselung während der Übertragung mit Stunnel aktiviert ist.

  1. Wenn Sie noch keinen Memorystore-Cluster mit aktivierter Verschlüsselung während der Übertragung haben, erstellen Sie einen mit Instanz mit Verschlüsselung während der Übertragung erstellen.

  2. Wenn Sie noch keine Compute Engine-VM haben, die dasselbe autorisierte Netzwerk wie die Redis-Instanz aus dem vorherigen Schritt verwendet, erstellen Sie eine und stellen Sie eine Verbindung zu ihr her. Folgen Sie dazu der Kurzanleitung: Linux-VM verwenden.

    1. Installieren Sie die erforderlichen Tools für diesen Leitfaden:

      sudo apt-get install stunnel4
      
      sudo apt-get install telnet
      
  3. Konfigurieren Sie Ihre Compute Engine-VM für die Verwendung mit Stunnel:

    1. Erstellen Sie mit folgendem Befehl eine neue Datei, in die Sie Ihre Zertifizierungsstelle (CA, Certification Authority) einsetzen können:

      sudo vim /tmp/server_ca.pem
      
    2. Führen Sie den folgenden Befehl im Standardterminal aus, mit dem Sie die Google Cloud-Ressourcen verwalten (nicht das Compute Engine-Terminal), um die Zertifizierungsstellen Ihrer Redis-Instanz anzusehen:

      gcloud alpha redis clusters get-cluster-certificate-authority  --cluster-id=CLUSTER_ID
      
    3. Kopieren Sie alle sichtbaren Zertifizierungsstellen, einschließlich der Zeilen -----BEGIN CERTIFICATE----- und -----END CERTIFICATE-----, und fügen Sie die zuvor erstellte Datei server_ca.pem ein.

    4. Erstellen Sie eine neue Datei, in die Sie Stunnel-Konfigurationsinformationen einfügen möchten:

      sudo vim /etc/stunnel/redis-client.conf
      
    5. Fügen Sie den folgenden Text in die Datei ein. Ersetzen Sie dabei DISCOVERY_ENDPOINT_ADDRESS durch die IP-Adresse des privaten Dienstverbindungsendpunkts des Clusters:

      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
      

      Stunnel starten:

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

      Prüfen Sie, ob Stunnel ausgeführt wird:

      ps aux | grep stunnel
      
    6. Starten Sie Stunnel neu:

      sudo systemctl restart stunnel4
      
  4. Führen Sie den folgenden Befehl aus, um über Redis-CLI eine Verbindung zu Ihrer Redis-Instanz herzustellen:

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    
  5. Geben Sie nach der Verbindung einige Redis-Befehle ein:

    Geben Sie Folgendes ein:

    PING
    

    Auswirkungen:

    PONG