¿Por qué no puedo conectarme a mi clúster de ElastiCache para Redis?
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:
- Compruebe el estado de cada nodo del clúster mediante la consola de ElastiCache, CLI de AWS o API de ElastiCache..
- Amazon ElastiCache también proporciona un registro de eventos que puede consultar para ver los eventos recientes en el clúster.
- Comprueba las métricas de CloudWatch para tener una visión general del estado del clúster. Para más información, consulte Mejores prácticas de supervisión con Amazon ElastiCache para Redis mediante Amazon CloudWatch.
- En caso de errores de hardware, instancia o software, Amazon ElastiCache intenta recuperar y restaurar el servicio para que funcione sin necesidad de que el usuario lo haga. Para asegurarse de que el servicio puede ejecutar la recuperación con una interrupción mínima, asegúrese de configurar correctamente el clúster y el cliente de Redis. Para obtener más información sobre los escenarios de error, consulte Minimización del tiempo de inactividad en ElastiCache para Redis con Multi-AZ.
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:
- Patrones de acceso para acceder a un clúster de ElastiCache en una VPC de Amazon
- Cómo acceder al clúster o al grupo de replicación
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 -----
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.
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 6 meses
- OFICIAL DE AWSActualizada hace 2 años