Solucionar problemas

En esta página se explican varios problemas, los mensajes de error correspondientes y los pasos para solucionarlos.

Problemas de conectividad

Si tu instancia de Memorystore para Redis tiene problemas de conectividad, consulta los problemas de esta sección para ver si alguno de ellos es la causa.

Si un problema de esta sección no coincide con el tuyo, haz una conexión Telnet a uno de tus nodos de Redis y ejecuta algunos comandos de Redis para ver si la instancia responde.

Si el nodo no responde, comprueba si alguno de los problemas de red es el motivo por el que se ha bloqueado la conexión de red de tu nodo. Si el problema no se resuelve con ninguna de estas opciones, póngase en contacto con Cloud Customer Care.

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 VPC autorizada que la instancia.

Si intentas conectarte por Telnet a una instancia desde un recurso que se encuentra en otra región u otra red de VPC, se mostrará el siguiente mensaje de error:

telnet: Unable to connect to remote host: Connection timed out

Eliminas un emparejamiento entre redes de VPC.

Cuando creas una instancia de Memorystore para Redis, se crea un emparejamiento de VPC entre tu red de VPC y una red de VPC interna de Google.

El formato de la interconexión de redes es el siguiente:

redis-peer-############

Si se elimina este emparejamiento de redes, al intentar conectarse a la instancia mediante Telnet, se mostrará el siguiente mensaje de error:

telnet: Unable to connect to remote host: Connection timed out

Para volver a establecer la conexión de red eliminada, crea otra instancia. A continuación, elimina esta instancia. Tu instancia original ahora tiene el peering de red que necesita.

Crea reglas de cortafuegos que bloqueen las direcciones IP de tu instancia.

Si creas reglas de cortafuegos de salida que bloquean el puerto (6379) o la dirección IP de tu instancia de Memorystore para Redis, es posible que tengas problemas de conectividad. No crees reglas de cortafuegos de red que bloqueen el intervalo de direcciones IP de tu instancia.

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 tiene 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 a que estás usando los siguientes comandos de Redis que consumen muchos recursos:

Estos comandos pueden ejercer mucha presión sobre la CPU de tu instancia. Te recomendamos que no ejecutes el comando KEYS en entornos de producción. En su lugar, usa SCAN, ya que este comando utiliza menos recursos que KEYS.

Usar LRANGE para consultar todo o un gran subconjunto de tu espacio de claves puede requerir muchos recursos de CPU. Para resolver este problema, te recomendamos que reduzcas el número de claves del conjunto de claves que consultas en una sola operación.

Usar un script de Lua complejo con EVAL también puede provocar un uso elevado de la CPU. Te recomendamos que uses secuencias de comandos Lua menos complejas.

HGETALL y ZRANGE pueden devolver un gran número de claves, lo que afecta negativamente al rendimiento de su 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 intervalo que utilices en una consulta.

Antes de ejecutar un comando que consuma muchos recursos, comprueba el tamaño de las estructuras de datos que consulta el comando para asegurarte de que no provoque latencia.

Si tu instancia experimenta una latencia alta o no responde, haz lo siguiente:

  1. Consulta los registros del lado del cliente para ver si se ha ejecutado algún comando que consuma muchos recursos. Si es así, anota la fecha y la hora.
  2. Usa Cloud Monitoring para ver la métrica redis.googleapis.com/stats/cpu_utilization. Comprueba si los periodos de uso elevado de la CPU coinciden con los periodos en los que se ejecutaron los comandos que consumen muchos 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:

Cuando la memoria de tu instancia esté llena y se produzca una nueva escritura, Memorystore para Redis expulsará claves para dejar espacio para la escritura en función de la maxmemory política de tu instancia. La política allkeys-lru elimina las claves menos usadas recientemente (LRU) de todo el conjunto de claves.

Te recomendamos que monitorices la maxmemory y la memoria utilizada de tu instancia. De esta forma, sabrá si su instancia alcanza la capacidad de instancia aprovisionada. Además, si reduce el valor del parámetro maxmemory-gb, tendrá más espacio para la sobrecarga.

Problemas de red

En esta sección se explican los problemas de red que pueden surgir en tu instancia.

Se agota el intervalo de IPs asignado o existe una ruta en conflicto.

Cuando creas recursos dentro del intervalo de direcciones IP dedicado a Memorystore para Redis, es posible que agotes todas las direcciones IP. También puede haber una ruta en conflicto con la dirección IP de la instancia de Memorystore para Redis que estás intentando crear.

Estos problemas provocan 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 solucionar este problema, asigna más direcciones IP o elimina la discrepancia de conflicto de ruta. Para obtener más información, consulta el artículo Agotamiento del intervalo de direcciones IP.

No tienes ninguna conexión de acceso a servicios privados establecida para tu red.

Si tu instancia de Memorystore para Redis usa el modo de conexión de acceso a servicios privados, 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, establezca una conexión de acceso de servicios privados.

Elimina el intercambio de tráfico entre redes de la conexión de acceso de servicios privados.

Cuando estableces una conexión de acceso a servicios privados, Memorystore para Redis crea una conexión de emparejamiento de redes llamada servicenetworking-googleapis-com. Esta conexión aparece en la página Emparejamiento entre redes de VPC de tu proyecto.

Si eliminas el intercambio de tráfico entre redes, aparecerá el siguiente mensaje de error en las instancias que ya tengas:

telnet: Unable to connect to remote host: Connection timed out

Además, si eliminas la interconexión de redes y crea 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 solucionar este problema, crea una conexión de acceso de servicios privados entre tu red y la red de acceso de servicios privados ejecutando el siguiente comando:

gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com --ranges=RESERVED_RANGE_NAME --network=VPC_NETWORK --project=PROJECT_ID

Utilizas parámetros contradictorios.

Si usas tanto el parámetro --reserved-ip-range como el parámetro --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 en el modo de conexión de acceso a servicios privados.

Para solucionar este problema, haz una de las siguientes acciones:

  • Usa el parámetro --reserved-ip-range con el parámetro --connect-mode=direct-peering.
  • No utilices el parámetro --reserved-ip-range.

Superas la cuota de subredes de tu proyecto.

El número de subredes que puedes crear en tu proyecto está limitado.Google Cloud Si superas 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 solucionar este problema, rellena el formulario que aparece en los mensajes de error o ponte en contacto con Cloud Customer Care.

No vinculas tu proyecto de servicio a tu proyecto del host.

Si usas la VPC compartida y no adjuntas 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 solucionar este problema, asocia tu proyecto de servicio a tu proyecto host.

Crea una instancia en un proyecto de servicio con el modo de conexión de emparejamiento directo y designa 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 del proyecto host para la instancia, no podrás usar el modo de conexión emparejamiento directo.

De forma predeterminada, el modo de conexión es el de emparejamiento directo. Si intenta usar este modo de conexión al crear una instancia y también elige una red VPC compartida del proyecto host como valor del parámetro --network, recibirá el siguiente mensaje de error:

Authorized_network must exist in the same project as redis instance

Para solucionar este problema, haz una de las siguientes acciones:

  • Cuando crees la instancia, usa el modo de conexión de acceso a servicios privados
    (--connect-mode=private-service-access).
  • Elige una red de VPC autorizada que esté en el mismo proyecto que tu instancia.

Usas un intervalo 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 intervalo 172.17.0.0/16. Este intervalo está reservado para un componente interno.

Para solucionar este problema, accede a tu instancia desde una VM de Compute Engine que tenga una dirección IP en otro intervalo.

Problemas para conectarse a la instancia desde otros Google Cloud recursos

En esta sección se explican los problemas que pueden surgir en tu instancia de Memorystore para Redis cuando otros recursos intentan conectarse a ella.

No puedes conectarte a tu instancia desde entornos sin servidor que requieran un conector de Acceso a VPC sin servidor

Si no puedes conectarte a tu instancia de Memorystore para Redis mediante uno de los entornos sin servidor que requieren un conector de Acceso a VPC sin servidor, comprueba si has configurado este conector para tu entorno. Para obtener más información, consulta el artículo Requisitos de los conectores de Acceso a VPC sin servidor.

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 la opción de VPC nativa o de alias de IP en el clúster.

La forma más sencilla de habilitar la VPC nativa o el alias de IP es al crear el clúster. En la sección de opciones avanzadas, selecciona VPC nativa. Para obtener más información, consulta Crear un clúster nativo de VPC.

Problemas de gestión de identidades y accesos (IAM)

En esta sección se explican los problemas de gestión de identidades y accesos que pueden surgir en tu instancia de Memorystore para Redis.

Quieres restaurar un enlace de política eliminado de una cuenta de servicio

Memorystore para Redis usa las siguientes cuentas de servicio para gestionar tus instancias:

service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.com

service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com

Si eliminas las vinculaciones de políticas de estas cuentas de servicio, no podrás crear instancias.

Si intentas crear una instancia de Memorystore para Redis mediante 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 la política de la cuenta de servicio service-networking, ejecuta el siguiente comando. Sustituye 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 la política de la cuenta de servicio cloud-redis, ejecuta el siguiente comando. Sustituye 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 agotado

Los siguientes problemas provocan que la instancia de Redis no responda o que se agote el tiempo de espera de las operaciones de la instancia o del nodo.

Problemas de partición de red

A veces, los recursos de Google Cloud no pueden comunicarse entre zonas de una región debido a un error de partición de red en los servidores de Google Cloud. Esto puede provocar que tu instancia pierda la conexión, lo que generará un error de tiempo de espera.

Una vez que Google Cloud resuelva el error de partición de red de la región o la zona en la que se ha aprovisionado tu instancia, la conectividad debería volver a funcionar con normalidad.

En este caso, puede que veas un mensaje de error de conectividad como el siguiente:

telnet: Unable to connect to remote host: Connection timed out

Si no puede identificar la causa del error de tiempo de espera, póngase en contacto con el Google Cloud equipo de Asistencia.

El proyecto de servicio y el proyecto host no están en el mismo perímetro de control de servicio de VPC

Si usas una VPC compartida y un perímetro de Controles de Servicio de VPC y la operación de creación de tu instancia de Redis agota el tiempo de espera, puede que tu proyecto de servicio y tu proyecto host no estén en el mismo perímetro de servicio. Tu proyecto de servicio y tu proyecto host deben estar en el mismo perímetro para que tu instancia de Redis se comunique con los clientes que se conectan a través de la red de VPC compartida.

Para comprobar si tienes este problema, consulta los registros de auditoría de tu instancia de Redis para ver si aparece el siguiente error:

violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"

Para solucionar este problema, coloca tu red de host y tu red de servicio en el mismo perímetro de servicio.

Solucionar problemas de importación y exportación

En esta sección se describen algunos problemas habituales que pueden surgir al usar la importación y la exportación en Memorystore para Redis.

Los botones Importar y Exportar están inhabilitados en la consola Google Cloud

Problema: el usuario que ha iniciado sesión en la consola no tiene los permisos de redis.instances.import o redis.instances.export necesarios para importar o exportar archivos RDB.

Solución: concede los permisos al usuario y actualiza la página de detalles de la instancia.

La operación de importación se ha completado, pero los datos no se han restaurado

Si una operación de importación se completa, pero los datos no se restauran, primero comprueba si hay algún mensaje de error en la Google Cloud consola o en la línea de comandos y resuelve los problemas que se describan en el mensaje de error.

Si se produce un error durante el proceso de importación, la instancia se recupera mediante un archivo RDB vacío. Puedes intentar restaurar los datos importando el mismo archivo RDB de nuevo o usando otro archivo RDB.

No se ha podido importar porque el archivo RDB era demasiado grande

Si has recibido el mensaje de error "Import RDB file gs://bucket/object.rdb size exceeds max memory 10GB" (El tamaño del archivo RDB gs://bucket/object.rdb supera el límite de memoria de 10 GB), debes aumentar la escala de tu instancia y volver a intentar la importación. También puedes probar a importar un archivo RDB más pequeño en tu instancia.

Solucionar problemas de Google Cloud CLI

Si tienes algún problema con un comando de la CLI de gcloud que no está disponible o si el comando se comporta de forma diferente a como se describe en la documentación, prueba a actualizar la CLI de gcloud:

gcloud components update

Detener todos los comandos y conexiones en curso de una instancia de Redis

Como Memorystore para Redis es un producto gestionado por Google, hay algunos comandos que están bloqueados en tu instancia de Redis para proporcionar un entorno seguro y fiable. Uno de los comandos restringidos es CLIENT, que incluye CLIENT KILL, que se usa para detener comandos.

Si un comando de Redis consume mucha CPU o RAM y afecta a tu entorno de producción, debes reiniciar la instancia (en las configuraciones de nivel básico) o conmutar por error a una réplica (en las configuraciones de nivel estándar). Esta operación de reinicio o conmutación por error detiene todos los comandos que se estén ejecutando en el servidor Redis y finaliza todas las conexiones en curso.

A continuación, encontrará comandos para realizar reinicios o conmutaciones por error de cada configuración de Memorystore para Redis.

Detener comandos en instancias de Memorystore para Redis de nivel Estándar

gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss

Detener comandos en instancias de Memorystore para Redis de nivel básico

La única forma de reiniciar una instancia de Memorystore para Redis es cambiar su configuración, como aumentar la escala de la instancia. A continuación, se muestra un ejemplo de comando que puedes ejecutar para reiniciar tu instancia.

gcloud redis instances update INSTANCE_NAME --region REGION_ID --size NUMBER_GB

Después de cambiar el tamaño de tu instancia, puedes ejecutar otra operación de escalado para volver a su tamaño original.

Problemas con la política de organización de uso compartido restringido al dominio

En función de cuándo se haya creado tu instancia, Memorystore para Redis usará uno de los dos formatos de cuenta de servicio. Para identificar el formato de cuenta de servicio que usa tu instancia, consulta Formato de cuenta de servicio de Memorystore para Redis.

Hay un problema conocido por el que la política de la organización iam.allowedPolicyMemberDomains provoca 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 casos, puede aparecer este error: One or more users named in the policy do not belong to a permitted customer.

Hay dos formas de resolver este problema.

  1. 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 crear una copia de seguridad de los datos y una importación a la nueva instancia. Una instancia recién creada tiene una nueva dirección IP de servicio que debe configurarse en tu aplicación.
  2. Forzar el acceso a la cuenta: usa esta opción solo si no es posible volver a crear tu instancia.