Solución de problemas

En esta página, se explican varias situaciones de error, los mensajes de error para estas situaciones y los pasos para solucionar problemas a fin de resolver los errores.

Situaciones de error de conectividad

Si tu instancia tiene problemas de conectividad, revisa las situaciones de esta sección para ver si una de ellas está causando el problema.

De lo contrario, establece Telnet en uno de tus nodos de Redis y ejecuta algunos comandos simples de Redis para ver si la instancia responde o no.

Error de conexión causado por recursos aprovisionados en diferentes redes de VPC

Para conectarse a una instancia de Memorystore desde un recurso de Google Cloud, como una VM de Compute Engine, los recursos deben aprovisionarse en la misma red de VPC autorizada que la instancia de Redis.

Si intentas realizar una conexión Telnet a una instancia de Memorystore desde un recurso en una región o una red de VPC diferente, se generará el siguiente mensaje de error:

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

Error de conexión causado por el intercambio de tráfico entre redes de VPC borrado

Si creas una instancia de Memorystore para Redis, se crea un intercambio de tráfico de VPC entre tu red de VPC y una red de VPC interna de Google.

El intercambio de tráfico entre redes usa el siguiente formato:

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

Si se borra este intercambio de tráfico entre redes, el intento de Telnet a la instancia de Redis da como resultado el siguiente mensaje de error:

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

La forma más fácil de restablecer el intercambio de tráfico entre redes borrado es crear una instancia nueva de Memorystore para Redis. La creación de una instancia nueva de Redis restablece el intercambio de tráfico entre redes borrado, por lo que puedes borrarlo y tu instancia original de Redis tiene el intercambio de tráfico entre redes que necesita.

Las reglas de firewall bloquean las direcciones IP de tu instancia.

Los problemas de conectividad pueden surgir si creas reglas de firewall de salida que bloquean el puerto de Redis (6379) o la dirección IP de la instancia.

Asegúrate de no crear reglas de firewall de red que bloqueen el rango de IP de tus instancias de Redis.

Situaciones de error de uso de CPU elevado

La falta de respuesta de la instancia de Redis debido al uso inapropiado de comandos costosos de Redis

Si tu instancia de Redis experimenta latencia alta, falta de respuesta o problemas de conectividad, los problemas pueden deberse al uso inadecuado de los siguientes comandos costosos de Redis:

Con estos comandos, se puede ejercer mucha presión sobre la CPU en tu instancia. Redis de código abierto no recomienda la ejecución de KEYS en entornos de producción. El uso de LRANGE para consultar todo o un gran subconjunto de tu espacio de claves puede requerir recursos de CPU altos. El uso de una secuencia de comandos Lua compleja con EVAL puede provocar un uso elevado de CPU.

Si tu instancia experimenta una latencia alta o una falta de respuesta, verifica los registros del cliente para ver si se ejecutó algún comando costoso. De ser así, toma nota de la hora. A continuación, usa Cloud Monitoring para ver la métrica redis.googleapis.com/stats/cpu_utilization. Comprueba si los períodos de uso alto de CPU coinciden con los mismos períodos en que se ejecutaron los comandos costosos.

Recomendamos no usar el comando KEYS en entornos de producción. Para EVAL, usa secuencias de comandos de Lua menos complejas. Para LRANGE, reduce la cantidad de claves del conjunto de claves que se consulta en una sola operación.

Situaciones de error de Herramientas de redes

Se agotó el rango de IP asignado o existe una ruta en conflicto

Cuando creas recursos dentro del rango de direcciones IP dedicado para Memorystore para Redis, puedes agotar todas las direcciones y provocar el mensaje de error a continuación. Como alternativa, puede haber una ruta que entre en conflicto con la dirección IP de la instancia de Redis que intentas crear.

Estas situaciones provocan 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 de conflictos de ruta. Para obtener más información sobre cómo hacer esto, consulta el agotamiento del rango de direcciones IP.

No estableciste una conexión de acceso privado a los servicios para la red

Si tu instancia de Redis usa el modo de conexión de acceso privado a los servicios y no existe una conexión de acceso privado a servicios para tu red, es posible que recibas el siguiente error:

Google private service access is not enabled. Enable private service access and try again

Para resolver este problema, establece una conexión de acceso privado a los servicios.

Se borra el intercambio de tráfico entre redes para el acceso privado a los servicios

Si se establece una conexión de acceso privado a servicios, se crea una conexión de intercambio de tráfico entre redes llamada servicenetworking-googleapis-com, que aparece en la página Intercambio de tráfico entre redes de VPC del proyecto.

Si borras el intercambio de tráfico entre redes, recibirás el siguiente error en las instancias de Redis existentes:

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

Si borras el intercambio de tráfico entre redes, recibirás el siguiente error cuando crees una instancia de Redis:

  • Private services access is not configured correctly. For steps on how to verify the connection, check the documentation.

Para resolver este problema, sigue el último paso de las instrucciones de gcloud en Cómo establecer una conexión de acceso a servicios privados.

Marcas de redes en conflicto durante la creación de instancias de Redis

Si usas el parámetro --reserved-ip-range y el parámetro --connect-mode=private-service-access, recibirás el siguiente error:

Reserved IP range is not supported for --connect-mode private services access

Para resolver este problema, usa --reserved-ip-range con --connect-mode=direct-peering o --connect-mode=PRIVATE_SERVICE_ACCESS.

No puedes usar ambos al mismo tiempo, porque el parámetro --reserved-ip-range no es compatible con el modo de conexión de acceso privado a los servicios.

Supera la cuota de subred de tu proyecto

Existe un límite en la cantidad de subredes que se pueden crear en tu proyecto. Si superas esta cuota, recibirás el siguiente mensaje 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 del mensaje de error o comunícate con el equipo de Asistencia de Google Cloud.

El proyecto de servicio no está vinculado con el proyecto host

Si usas la VPC compartida, el proyecto de servicio no se vinculará al proyecto host si recibes el siguiente error:

Invalid network name <network-name>. Project <project-name> referenced is not the host project for <service-project-name>.

Para resolver este problema, conecta el proyecto de servicio con el proyecto host.

Uso incompatible del modo de conexión de intercambio de tráfico directo y la red de VPC compartida durante la creación de la instancia

No puedes crear una instancia de Redis en un proyecto de servicio con el modo de conexión de intercambio de tráfico directo mientras designas una red de VPC compartida desde el proyecto host para la instancia.

El modo de conexión se establece en direct-peering de forma predeterminada si no estableces un valor para --connection-mode. Si intentas usar el modo de conexión de intercambio de tráfico directo durante la creación de la instancia y también eliges una red de VPC compartida del proyecto host como el valor de --network, recibirás el siguiente error:

Authorized_network must exist in the same project as redis instance

Para resolver este problema, asegúrate de especificar --connect-mode=PRIVATE_SERVICE_ACCESS en el comando de creación de la instancia de Redis o elegir una red de VPC autorizada en el mismo proyecto que la instancia de Redis.

Rangos de direcciones IP de Compute Engine no compatibles

No puedes acceder a Memorystore para Redis desde las VM de Compute Engine que tienen una dirección IP dentro del rango 172.17.0.0/16, porque ese rango está reservado para un componente interno.

Errores de conexión a tu instancia de Redis desde otros recursos de GCP

Errores de conexión a la instancia desde entornos sin servidores que requieren un conector de Acceso a VPC sin servidores

Si no puedes conectarte a una instancia de Redis mediante uno de los entornos sin servidores que requieren un conector de acceso a VPC sin servidores, es posible que no hayas configurado un conector de acceso a VPC sin servidores para tu entorno.

Consulta Requisito de conector de Acceso a VPC sin servidores para obtener más detalles.

Errores cuando te conectas a tu instancia con un clúster de Google Kubernetes Engine

No puedes conectarte a una instancia de Memorystore para Redis desde un clúster de GKE sin el alias de IP/nativo de la VPC habilitado en el clúster. Es más fácil habilitar el VPC nativo o el alias de IP durante la creación del clúster de GKE. Cuando crees tu clúster, selecciona VPC nativa en las opciones avanzadas. Para obtener más detalles, consulta Crea clústeres nativos de VPC.

Situaciones de error de la administración de identidades y accesos ( IAM)

Restablece una vinculación de política borrada para una cuenta de servicio

Memorystore para Redis usa las siguientes cuentas de servicio a fin de administrar las instancias de Redis:

  • service-project-number@service-networking.iam.gserviceaccount.com
  • service-project-number@cloud-redis.iam.gserviceaccount.com

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

Si intentas crear una instancia de Redis mediante gcloud en este caso, 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ítica de estas cuentas de servicio, ejecuta uno de los siguientes comandos y reemplaza variables por los valores adecuados. Ejecuta el comando asociado con la cuenta de servicio borrada.

gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'

Errores de tiempo de espera de operación

Las siguientes situaciones de error dan como resultado una instancia de Redis que no responde o tiempos de espera de operación de instancia o nodo.

Error en la partición de red

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

Después de que Google Cloud resuelve 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 con normalidad.

En esta situación, 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 de tiempo de espera, comunícate con la Asistencia de Google Cloud.

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 control de servicio 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 proyecto host no están en el mismo perímetro de servicio. El proyecto de servicio y el proyecto host deben estar en el mismo perímetro para que la instancia de Redis se comunique con los clientes de conexión a través de la red de VPC compartida.

Para ver si tienes este problema, verifica tus registros de auditoría de la instancia de Redis en busca del siguiente error:

violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"

Para resolver este problema, coloca tu red 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 comunes que pueden surgir cuando usas la importación y exportación de Memorystore para Redis.

Los botones de importación y exportación están inhabilitados en Cloud Console

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 no se restablecieron los datos

Si se completa una operación de importación, pero no se restablecen los datos, primero revisa si aparece un mensaje de error en Cloud Console o en la línea de comandos, y resuelve cualquier problema que se describa en el mensaje de error.

Si hay una falla durante el proceso de importación, la instancia se recupera mediante un archivo RDB vacío. Puedes intentar restablecer los datos si vuelves a importar el mismo archivo de RDB o usas un archivo de 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 supera el tamaño de memoria máxima de 10 GB", debes escalar verticalmente la instancia y volver a intentar la importación. También puedes intentar importar un archivo RDB más pequeño a la instancia.

Soluciona problemas de la CLI de Google Cloud

Si tienes un problema en el que un comando de la CLI de gcloud no está disponible o si el comando se comporta diferente a cómo está documentado, intenta actualizar la CLI de gcloud:

gcloud components update

Detén todos los comandos y las conexiones en curso para una instancia de Redis

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

Si un comando de Redis consume mucha capacidad de CPU/RAM y afecta a tu entorno de producción, debes reiniciar la instancia (para las configuraciones del nivel Básico) o conmutar por error a una réplica (para la configuración del 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 en cada configuración de Memorystore para Redis.

Detén los comandos en las instancias de Memorystore para Redis de nivel Estándar

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

Detén los comandos en las 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 la configuración, como escalar verticalmente la instancia. A continuación, se muestra 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 regresar al tamaño original.