En esta página, se explica cómo conectarse a una instancia de clústeres de Memorystore para Redis.
Asistencia al cliente
El clúster de Memorystore para Redis no proporciona sus propias bibliotecas cliente, sino que es compatible con las bibliotecas cliente de terceros existentes que admiten el protocolo Redis. Puedes encontrar una lista de clientes de ejemplo en la página Clientes de Redis.
Prácticas recomendadas para clientes de Redis-py
Si quieres conectarte a tu instancia de clúster de Memorystore para Redis con el cliente de Python redis-py, debes agregar el skip_full_coverage_check=True
cuando declares un clúster de 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'))
Acceso entre regiones
Puedes acceder a una instancia de clústeres de Memorystore para Redis desde un cliente ubicado en una región diferente de la ubicación de la instancia de Memorystore.
Consulta el extremo de descubrimiento de tu clúster
Para ver el extremo de descubrimiento del clúster de Memorystore, sigue estas instrucciones:
Consola
Ve a la página Clúster de Memorystore para Redis en Google Cloud Console.
Haz clic en tu ID del clúster.
En la sección Conectarse a esta instancia, anota la dirección IP interna y el puerto de conexión. Estos dos valores que se usan juntos son el extremo de descubrimiento de tu clúster.
gcloud
Para ver el extremo de descubrimiento de tu clúster, ejecuta la
gcloud CLI
describe
como se explica en la sección de detalles de la instancia.
El resultado debería ser similar al siguiente ejemplo:
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
Toma nota de la dirección del extremo y el número de puerto que se indican en la sección discovery_endpoints:
. Estos dos valores que se usan juntos son el extremo de descubrimiento de tu clúster.
Conéctate desde una VM de Compute Engine con redis-cli
Puedes conectarte a la instancia del clúster de Memorystore para Redis desde cualquier VM de Compute Engine que use la red autorizada de la instancia de Memorystore.
Para conectarte a la instancia, sigue estos pasos:
Si aún no tienes una VM de Compute Engine que use la red autorizada para tu instancia de clúster de Memorystore para Redis, crea una y conéctate a ella siguiendo la Guía de inicio rápido para crear una VM de Linux.
Instala
redis-cli
en la VM de Compute Engine. Si creaste una VM basada en Debian de Linux, puedes ejecutar el siguiente comando desde la terminal SSH de Compute Engine:sudo apt-get update sudo apt-get install redis
Visualiza el extremo de descubrimiento de tu clúster y anótalo.
Ejecuta el siguiente comando en la terminal del clúster de Memorystore para Redis y reemplaza las variables por valores apropiados.
redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
Aquí:
- DISCOVERY_ENDPOINT_ADDRESS y PORT_NUMBER son los valores que anotaste en el paso anterior.
Una vez conectado, ingresa algunos comandos de Redis:
Ingrese:
PING
Resultado:
PONG
Ingresa:
SET HELLO WORLD
Resultado:
OK
Ingresa:
GET HELLO
Resultado:
"WORLD"
Una vez que termines de probar tu conexión a la instancia de Redis, debes considerar borrar la VM de Compute Engine que usaste para conectarte a la instancia de Redis. Esto te ayuda a evitar que se apliquen cargos a tu cuenta de Facturación de Cloud.
Conéctese a un clúster de Memorystore de forma segura mediante Stunnel y Telnet
En esta sección, se proporciona un ejemplo de cómo conectarse a una instancia de clúster de Memorystore para Redis que tiene habilitada la encriptación en tránsito mediante Stunnel.
Si aún no tienes un clúster de Memorystore con la encriptación en tránsito habilitada, sigue los pasos que se indican en Crea una instancia con encriptación en tránsito para crear uno.
Si aún no tienes una VM de Compute Engine que use la misma red autorizada que la instancia de Redis del paso anterior, crea una y conéctate a ella siguiendo la Guía de inicio rápido para usar una VM de Linux.
Instala las herramientas necesarias para esta guía:
sudo apt-get install stunnel4
sudo apt-get install telnet
Configura tu VM de Compute Engine para usarla con Stunnel:
Crea un archivo nuevo para colocar la autoridad certificada (CA) mediante la ejecución del siguiente comando:
sudo vim /tmp/server_ca.pem
Para ver las autoridades certificadoras de tu instancia de Redis, ejecuta el siguiente comando en la terminal estándar que usas para administrar los recursos de Google Cloud (no la terminal de Compute Engine):
gcloud alpha redis clusters get-cluster-certificate-authority --cluster-id=CLUSTER_ID
Copia todas las autoridades certificadas visibles, incluidas la línea
-----BEGIN CERTIFICATE-----
y las líneas-----END CERTIFICATE-----
, y pega y guarda el contenido en el archivoserver_ca.pem
que creaste antes.Cree un nuevo archivo en el que colocará la información de configuración de Stunnel:
sudo vim /etc/stunnel/redis-client.conf
Pega el siguiente texto en el archivo y reemplaza DISCOVERY_ENDPOINT_ADDRESS por la dirección IP de extremo de conexión del servicio privado de tu clúster:
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
Inicia el túnel:
sudo stunnel /etc/stunnel/redis-client.conf
Verifica que stunnel esté en ejecución:
ps aux | grep stunnel
Reinicia Stunnel:
sudo systemctl restart stunnel4
Para conectarte a tu instancia de Redis con Redis-CLI, ejecuta el siguiente comando:
redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
Una vez conectado, ingresa algunos comandos de Redis:
Ingrese:
PING
Resultado:
PONG