Soluciona problemas

En esta página, se explican varios casos de error, los mensajes de error para esas situaciones y los pasos a fin de solucionar problemas de error.

Situaciones de error de conectividad

Si tu instancia experimenta problemas de conectividad, comprueba las situaciones en esta sección para ver si alguna de ellas es la causa del problema.

Si no es así, ejecuta Telnet a 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 se deben aprovisionar en la misma red de VPC autorizada que la instancia de Redis.

Intentar ejecutar Telnet a una instancia de Memorystore desde un recurso en una región o red de VPC diferente da como resultado el siguiente mensaje de error:

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

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

La creación de una instancia de Memorystore para Redis 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 de red usa el siguiente formato:

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

Si se borra este intercambio de tráfico de red, cuando intentes ejecutar Telnet a la instancia de Redis, aparecerá el siguiente mensaje de error:

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

La manera más fácil de restablecer el intercambio de tráfico de la red borrada 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 que se borraron, por lo que puedes borrarla y tu instancia de Redis original tiene el intercambio de tráfico entre redes que necesita.

Las reglas de firewall bloquean las direcciones IP de la instancia

Pueden surgir problemas de conectividad 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 tu instancia de Redis.

Situaciones de error del uso de capacidad de CPU alta

La falta de respuesta de instancia de Redis se debe a un uso inadecuado de comandos costosos de Redis

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

Estos comandos pueden aumentar la presión de la CPU en tu instancia. Redis de código abierto no recomienda ejecutar KEYS en entornos de producción. Sin embargo, puedes usar SCAN, que es una alternativa más segura al comando KEYS. El uso de LRANGE para consultar todo o un subconjunto grande de tu espacio de claves puede demandar altos recursos de CPU. Usar una secuencia de comandos de Lua compleja con EVAL puede generar un alto uso de la CPU.

HGETALL y ZRANGE también pueden mostrar una gran cantidad de claves, lo que afectará negativamente el rendimiento de tu servidor.

Antes de ejecutar comandos costosos, debes verificar el tamaño de las estructuras de datos que el comando consulta para asegurarte de que no cause latencia.

Si la instancia experimenta una latencia alta o no responde, revisa los registros del lado del cliente para buscar si se ejecutó algún comando costoso. Si es así, indica la hora. A continuación, 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 costosos.

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

Situaciones de error de Herramientas de redes

El rango de IP asignado se agotó o existe una ruta en conflicto

Cuando creas recursos dentro del rango de direcciones IP dedicados a Memorystore para Redis, puedes agotar todas las direcciones, lo que provoca el siguiente mensaje de error. Alternativamente, puede haber una ruta que entra en conflicto con la dirección IP de la instancia de Redis que intentas crear.

Estas situaciones causan 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 rutas. Para obtener más información sobre cómo hacerlo, consulta Agotamiento del rango de direcciones IP.

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

Si tu instancia de Redis usa el modo de conexión de acceso privado a servicios y no existe una conexión de acceso a servicios privados 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 solucionar este problema, establece una conexión de acceso a servicios privados.

Se borra el intercambio de tráfico de red para el acceso privado a servicios

Si estableces una conexión de acceso a servicios privados, se crea una conexión de intercambio de tráfico de red llamada servicenetworking-googleapis-com, que aparecerá en la página Intercambio de tráfico entre redes de VPC de tu proyecto.

Si borras el intercambio de tráfico de red, recibirás el siguiente error para las instancias de Redis existentes:

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

Si borras el intercambio de tráfico entre redes, se generará el siguiente error cuando creas 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 Establece una conexión de acceso privado a servicios.

Marcas de herramientas de red en conflicto durante la creación de la instancia de Redis

Si usas los parámetros --reserved-ip-range y --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 usa --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 servicios.

Se supera la cuota de subred para tu proyecto

Existe un límite para la cantidad de subredes que se pueden crear dentro de tu proyecto. Si excedes 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 el 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á conectado al proyecto host

Si usas la VPC compartida, tu proyecto de servicio no se conectará a tu 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 tu proyecto de servicio a tu 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, seleccionas una red de VPC compartida desde el proyecto host como valor para --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 tu comando de creación de instancias de Redis o elige una red de VPC autorizada en el mismo proyecto que tu 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 Google Cloud

Errores de conexión a tu 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 el requisito de acceso a VPC sin servidores para obtener más detalles.

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

No puedes conectarte a una instancia de Memorystore para Redis desde un clúster de GKE sin una VPC nativa o un alias de IP habilitada en tu clúster. Es más sencillo habilitar la VPC nativa 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 la VPC.

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

Restablece que se borró de una vinculación de política 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

Borrar las vinculaciones de políticas para estas cuentas de servicio te impide poder crear instancias nuevas.

Si intentas crear una instancia de Redis mediante gcloud en esta situación, 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 a estas cuentas de servicio, ejecuta uno de los siguientes comandos y reemplaza variables por los valores apropiados. Ejecuta el comando asociado a 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 la 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 de 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 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 caso, 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 la Asistencia de Google Cloud.

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 para importar y exportar están inhabilitados en la consola de Google Cloud

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 no se restablecen los datos, primero verifica si hay un mensaje de error en la consola de Google Cloud o en la línea de comandos y, luego, resuelve cualquier problema que se describa en él.

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.

Soluciona problemas de Google Cloud CLI

Si encuentras un problema en el que un comando de gcloud CLI no está disponible o si el comando se comporta de manera diferente al 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

Dado que 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/RAM y afecta a 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.

Aquí tienes comandos para realizar reinicios o conmutaciones por error en cada configuración de Memorystore para Redis.

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

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

Detiene 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 su configuración, por ejemplo, escalar verticalmente la instancia. A continuación, se muestra un ejemplo de un comando que puedes ejecutar para reiniciar la 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 volver a su tamaño original.

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

Según cuándo se creó la 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 estas situaciones, es posible que encuentres el siguiente error: One or more users named in the policy do not belong to a permitted customer.

Hay dos opciones para resolver este problema.

Opción 1

Puedes crear una instancia nueva. 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 existentes y, luego, importarlos a la instancia nueva. Ten en cuenta que una instancia recién creada tiene una nueva dirección IP de servicio que se debe configurar en tu aplicación.

Opción 2

Si no es posible volver a crear la instancia de Memorystore, sigue la solución Forzar el acceso a la cuenta.