es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La caché en la memoria almacenada desde Cloud Run crea un error. No se puede crear una nueva clave de sesión. Es probable que la caché no esté disponible.

Tengo una aplicación implementada en Cloud Run. Se ejecuta detrás de un equilibrador de carga HTTPS. Quiero poder cachear algunos datos usando el servicio de memoria cache. Básicamente seguí la documentación para usar un conector de VPC sin servidor, pero sigue apareciendo esta excepción:

Unable to create a new session key. It is likely that the cache is unavailable.

Supongo que mi servicio Cloud Run no puede acceder a MemoryStore.

En Django tengo:

CACHES = {
“default”: {
“BACKEND”: “django_redis.cache.RedisCache”,
“LOCATION”: f”redis://{CHANNEL_REDIS_HOST}:{CHANNEL_REDIS_PORT}/16″,
“OPTIONS”: {
“CLIENT_CLASS”: “django_redis.client.DefaultClient”,
“IGNORE_EXCEPTIONS”: True,
},
“KEY_PREFIX”: “api”
}
}

donde CHANNELREDISHOST es la dirección IP del punto final principal de mi memoria caché y CHANNELREDISPORT es el puerto.

Cuando ejecuto el siguiente comando:

gcloud redis instances describe instance_name –region region –format “value(authorizedNetwork)”

devuelve projects/my_project/global/networks/default.

Luego, en la red VPC, hice clic en ‘default’ y luego en ‘AGREGAR SUBRED’. Creé mi subred con un rango de direcciones IP de 10.0.0.0/28. Tal vez el problema venga de este paso ya que no entiendo mucho acerca de toda esta comunicación de direcciones IP.

Cuando ejecuto este comando:

gcloud compute networks subnets describe my_subnet

objectivo es PRIVADO como se pretendía y la red es https://www.googleapis.com/compute/v1/projects/my_project/global/networks/default.

Por lo que creo que mi instancia de memoria caché y mi subred pueden conectarse.

Entonces, creé un conector de VPC sin servidor, usando la misma región, la red predeterminada y la subred que acabo de crear.

Finalmente, en mi servicio, configuré el conector de VPC con el que acabo de crear y lo volví a implementar usando Solo enruta solicitudes a IP privadas a través del conector de VPC, si elijo Enrutar todo el tráfico a través del conector de VPC, mi implementación falla, creo que probablemente porque estoy detrás de un equilibrador de carga, de cualquier manera, no quiero enrutar todo el tráfico a mi conector.

Y después de hacer esto, todavía recibo el error mencionado al principio del mensaje… ¿Alguna idea?

Gracias

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que has realizado muchos de los pasos necesarios para que tu servicio de Cloud Run acceda a Memorystore. Es posible que el problema esté relacionado con el conector VPC. ¿Has intentado crear un nuevo conector VPC y volver a implementar tu servicio con el nuevo conector? También es posible que el problema esté relacionado con el balanceador de carga. ¿Has intentado implementar tu servicio sin el balanceador de carga para ver si eso resuelve el problema? Si el problema persiste, puede ser útil comprobar los registros de tu servicio de Cloud Run para ver si hay errores adicionales que puedan proporcionar más información sobre el problema.

Comments are closed.