¿Por qué no puedo conectarme a mi clúster de ElastiCache para Redis?

Última actualización: 24-06-2022

No me puedo conectar a mi clúster de Amazon ElastiCache para Redis. ¿Cómo puedo solucionar este problema?

Descripción corta

Los problemas de conectividad pueden tener múltiples causas. Los problemas más frecuentes son:

  • El clúster no está listo.
  • El clúster está en mal estado.
  • La configuración de red es incorrecta.
  • La configuración del cliente es incorrecta.

Resolución

Verificar que el clúster está listo

Si creó recientemente el clúster, verifique que la creación de este se completó y está listo para aceptar conexiones.

Compruebe el estado del clúster mediante la consola de ElastiCache, interfaz de la línea de comandos de AWS (AWS CLI) o API de ElastiCache. Revise la columna Estado para ver lo siguiente:

  • Si la columna Estado muestra Disponible, el clúster se encuentra listo.
  • Si la columna Estado muestra Creando, la creación del clúster sigue en curso. Espere unos minutos hasta que se actualice a Disponible.
  • Si la columna Estado muestra Modificación, la configuración del clúster se está actualizando. Espere unos minutos hasta que finalicen las modificaciones y el estado cambie a Disponible.

Verificar que el clúster está en buen estado

En un clúster saludable, cada nodo individual se debe encontrar en el estado Disponible. Para revisar la salud del clúster, haga lo siguiente:

Verificar la conectividad a nivel de red entre el clúster y el recurso cliente

Para minimizar la latencia, acceda a ElastiCache desde instancias de Amazon Elastic Compute Cloud (Amazon EC2). El acceso a Amazon ElastiCache desde otros recursos dentro de la misma Amazon Virtual Private Cloud (Amazon VPC) también ayuda a minimizar la latencia. Sin embargo, es posible conectarse desde fuera de la VPC, o incluso fuera de AWS.

Para más información sobre la conexión a ElastiCache, consulte lo siguiente:

Para automatizar el proceso de conexión, use el servicio VPC Network Access Analyzer para solucionar problemas de conectividad entre los recursos de AWS.

Verificar que los grupos de seguridad y las ACL de red permitan las conexiones

Realice este paso en el clúster de ElastiCache y en el recurso que está iniciando la conexión. Algunos ejemplos de recursos para clientes son:

  • Una instancia de Amazon EC2.
  • Una función AWS Lambda.
  • Un contenedor de Amazon Elastic Container Service (Amazon ECS) o Amazon Elastic Kubernetes Service (Amazon EKS), etc.

En ElastiCache, asegúrese de que los grupos de seguridad se configuren correctamente. Para otros recursos, verifique los grupos de seguridad y las ACL de red.

Confirmar el grupo de seguridad en el clúster de ElastiCache

1.    Seleccione el nombre del clúster en el menú de Redis clusters (clústeres de Redis), y luego seleccione la pestaña Network and security (Red y seguridad).

2.    Verifique que al menos uno de los grupos de seguridad asociados permite las conexiones entrantes desde el recurso cliente al clúster en el puerto del clúster.

3.    Para confirmar el número de puerto, compruebe cualquiera de los puntos de conexión del clúster. Los puntos de conexión tienen el formato domain_name:port.

Nota: El puerto del clúster es 6379/TCP de forma predeterminada. Puede anular el número de puerto durante la creación del clúster.

4.    En el recurso cliente, compruebe que los grupos de seguridad permiten las conexiones salientes al puerto del clúster y a los bloques CIDR de las subredes del clúster.

5.    Verifique que las ACL de red permiten las conexiones salientes y entrantes entre el cliente y el clúster. Las ACL de red predeterminadas suelen permitir todas las conexiones.

Nota: Puede utilizar el servicio VPC Network Access Analyzer para solucionar problemas de configuración de grupos de seguridad y ACL de red.

Identificar el punto de conexión correcto para las conexiones

Los puntos de conexión recomendados difieren entre las configuraciones de los clústeres. Para más información sobre cómo encontrar los puntos de conexión correctos y las posibles configuraciones, consulte Búsqueda de puntos de conexión.

Verificar que la resolución DNS funciona en el lado del cliente

Los problemas de DNS se suelen identificar por los mensajes de error Name or service not known (Nombre o servicio no conocido) y NXDOMAIN.

$ nslookup nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com
Server:         172.31.0.2
Address:        172.31.0.2#53

** server can't find nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com: NXDOMAIN
$ redis-cli -h nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com
Could not connect to Redis at nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com:6379: Name or service not known

Si ve los errores anteriores, compruebe los atributos DNS del recurso cliente de la VPC.

Se recomienda utilizar el servidor DNS de Amazon, si es posible. Para más información, consulte Servidor DNS de Amazon.

Verificar la conectividad TCP entre el cliente y Redis

Utilice el comando curl o telnet para establecer una conexión TCP y verificar la conectividad:

$ curl -v telnet://test.1234id.clustercfg.euw1.cache.amazonaws.com:6379
*  Trying 172.31.1.242:6379...
* Connected to test.1234id.clustercfg.euw1.cache.amazonaws.com (172.31.1.242) port 6379 (#0)

En el ejemplo anterior, la palabra clave Connected (Conectado) muestra que la conexión TCP funciona.

Si Connected (Conectado) no aparece en los resultados del comando, compruebe lo siguiente:

En el clúster de ElastiCache

  • Los grupos de seguridad deben permitir conexiones en el puerto del clúster. Verifique el valor del puerto en la página de configuración del clúster (el predeterminado es TCP/6379). Para más información, consulte Modificación de un clúster de ElastiCache.
  • El clúster y todos sus particiones y nodos deben estar en el estado disponible. Para más información, consulte Ver los detalles de un clúster.

En el recurso cliente

  • Los grupos de seguridad deben permitir las conexiones salientes a la IP y el puerto del clúster.
  • Las tablas de enrutamiento deben tener las rutas adecuadas para que se pueda acceder al clúster.
  • El recurso puede estar en la misma VPC. O, si el recurso está en otra VPC o fuera de AWS, asegúrese de que tiene la conexión apropiada configurada. Esta puede ser VPN o VPC-Peering, DirectLink, etc. Para más información, consulte Acceso al clúster o grupo de replicación.
    Nota: Amazon ElastiCache fue diseñado para que se acceda a él desde la misma VPC a fin de garantizar una baja latencia. Las conexiones fuera de la VPC generan una latencia adicional. Esta latencia adicional es especialmente común con las conexiones que usan la Internet pública, ya sea directamente o a través de la canalización. Debido a que Redis es muy sensible a la latencia, la latencia extra puede causar problemas de conectividad y de tiempo de espera.

El VPC Reachability Analyzer es una herramienta que ayuda a determinar qué es lo que bloquea el acceso.

Solución de problemas de conexión a clústeres con cifrado en tránsito

El cifrado en tránsito funciona al enviar el tráfico de Redis a través de TLS. El cliente debe tener soporte TLS para que la conexión funcione.

$ redis-cli -h encrypted.1234id.clustercfg.euw1.cache.amazonaws.com

Si tiene redis-cli instalado y es compatible con TLS, agregue el argumento —tls al comando:

$ redis-cli -h encrypted.1234id.clustercfg.euw1.cache.amazonaws.com --tls
encrypted.1234id.clustercfg.euw1.cache.amazonaws.com:6379>

Si redis-cli se compiló sin soporte para TLS, aparece el siguiente error:

$ redis-cli -h encrypted.1234id.clustercfg.euw1.cache.amazonaws.com --tls
Unrecognized option or bad number of args for: '--tls'

Para solucionar el error anterior, haga una de las siguientes acciones:

Se recomienda compilar redis-cli con soporte para TLS si va a utilizar redis-cli más adelante. Para conocer los pasos correspondientes a Amazon Linux 2 y Amazon Linux, consulte Descargar e instalar redis-cli en el Paso 4: Conéctarse al nodo del clúster.

De forma alternativa, realice lo siguiente:

Utilice un comando alternativo, como openssl. El comando openssl se encuentra disponible en la mayoría de los sistemas y es útil si no se dispone de un redis-cli con soporte TLS. El siguiente es un ejemplo del comando openssl:

$ openssl s_client -connect encrypted.1234id.clustercfg.euw1.cache.amazonaws.com:6379
CONNECTED(00000003)
----- omitted --------
INFO
# Server
redis_version:6.2.6
----- omitted -----

Para más información, consulte la sección Conectar con un clúster con cifrado/autenticación habilitado en el Paso 4: Conectar con el nodo del clúster.

Solución de problemas de conexión a clústeres con autenticación

redis-cli

Todos los clústeres con autenticación requieren TLS. El comando redis-cli requiere los argumentos --tls y --askpass (o -a).

Si no se proporciona el argumento --askpass, recibirá la siguiente salida:

$ redis-cli -h auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com --tls
auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com:6379> INFO # or any other Redis command
NOAUTH Authentication required.

Si el comando contiene una contraseña incorrecta, entonces recibirá la siguiente salida:

$ redis-cli -h auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com --tls --askpass
Please input password: *************
Warning: AUTH failed

El siguiente es un ejemplo de un comando de Redis con la contraseña correcta que funcionó como se esperaba:

$ redis-cli -h auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com --tls --askpass
Please input password: ******************
auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com:6379> INFO
# Server
redis_version:6.2.6
----- omitted -----

openssl

Puede probar la conectividad con el comando openssl. Utilice este comando solo para fines de depuración:

$ openssl s_client -connect master.auth-cluster.3i1yig.euw1.cache.amazonaws.com:6379
CONNECTED(00000003)
----- omitted -----
---
AUTH topsecretpassword
+OK
INFO
# Server
redis_version:6.2.6
----- omitted -----

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?