En esta página, se explican varios problemas, los mensajes de error para esos problemas y los pasos para solucionarlos.
Problemas de conectividad
Si tu instancia de Memorystore para Redis experimenta problemas de conectividad, consulta los problemas de esta sección para ver si alguno de ellos es la causa del problema.
Si un problema de esta sección no coincide con el tuyo, ejecuta Telnet en uno de tus nodos de Redis y ejecuta algunos comandos de Redis para ver si la instancia responde.
Si el nodo no responde, verifica si alguno de los problemas de redes es la razón por la que se bloquea la conexión de red de tu nodo. Si ninguno de estos problemas resuelve el problema, comunícate con Atención al cliente de Cloud.
Aprovisionas recursos en diferentes redes de VPC
Para conectarte a una instancia de Memorystore para Redis desde un Google Cloud recurso, como una VM de Compute Engine, debes aprovisionar los recursos en la misma red de VPC autorizada que la instancia.
Si intentas ejecutar Telnet en una instancia desde un recurso que se encuentra en una región o red de VPC diferente, se muestra el siguiente mensaje de error:
telnet: Unable to connect to remote host: Connection timed out
Borras un intercambio de tráfico entre redes de VPC
Cuando creas una instancia de Memorystore para Redis, creas un intercambio de tráfico entre redes de VPC entre tu red de VPC y una red de VPC interna de Google.
El intercambio de tráfico de red usa el siguiente formato:
redis-peer-############
Si se borra este intercambio de tráfico entre redes, cuando intentes ejecutar Telnet a la instancia, aparecerá el siguiente mensaje de error:
telnet: Unable to connect to remote host: Connection timed out
Para restablecer el intercambio de tráfico entre redes borrado, crea otra instancia. Luego, borra esta instancia. Tu instancia original ahora tiene el intercambio de tráfico entre redes que necesita.
Creas reglas de firewall que bloquean las direcciones IP de tu instancia
Si creas reglas de firewall de salida que bloquean el puerto (6379) o la dirección IP de tu instancia de Memorystore para Redis, es posible que experimentes problemas de conectividad. No crees reglas de firewall de red que bloqueen el rango de direcciones IP de tu instancia.
Tienes conexiones que no responden
Te recomendamos que configures tu aplicación cliente para detectar conexiones que no responden a Memorystore para Redis. Cuando se detecta una conexión que no responde, el cliente debe restablecerla. Para compilar una aplicación resistente, te recomendamos las siguientes configuraciones de cliente:
- Configura los parámetros de keep-alive de TCP: establece los parámetros
TCP keepalive time,TCP keepalive intervalyTCP keepalive probespara que los clientes detecten y descarten de forma proactiva las conexiones que no responden, incluso cuando las conexiones están inactivas. Por ejemplo, si estableces el parámetroTCP keepalive timeen 30 segundos,TCP keepalive intervalen 10 segundos yTCP keepalive probesen 3, los clientes restablecen las conexiones inactivas que no responden en un minuto. - Configura los tiempos de espera del usuario de TCP: Establece este tiempo de espera en tus clientes para restablecer las conexiones que tienen solicitudes pendientes y dejan de responder. Por ejemplo, si estableces el tiempo de espera en 15 segundos, los clientes restablecen las conexiones que no responden que tienen solicitudes pendientes después de 15 segundos.
Problemas de uso de CPU
En esta sección, se explican los problemas de uso de CPU que puede tener tu instancia de Memorystore para Redis.
Tu instancia experimenta una latencia alta o no responde
Si tu instancia de Memorystore para Redis experimenta una latencia alta o no responde, es posible que estos problemas se deban al uso de los siguientes comandos de Redis con uso intensivo de recursos:
Estos comandos pueden aumentar la presión de la CPU en tu instancia. Te recomendamos que no ejecutes el comando KEYS en entornos de producción. En su lugar, usa SCAN, ya que este comando usa menos recursos que KEYS.
Usar LRANGE de para consultar todo o un subconjunto grande de tu espacio de claves puede requerir recursos de capacidad de CPU alta. Para resolver este problema, te recomendamos que reduzcas la cantidad de claves en el conjunto de claves que consultas en una sola operación.
Usar de una secuencia de comandos de Lua compleja con EVAL también puede causar un alto uso de la CPU. Te recomendamos que uses secuencias de comandos Lua menos complejas.
HGETALL y ZRANGE pueden mostrar una gran cantidad de claves, lo que afecta de forma negativa el rendimiento de tu servidor. En lugar de HGETALL, te recomendamos que ejecutes el comando HSCAN. Además, antes de usar ZRANGE, te recomendamos que limites el tamaño del rango que usas para una consulta.
Antes de ejecutar un comando con uso intensivo de recursos, verifica el tamaño de las estructuras de datos que consulta el comando para asegurarte de que no cause latencia.
Si la instancia experimenta una latencia alta o no responde, haz lo siguiente:
- Revisa los registros del lado del cliente para buscar si se ejecutó algún comando con uso intensivo de recursos. Si es así, anota la fecha y la hora.
- Usa Cloud Monitoring para
ver la métrica
redis.googleapis.com/stats/cpu_utilization. Verifica si los períodos de uso de CPU elevado coinciden con los mismos períodos cuando se ejecutan los comandos con uso intensivo de recursos.
El búfer de salida de tu instancia se queda sin espacio
Si el búfer de salida de tu instancia de Memorystore para Redis se queda sin espacio, haz lo siguiente:
- Establece un valor más pequeño para el
maxmemory-gbparámetro. - Usa la
allkeys-lrumaxmemorypolítica.
Cuando la memoria de tu instancia está llena y llega una escritura nueva, Memorystore para Redis expulsa las claves fin de dejar espacio para la escritura según la política de maxmemory de tu instancia. La política allkeys-lru expulsa las claves que se usaron menos recientemente (LRU) del conjunto de claves completo.
Te recomendamos que supervises la maxmemory y la memoria usada de tu instancia. Esto te ayuda a saber si tu instancia alcanza la capacidad de instancia aprovisionada.
Además, si reduces el valor del parámetro maxmemory-gb, obtienes más espacio para la sobrecarga.
Faltan métricas externas para tu instancia
Si tu instancia experimenta un uso elevado de la CPU o se agotan los recursos de la instancia (por ejemplo, por tener demasiadas conexiones), es posible que la instancia no funcione correctamente y que falten métricas externas.
Problemas de red
En esta sección, se explican los problemas de red que puede tener tu instancia.
Agotas el rango de IP asignado o existe una ruta en conflicto
Cuando creas recursos dentro del rango de direcciones IP dedicado a Memorystore para Redis, es posible que agotes todas las direcciones IP. O bien, puede haber una ruta que entre en conflicto con la dirección IP de la instancia de Memorystore para Redis que intentas crear.
Estos problemas hacen que aparezca el siguiente mensaje de error:
The IP ranges for the connection do not have enough available IPs. Allocate a
new range or expand existing range and try again.
Para resolver este problema, asigna direcciones IP adicionales o quita la discrepancia del conflicto de ruta. Para obtener más información, consulta Agotamiento del rango de direcciones IP.
No tienes una conexión de acceso privado a servicios establecida para tu red
Si tu instancia de Memorystore para Redis usa el modo de conexión de acceso privado a servicios, pero no existe una conexión de acceso a servicios privados para tu red, es posible que recibas el siguiente mensaje de error:
Google private service access is not enabled. Enable private service access and
try again
Para solucionar este problema, establece una conexión de acceso privado a servicios.
Borras el intercambio de tráfico entre redes para la conexión de acceso privado a servicios
Cuando estableces una conexión de acceso privado a servicios, Memorystore para Redis crea una conexión de intercambio de tráfico entre redes llamada
servicenetworking-googleapis-com. Esta conexión aparece en la página de
intercambio de tráfico entre redes de VPC de tu proyecto.
Si borras el intercambio de tráfico entre redes, aparecerá el siguiente mensaje de error para las instancias existentes:
telnet: Unable to connect to remote host: Connection timed out
Además, si borras el intercambio de tráfico entre redes y creas una instancia, aparecerá el siguiente mensaje de error:
Private services access is not configured correctly. For steps on how to
verify the connection, check the documentation.
Para resolver este problema, crea una conexión de acceso privado a servicios entre tu red y la red de acceso privado a servicios ejecutando el siguiente comando:
gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com --ranges=RESERVED_RANGE_NAME --network=VPC_NETWORK --project=PROJECT_ID
Usas parámetros en conflicto
Si usas los parámetros --reserved-ip-range y --connect-mode=private-service-access, recibirás el siguiente mensaje de error:
Reserved IP range is not supported for --connect-mode private services access
No puedes usar ambos parámetros al mismo tiempo porque Memorystore para Redis no admite el parámetro --reserved-ip-range para el modo de conexión de acceso privado a servicios.
Para solucionar este problema, realiza una de las siguientes acciones:
- Usa el parámetro
--reserved-ip-rangecon el parámetro--connect-mode=direct-peering. - No uses el parámetro
--reserved-ip-range.
Se supera la cuota de subred para tu proyecto
Existe un límite para la cantidad de subredes que puedes crear en tu Google Cloud proyecto. Si excedes esta cuota, recibirás uno de los siguientes mensajes de error:
Internal network quota exceeded. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8
o
Unable to create instance. Network quota limit has been reached. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8
Para resolver este problema, completa el formulario que aparece en los mensajes de error o comunícate con Atención al cliente de Cloud.
No conectas tu proyecto de servicio a tu proyecto host
Si usas la VPC compartida y no conectas tu proyecto de servicio a tu proyecto host, recibirás el siguiente mensaje de error:
Invalid network name <network-name>. Project <project-name> referenced is not the host project for <service-project-name>.
Para resolver este problema, conecta tu proyecto de servicio a tu proyecto host.
Creas una instancia en un proyecto de servicio con el modo de conexión de intercambio de tráfico directo y designas una red de VPC compartida
Si creas una instancia de Memorystore para Redis en un proyecto de servicio y designas una red de VPC compartida desde el proyecto host para la instancia, no puedes usar el modo de conexión de intercambio de tráfico directo.
De forma predeterminada, el modo de conexión se establece en intercambio de tráfico directo. Si intentas usar este modo de conexión cuando creas una instancia y, también, seleccionas una red de VPC compartida desde el proyecto host como valor para el parámetro --network, recibirás el siguiente mensaje de error:
Authorized_network must exist in the same project as redis instance
Para solucionar este problema, realiza una de las siguientes acciones:
- Cuando crees tu instancia, usa el modo de conexión de acceso privado a servicios
(--connect-mode=private-service-access). - Elige una red de VPC autorizada que esté en el mismo proyecto que tu instancia.
Usas un rango de direcciones IP para Compute Engine al que Memorystore para Redis no puede acceder
No puedes acceder a tu instancia de Memorystore para Redis desde una VM de Compute Engine que tenga una dirección IP en el rango 172.17.0.0/16.
Este rango está reservado para un componente interno.
Para resolver este problema, accede a tu instancia desde una VM de Compute Engine que tenga una dirección IP en un rango diferente.
Problemas de conexión a tu instancia desde otros Google Cloud recursos
En esta sección, se explican los problemas que puede tener tu instancia de Memorystore para Redis cuando otros recursos intentan conectarse a ella.
No puedes conectarte a tu instancia desde entornos sin servidores que requieren un conector de Acceso a VPC sin servidores
Si no puedes conectarte a tu instancia de Memorystore para Redis con uno de los entornos sin servidores que requieren un conector de Acceso a VPC sin servidores, verifica si configuraste este conector para tu entorno. Para obtener más información, consulta el requisito del conector de Acceso a VPC sin servidores.
No puedes conectarte a tu instancia desde un clúster de Google Kubernetes Engine (GKE)
Para conectarte a tu instancia de Memorystore para Redis desde un clúster de GKE, debes habilitar el alias de IP o nativo de VPC en el clúster.
Es más sencillo habilitar el alias de IP o nativo de VPC cuando creas el clúster. En la sección de opciones avanzadas, selecciona Nativo de la VPC. Para obtener más información, consulta Crea un clúster nativo de la VPC.
Problemas de Identity and Access Management (IAM)
En esta sección, se explican los problemas de IAM que puede tener tu instancia de Memorystore para Redis.
Quieres restablecer una vinculación de política borrada para una cuenta de servicio
Memorystore para Redis usa las siguientes cuentas de servicio para administrar tus instancias:
service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.comservice-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
Si borras las vinculaciones de políticas para estas cuentas de servicio, no podrás crear instancias.
Si intentas crear una instancia de Memorystore para Redis con Google Cloud CLI, es posible que recibas el siguiente mensaje de error:
(gcloud.redis.instances.create) FAILED_PRECONDITION: A required IAM policy might be missing. Please run this command:"gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member='serviceAccount:service-YOUR_PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'" and try again.
Para restablecer la vinculación de políticas para la cuenta de servicio service-networking, ejecuta el siguiente comando. Reemplaza VARIABLES por los valores adecuados.
gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
Para restablecer la vinculación de políticas para la cuenta de servicio cloud-redis, ejecuta el siguiente comando. Reemplaza VARIABLES por los valores adecuados.
gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'
Problemas de tiempo de espera de la operación
Los siguientes problemas dan como resultado una instancia de Redis que no responde o tiempos de espera de operación de instancia o nodo.
Problemas de partición de red
En ocasiones, los Google Cloud recursos no pueden comunicarse entre zonas dentro de una región debido a un error en la partición de red en los servidores de Google Cloud. Esto puede hacer que tu instancia pierda conexión, lo que genera un error de tiempo de espera.
Después de que Google Cloud resuelva el error de partición de red para la región o zona en la que se aprovisiona tu instancia, la conectividad debería reanudarse normalmente.
En este problema, es posible que veas un mensaje de error de conectividad como el siguiente:
telnet: Unable to connect to remote host: Connection timed out
Si no puedes identificar la causa del error del tiempo de espera, comunícate con el equipo de asistencia Google Cloud Support.
El proyecto de servicio y el proyecto host no están en el mismo perímetro de los Controles del servicio de VPC
Si usas la VPC compartida y un perímetro de control de servicios de VPC, y se agota el tiempo de espera de la operación de creación de la instancia de Redis, esto puede indicar que tu proyecto de servicio y el proyecto host no está en el mismo perímetro de servicio. Tu proyecto de servicio y proyecto host deben estar en el mismo perímetro para que tu instancia de Redis se comunique con los clientes conectados a través de la red de VPC compartida.
Para comprobar si tienes este problema, verifica los registros de auditoría de tu instancia de Redis en busca del siguiente error:
violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"
Para resolver este problema, coloca la red de host y la red de servicios en el mismo perímetro de servicio.
Solución de problemas de importación y exportación
En esta sección, se describen algunos problemas comunes que pueden surgir cuando usas la importación y la exportación para Memorystore para Redis.
Los botones de importación y exportación están inhabilitados en la Google Cloud consola
Problema: El usuario que accedió a la consola no tiene los permisos redis.instances.import o redis.instances.export necesarios para importar o exportar archivos RDB.
Solución: otorga los permisos al usuario y actualiza la página de detalles de la instancia.
La operación de importación se completó, pero los datos no se restablecieron
Si se completa una operación de importación, pero los datos no se restablecen, primero revisa la Google Cloud consola o la línea de comandos en busca de un mensaje de error y resuelve cualquier problema descrito en el mensaje de error.
Si ocurre un error durante el proceso de importación, la instancia se recupera mediante un archivo RDB vacío. Puedes intentar restablecer los datos si importas el mismo archivo RDB de nuevo o con un archivo RDB diferente.
La importación falló porque el archivo RDB era demasiado grande
Si recibiste el mensaje de error “Import RDB file gs://bucket/object.rdb size exceeded max memory 10 GB”, debes escalar verticalmente tu instancia y volver a intentar la importación. También puedes intentar importar un archivo RDB más pequeño a tu instancia.
Solución de problemas de Google Cloud CLI
Si te encuentras con un problema en el que un comando de gcloud CLI no está disponible o si el comando se comporta de forma diferente a la que se documenta, intenta actualizar gcloud CLI:
gcloud components update
Detén todos los comandos y las conexiones en curso para una instancia de Redis
Como Memorystore para Redis es un producto administrado por Google, hay algunos
comandos que están
bloqueados en tu instancia de Redis
para proporcionar un entorno seguro y confiable. Uno de los comandos restringidos
es CLIENT, que incluye CLIENT KILL, que se usa para detener comandos.
Si un comando de Redis consume mucho uso de CPU o RAM y afecta tu entorno de producción, debes reiniciar la instancia (para las configuraciones de nivel básico) o conmutar por error a una réplica (para las configuraciones de nivel estándar). Esta operación de reinicio o conmutación por error detiene todos los comandos que se ejecutan en el servidor de Redis y finaliza todas las conexiones en curso.
A continuación, encontrarás comandos para realizar reinicios o conmutaciones por error para cada configuración de Memorystore para Redis.
Detén comandos en instancias de Memorystore para Redis de nivel estándar
gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss
Detén comandos en instancias de Memorystore para Redis de nivel básico
La única forma de realizar un reinicio en una instancia de Memorystore para Redis es cambiar su configuración, como escalar verticalmente la instancia. A continuación, se incluye un ejemplo de un comando que puedes ejecutar para reiniciar tu instancia.
gcloud redis instances update INSTANCE_NAME --region REGION_ID --size NUMBER_GB
Después de escalar tu instancia a un tamaño diferente, puedes ejecutar otra operación de escalamiento para volverla al tamaño original.
Problemas con la política de la organización de uso compartido restringido por dominio
Según cuándo se creó tu instancia, Memorystore para Redis usa uno de los dos formatos de cuenta de servicio diferentes. Para identificar qué formato de cuenta de servicio usa tu instancia, consulta Formato de cuenta de servicio de Memorystore para Redis.
Existe un problema conocido en el que la política de la organización iam.allowedPolicyMemberDomains causa errores cuando se usa con instancias de Memorystore para Redis que usan el formato de cuenta de servicio [PROJECT_NUMBER]-compute@developer.gserviceaccount.com.
En estos problemas, es posible que encuentres este error:
One or more users named in the policy do not belong to a permitted customer.
Hay dos opciones para resolver este problema.
- Crea una instancia: Las instancias recién creadas tienen el formato de cuenta de servicio adecuado que es compatible con la política de la organización. Si es fundamental mantener el contenido de la caché, puedes realizar una exportación para hacer una copia de seguridad de los datos existentes y una importación a la instancia nueva. Una instancia recién creada tiene una nueva dirección IP de servicio que debe configurarse en tu aplicación.
- Forzar el acceso a la cuenta: Usa esta opción solo si no es posible volver a crear tu instancia.