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.
- Si el nodo no responde, verifica si alguno de los errores de la solución de problemas en Situaciones de errores de red bloquea la conexión de red de tu nodo. Si no es así, comunícate con el equipo de Asistencia de Google Cloud.
Error de conexión provocado 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.
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 desaconseja la ejecución de KEYS
en entornos de producción. Sin embargo, puedes usar SCAN
, que es una alternativa más segura al comando KEYS
. Usar LRANGE
para consultar todo o un subconjunto grande de tu espacio de claves puede requerir recursos de CPU altos.
Usar una secuencia de comandos de Lua compleja con EVAL
puede causar un alto uso de la CPU.
HGETALL
y ZRANGE
también pueden mostrar una cantidad muy grande de claves, lo que afecta negativamente el rendimiento de tu servidor.
Antes de ejecutar comandos costosos, debes verificar 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, 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 está agotado o existe una ruta en conflicto
Cuando creas recursos dentro del rango de direcciones IP dedicado a Memorystore para Redis, puedes agotar todas las direcciones, lo que genera el siguiente mensaje de error. 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 generan 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 conflicto de ruta. 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 de importación y exportación 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 los datos no se restablecen, primero revisa la consola de Google Cloud 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.
Soluciona 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 de 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 mucha CPU o RAM y afecta tu entorno de producción, debes reiniciar la instancia (para configuraciones de nivel básico) o realizar la conmutación por error a una réplica (para 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 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.
Cómo detener comandos en instancias de Memorystore para Redis de nivel estándar
gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss
Cómo 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 su escala. 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 la instancia a un tamaño diferente, puedes ejecutar otra operación de escalamiento para volver al tamaño original.
Problemas con la política de la organización de uso compartido restringido del dominio
Según el momento en que se creó tu instancia, Memorystore para Redis usa uno de los dos formatos de cuenta de servicio diferentes. Para identificar el formato de cuenta de servicio que usa tu instancia, consulta Formato de cuenta de servicio de Memorystore para Redis.
Existe un problema conocido en el que la política de 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 veas este error:
One or more users named in the policy do not belong to a permitted customer.
Existen dos opciones para resolver este problema.
Opción 1
Puedes crear una instancia nueva. Las instancias creadas recientemente 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 tu caché, puedes realizar una exportación para crear una copia de seguridad de los datos existentes y una importación a la instancia nueva. Ten en cuenta que una instancia creada recientemente 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 tu instancia de Memorystore, sigue la solución alternativa para forzar el acceso a la cuenta.