Soluciona problemas

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 en 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 red es el motivo por el 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 recurso de Google Cloud , como una VM de Compute Engine, debes aprovisionar los recursos en la misma red de VPC autorizada que la instancia.

Si intentas ejecutar Telnet a una instancia desde un recurso que se encuentra en una región o red de VPC diferente, se mostrará 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 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, aparecerá el siguiente mensaje de error:

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

Para restablecer el intercambio de tráfico de la red borrada, 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.

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 problemas de latencia alta o falta de respuesta, es posible que estos problemas se deban al uso de los siguientes comandos de Redis que consumen muchos 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 para consultar todo o un subconjunto grande de tu espacio de claves puede requerir recursos de CPU altos. 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 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 devolver una gran cantidad de claves, lo que afecta negativamente 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 búsqueda.

Antes de ejecutar un comando que requiere muchos recursos, verifica el tamaño de las estructuras de datos que consulta el comando para asegurarte de que no cause latencia.

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

  1. Revisa los registros del cliente para ver si se ejecutó 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. Verifica si los períodos de uso de CPU elevado coinciden con los mismos períodos cuando 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 llega una escritura nueva, Memorystore para Redis expulsa las claves para dejar espacio para la escritura, según la política de maxmemory de tu instancia. La política allkeys-lru expulsa las claves usadas con menor frecuencia (LRU) de todo el conjunto de claves.

Te recomendamos que supervises la memoria maxmemory y la memoria usada de tu instancia. Esto te ayuda a saber si tu instancia alcanza la capacidad aprovisionada. Además, si reduces el valor del parámetro maxmemory-gb, obtendrás más espacio para la sobrecarga.

Problemas de redes

En esta sección, se explican los problemas de redes que puede tener tu instancia.

Se agota 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 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 resolver este problema, asigna direcciones IP adicionales o quita la discrepancia del conflicto de rutas. Para obtener más información, 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 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 a servicios privados.

Borras el intercambio de tráfico de red 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 de red llamada servicenetworking-googleapis-com. Esta conexión aparece en la página 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-range con el parámetro --connect-mode=direct-peering.
  • No uses el parámetro --reserved-ip-range.

Superas la cuota de subredes para tu proyecto.

Existe un límite para la cantidad de subredes que puedes crear dentro de tu proyecto deGoogle Cloud . 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 vinculas 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 del proyecto host para la instancia, no podrás 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 eliges una red de VPC compartida del 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 podría 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 la VPC nativa en el clúster.

Es más sencillo habilitar la VPC nativa o el alias de IP 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 podría 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.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.

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 la política 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ítica a la cuenta de servicio de 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, Google Cloud los 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 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 de tiempo de espera, comunícate con el Google Cloud equipo de asistencia al cliente.

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 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.

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

Detener 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 mucha 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.

Comandos de detención en instancias de Memorystore para Redis de nivel estándar

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

Detención de 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 al dominio

Según cuándo se creó tu instancia, Memorystore para Redis usa uno de los dos formatos de cuentas de servicio diferentes. Para identificar qué formato de cuenta de servicio usa tu instancia, consulta Formato de la 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 utilizan el formato de cuenta de servicio [PROJECT_NUMBER]-compute@developer.gserviceaccount.com.

En estos casos, es posible que encuentres este error: One or more users named in the policy do not belong to a permitted customer.

Existen dos opciones para resolver este problema.

  1. Crea una instancia: 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 la caché, puedes realizar una exportación para crear una copia de seguridad de los datos existentes y una importación a la instancia nueva. Una instancia recién creada tiene una dirección IP de servicio nueva 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.