Warum kann ich keine Verbindung zu meinem ElastiCache-für-Redis-Cluster herstellen?

Lesedauer: 8 Minute
0

Ich kann keine Verbindung zu meinem Cluster in Amazon ElastiCache für Redis herstellen. Wie kann ich dieses Problem beheben?

Kurzbeschreibung

Konnektivitätsprobleme können mehrere Ursachen haben. Die häufigsten Probleme sind:

  • Der Cluster ist nicht bereit.
  • Der Cluster ist fehlerhaft.
  • Die Netzwerkkonfiguration ist falsch.
  • Die Benutzerkonfiguration ist falsch.

Lösung

Stellen Sie sicher, dass der Cluster bereit ist

Wenn Sie den Cluster kürzlich erstellt haben, stellen Sie sicher, dass die Clustererstellung abgeschlossen ist und dass der Cluster bereit ist, Verbindungen zu akzeptieren.

Überprüfen Sie den Status des Clusters mithilfe der ElastiCache-Konsole, der AWS Command Line Interface (AWS CLI) oder der ElastiCache-API. Überprüfen Sie die Spalte Status auf Folgendes:

  • Wenn in der Spalte Status Available angezeigt wird, ist der Cluster bereit.
  • Wenn in der Spalte Status Creating angezeigt wird, ist die Clustererstellung noch nicht abgeschlossen. Warten Sie ein paar Minuten, bis der Status auf Available aktualisiert wird.
  • Wenn in der Spalte Status Modifying angezeigt wird, wird die Konfiguration des Clusters aktualisiert. Warten Sie einige Minuten, bis die Änderungen abgeschlossen sind und sich der Status auf Available ändert.

Stellen Sie sicher, dass der Cluster fehlerfrei ist

In einem fehlerfreien Cluster sollte sich jeder einzelne Knoten im Status Available befinden. Gehen Sie wie folgt vor, um den Zustand des Clusters zu überprüfen:

Überprüfen Sie die Konnektivität auf Netzwerkebene zwischen dem Cluster und der Client-Ressource

Greifen Sie, um die Latenz zu minimieren, von Instances der Amazon Elastic Compute Cloud (Amazon EC2) auf ElastiCache zu. Der Zugriff auf Amazon ElastiCache von anderen Ressourcen innerhalb derselben Amazon Virtual Private Cloud (Amazon VPC) trägt ebenfalls zur Minimierung der Latenz bei. Es ist jedoch möglich, eine Verbindung von außerhalb der VPC oder sogar außerhalb von AWS herzustellen.

Weitere Informationen zur Verbindung mit ElastiCache finden Sie in den folgenden Themen:

Um den Verbindungsprozess zu automatisieren, verwenden Sie den Service VPC Network Access Analyzer, um Verbindungsprobleme zwischen AWS-Ressourcen zu beheben.

Stellen Sie sicher, dass Sicherheitsgruppen und Netzwerk-ACLs Verbindungen zulassen

Führen Sie diesen Schritt auf dem ElastiCache-Cluster und der Ressource aus, die die Verbindung initiiert. Beispiele für Client-Ressourcen sind:

  • Eine Amazon-EC2-Instance.
  • Eine AWS-Lambda-Funktion.
  • Ein Container im Amazon Elastic Container Service (Amazon ECS) oder Amazon Elastic Kubernetes Service (Amazon EKS) usw.

Stellen Sie in ElastiCache sicher, dass die Sicherheitsgruppen korrekt konfiguriert sind. Überprüfen Sie für andere Ressourcen Sicherheitsgruppen und Netzwerk-ACLs.

Bestätigen Sie die Sicherheitsgruppe im ElastiCache-Cluster

1.    Wählen Sie den Cluster-Namen aus dem Redis-Cluster-Menü aus und wählen Sie dann die Registerkarte Netzwerk und Sicherheit.

2.    Stellen Sie sicher, dass mindestens eine der zugehörigen Sicherheitsgruppen eingehende Verbindungen von der Client-Ressource zum Cluster am Port des Clusters zulässt.

3.    Überprüfen Sie einen der Endpunkte des Clusters, um die Portnummer zu bestätigen. Die Endpunkte haben das Format domain_name:port.

Hinweis: Der Port des Clusters ist standardmäßig 6379/TCP. Sie können die Portnummer bei der Clustererstellung überschreiben.

4.    Stellen Sie auf der Client-Ressource sicher, dass die Sicherheitsgruppen ausgehende Verbindungen zum Port des Clusters und zu den CIDR-Blöcken der Cluster-Subnetze zulassen.

5.    Stellen Sie sicher, dass die Netzwerk-ACLs ausgehende und eingehende Verbindungen zwischen dem Client und dem Cluster zulassen. Die Standard-Netzwerk-ACLs lassen normalerweise alle Verbindungen zu.

Hinweis: Sie können den Service VPC Network Access Analyzer verwenden, um Sicherheitsgruppen- und Netzwerk-ACL-Konfigurationen zu behandeln.

Ermitteln Sie den richtigen Endpunkt für Verbindungen

Die empfohlenen Verbindungsendpunkte unterscheiden sich zwischen den Cluster-Konfigurationen. Weitere Informationen zum Ermitteln der richtigen Endpunkte und möglichen Konfigurationen finden Sie unter Verbindungsendpunkte ermitteln.

Überprüfen Sie, ob die DNS-Auflösung auf der Clientseite funktioniert

DNS-Probleme werden häufig durch Fehlermeldungen wie Name oder Service nicht bekannt und NXDOMAIN angezeigt.

$ 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

Wenn Sie die vorherigen Fehler sehen, überprüfen Sie die DNS-Attribute der VPC-Client-Ressource.

Eine bewährte Methode besteht darin, wenn möglich, den Amazon DNS-Server zu verwenden. Weitere Informationen dazu finden Sie unter Amazon-DNS-Server.

Überprüfen Sie die TCP-Konnektivität zwischen Client und Redis

Verwenden Sie den Befehl curl oder telnet, um eine TCP-Verbindung herzustellen und die Konnektivität zu überprüfen:

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

Im vorherigen Beispiel zeigt das Schlüsselwort Connected an, dass die TCP-Verbindung funktioniert.

Wenn Connected in den Befehlsergebnissen nicht angezeigt wird, überprüfen Sie Folgendes:

Im ElastiCache-Cluster

  • Sicherheitsgruppen müssen Verbindungen am Port des Clusters zulassen. Überprüfen Sie den Port-Wert auf der Cluster-Konfigurationsseite (Standard ist TCP/6379). Weitere Informationen finden Sie unter Ändern eines ElastiCache-Clusters.
  • Der Cluster und alle seine Shards und Knoten müssen sich im Status available befinden. Weitere Informationen finden Sie unter Anzeigen der Details eines Clusters.

Auf der Client-Ressource

  • Sicherheitsgruppen müssen ausgehende Verbindungen zur IP und zum Port des Clusters zulassen.
  • Routingtabellen müssen über die entsprechenden Routen verfügen, damit der Cluster erreichbar ist.
  • Die Ressource kann sich in derselben VPC befinden. Oder stellen Sie, wenn sich die Ressource in einer anderen VPC oder außerhalb von AWS befindet, sicher, dass die entsprechende Verbindung konfiguriert ist. Dies kann VPN oder VPC-Peering, DirectLink usw. sein. Weitere Informationen finden Sie unter Zugriff auf Ihren Cluster oder die Replikationsgruppe.
    Hinweis: Amazon ElastiCache ist für den Zugriff von derselben VPC aus konzipiert, um eine niedrige Latenz zu gewährleisten. Verbindungen außerhalb der VPC führen zu zusätzlicher Latenz. Diese zusätzliche Latenz tritt besonders häufig bei Verbindungen auf, die das öffentliche Internet entweder direkt oder durch Tunneln nutzen. Da Redis sehr latenzempfindlich ist, kann die zusätzliche Latenz Konnektivitäts- und Timeoutprobleme verursachen.

Der VPC Reachability Analyzer ist ein Tool, mit dem festgestellt werden kann, was den Zugriff blockiert.

Problembehandlung beim Verbinden mit Clustern mit Verschlüsselung während der Übertragung

Die Verschlüsselung während der Übertragung sendet Redis-Verkehr über TLS. Der Client muss über TLS-Unterstützung verfügen, damit die Verbindung funktioniert.

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

Wenn Sie redis-cli installiert haben und es TLS-Unterstützung hat, fügen Sie dem Befehl das Argument --tls hinzu:

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

Wenn redis-cli ohne TLS-Unterstützung erstellt wurde, wird der folgende Fehler angezeigt:

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

Führen Sie einen der folgenden Schritte aus, um den vorherigen Fehler zu beheben:

Es empfiehlt sich, redis-cli mit TLS-Unterstützung zu erstellen, wenn Sie redis-cli später verwenden möchten. Schritte für Amazon Linux 2 und Amazon Linux finden Sie unter Herunterladen und Installieren von redis-cli in Schritt 4: Herstellen einer Verbindung zu einem Cluster-Knoten.

-oder-

Verwenden Sie einen alternativen Befehl, z. B. openssl. Der Befehl openssl ist auf den meisten Systemen verfügbar und nützlich, wenn keine redis-cli mit TLS-Unterstützung verfügbar ist. Das Folgende ist ein Beispiel für den Befehl openssl:

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

Weitere Informationen finden Sie im Abschnitt Herstellen einer Verbindung mit einem Cluster mit aktivierter Verschlüsselung/Authentifizierung in Schritt 4: Herstellen einer Verbindung zu einem Cluster-Knoten.

Problembehandlung beim Verbinden mit Clustern mit Authentifizierung

redis-cli

Alle Cluster mit Authentifizierung benötigen TLS. Der Befehl redis-cli erfordert sowohl die Argumente --tls als auch --askpass (oder -a).

Wenn das Argument --askpass nicht angegeben wird, erhalten Sie die folgende Ausgabe:

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

Wenn der Befehl ein falsches Passwort enthält, erhalten Sie die folgende Ausgabe:

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

Das Folgende ist ein Beispiel für einen Redis-Befehl mit dem richtigen Passwort, der wie erwartet funktionierte:

$ 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

Sie können die Konnektivität mit dem Befehl openssl testen. Verwenden Sie diesen Befehl nur für Debugging-Zwecke:

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

Weitere Informationen finden Sie im Abschnitt Herstellen einer Verbindung mit einem Cluster mit aktivierter Verschlüsselung/Authentifizierung in Schritt 4: Herstellen einer Verbindung zu einem Cluster-Knoten.

Weitere Informationen zur Problembehandlung bei der ElastiCache-Konnektivität finden Sie unter Problembehandlung.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren