Pourquoi ne puis-je pas me connecter à mon cluster ElastiCache pour Redis ?

Lecture de 9 minute(s)
0

Je n'arrive pas à me connecter à mon cluster Amazon ElastiCache pour Redis. Comment puis-je résoudre ce problème ?

Brève description

Les problèmes de connectivité peuvent avoir plusieurs causes profondes. Les problèmes les plus courants sont les suivants :

  • Le cluster n'est pas prêt.
  • Le cluster n'est pas sain.
  • La configuration réseau est incorrecte.
  • La configuration du client est incorrecte.

Solution

Vérifiez que le cluster est prêt

Si vous avez récemment créé le cluster, vérifiez que la création du cluster est terminée et que le cluster est prêt à accepter des connexions.

Vérifiez l'état du cluster à l'aide de la console ElastiCache, de AWS Command Line Interface (Interface de ligne de commande AWS) (AWS CLI) ou de l'API ElastiCache. Consultez la colonne État pour connaître les éléments suivants :

  • Si la colonne État indique Disponible, le cluster est prêt.
  • Si la colonne Statut indique Création de, la création du cluster est toujours en cours. Patientez quelques minutes jusqu'à ce qu'il soit mis à jour sur Disponible.
  • Si la colonne Statut indique Modifier, la configuration du cluster est mise à jour. Patientez quelques minutes jusqu'à ce que les modifications soient terminées et que le statut passe à Disponible.

Vérifiez que le cluster est sain

Dans un cluster sain, chaque nœud doit être à l'état Disponible. Pour vérifier l'intégrité du cluster, procédez comme suit :

Vérifiez la connectivité au niveau du réseau entre le cluster et la ressource client

Pour minimiser la latence, accédez à ElastiCache à partir des instances Amazon Elastic Compute Cloud (Amazon EC2). L'accès à Amazon ElastiCache à partir d'autres ressources au sein du même Amazon Virtual Private Cloud (Amazon VPC) permet également de minimiser la latence. Cependant, il est possible de se connecter depuis l'extérieur du VPC, voire en dehors d'AWS.

Pour plus d'informations sur la connexion à ElastiCache, consultez les rubriques suivantes :

Pour automatiser le processus de connexion, utilisez le service VPC Network Access Analyzer pour résoudre les problèmes de connectivité entre les ressources AWS.

Vérifiez que les groupes de sécurité et les listes ACL réseau autorisent les connexions

Effectuez cette étape sur le cluster ElastiCache et sur la ressource qui initie la connexion. Voici des exemples de ressources pour les clients :

  • à une instance Amazon EC2
  • Fonction AWS Lambda
  • Un conteneur Amazon Elastic Container Service (Amazon ECS) ou Amazon Elastic Kubernetes Service (Amazon EKS), etc.

Dans ElastiCache, assurez-vous que les groupes de sécurité sont correctement configurés. Pour les autres ressources, vérifiez les groupes de sécurité et les listes ACL réseau.

Confirmez le groupe de sécurité sur le cluster ElastiCache

1.    Sélectionnez le nom du cluster dans le menu des clusters Redis, puis sélectionnez l'onglet Réseau et sécurité.

2.    Vérifiez qu'au moins un des groupes de sécurité associés autorise les connexions entrantes depuis la ressource client vers le cluster sur le port du cluster.

3.    Pour confirmer le numéro de port, vérifiez l'un des points de terminaison du cluster. Les points de terminaison sont au format domain_name:port.

Remarque : Le port du cluster est 6379/TCP par défaut. Vous pouvez remplacer le numéro de port lors de la création du cluster.

4.    Sur la ressource client, vérifiez que les groupes de sécurité autorisent les connexions sortantes vers le port du cluster et vers les blocs d'adresse CIDR des sous-réseaux du cluster.

5.    Vérifiez que les ACL réseau autorisent les connexions sortantes et entrantes entre le client et le cluster. Le réseau ACL par défaut autorisent généralement toutes les connexions.

Remarque : Vous pouvez utiliser le service VPC Network Access Analyseur (Analyseur d'accès réseau VPC) pour dépanner les configurations des groupes de sécurité et des listes ACL réseau.

Identifier le point de terminaison approprié pour les connexions

Les points de terminaison de connexion recommandés diffèrent selon les configurations de cluster. Pour plus d'informations sur la recherche des points de terminaison corrects et des configurations possibles, consultez la section Recherche de points de terminaison de connexion.

Vérifiez que la résolution DNS fonctionne côté client

Les problèmes DNS sont généralement identifiés par le nom ou le service inconnu et les messages d'erreur 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 les erreurs précédentes s'affichent, vérifiez les attributs DNS de la ressource client VPC.

Il est recommandé d'utiliser le serveur DNS Amazon, si possible. Pour en savoir plus, consultez Serveur Amazon DNS.

Vérifiez la connectivité TCP entre le client et Redis

Utilisez la commande curl ou telnet pour établir une connexion TCP et vérifier la connectivité :

$ 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)

Dans l'exemple précédent, le mot clé Connecté indique que la connexion TCP fonctionne.

Si Connecté n'apparaît pas dans les résultats de la commande, vérifiez les points suivants :

Sur le cluster ElastiCache

  • Les groupes de sécurité doivent autoriser les connexions sur le port du cluster. Vérifiez la valeur du port sur la page de configuration du cluster (TCP/6379 par défaut). Pour plus d'informations, voir Modification d'un cluster ElastiCache.
  • Le cluster et tous ses partitions et nœuds doivent être dans l'état disponible. Pour plus d'informations, consultez la section Affichage des détails d'un cluster.

Sur la ressource client

  • Les groupes de sécurité doivent autoriser les connexions sortantes vers l'adresse IP et le port du cluster.
  • Les tables de routage doivent avoir les routes appropriées pour que le cluster soit accessible.
  • La ressource peut se trouver dans le même VPC. Si la ressource se trouve dans un autre VPC ou en dehors d'AWS, assurez-vous qu'elle dispose de la connexion appropriée configurée. Il peut s'agir d'un VPN ou d'un appairage de VPC, de DirectLink, etc. Pour plus d'informations, consultez la section Accès à votre cluster ou groupe de réplication.
    Remarque : Amazon ElastiCache est conçu pour être accessible depuis le même VPC afin de garantir une faible latence. Les connexions en dehors du VPC introduisent une latence supplémentaire. Cette latence supplémentaire est particulièrement courante avec les connexions utilisant l'Internet public, soit directement, soit par tunneling. Redis étant très sensible à la latence, cette latence supplémentaire peut entraîner des problèmes de connectivité et d'expiration de délai.

LeVPC Reachability Analyzer (Analyseur d'accessibilité des VPC) est un outil qui permet de déterminer ce qui bloque l'accès.

Résoudre les problèmes de connexion aux clusters avec le chiffrement en transit

Le chiffrement en transit fonctionne en envoyant le trafic Redis via TLS. Le client doit prendre en charge TLS pour que la connexion fonctionne.

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

Si vous avez installé redis-cli et qu'il prend en charge TLS, ajoutez l'argument —tls à la commande :

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

Si redis-cli a été compilé sans prise en charge de TLS, le message d'erreur suivant s'affiche :

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

Pour résoudre ce problème, essayez l'une ou l'autre option suivante :

Il est recommandé de compiler redis-cli avec la prise en charge de TLS si vous comptez utiliser redis-cli ultérieurement. Pour connaître les étapes relatives à Amazon Linux 2 et Amazon Linux, consultez Télécharger et installer redis-cli dans Étape 4 : Connexion au nœud du cluster.

-ou-

Utilisez une autre commande, telle que openssl. La commande openssl est disponible sur la plupart des systèmes et est utile si un redis-cli avec prise en charge TLS n'est pas disponible. Voici un exemple de sortie de la commandeopenssl:

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

Pour plus d'informations, consultez la section Connexion à un cluster activé pour le chiffrement/l'authentification dans Étape 4 : Connexion au nœud du cluster.

Résoudre les problèmes de connexion aux clusters avec authentification

Redis-CLI

Tous les clusters avec authentification nécessitent TLS. La commande redis-cl i nécessite les arguments —tls et —askpass (ou -a).

Si l'argument —askpass n'est pas fourni, vous recevez le résultat suivant :

$ 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 la commande contient un mot de passe incorrect, le résultat suivant s'affiche :

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

Voici un exemple de commande Redis avec le mot de passe correct qui a fonctionné comme prévu :

$ 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

Vous pouvez tester la connectivité à l'aide de la commande openssl. Utilisez cette commande à des fins de débogage uniquement :

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

Pour plus d'informations, consultez la section Connexion à un cluster activé pour le chiffrement/l'authentification dans Étape 4 : Connexion au nœud du cluster.

Pour plus de détails sur le dépannage de la connectivité ElastiCache, consultez la sectionConnectivité.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans