Warum habe ich zeitweise Verbindungsprobleme mit meinem Amazon Redshift-Cluster?

Lesedauer: 7 Minute
0

Ich habe zeitweise Verbindungsprobleme, wenn ich versuche, eine Verbindung zu meinem Amazon Redshift-Cluster herzustellen. Warum passiert das und wie behebe ich das Problem?

Kurzbeschreibung

Zeitweise auftretende Verbindungsprobleme in Ihrem Amazon Redshift-Cluster werden durch Folgendes verursacht:

  • Eingeschränkter Zugriff für eine bestimmte IP-Adresse oder einen CIDR-Block
  • Aktualisierungen des Wartungsfensters
  • Knotenausfälle oder geplante Verwaltungsaufgaben
  • Rotationen des Verschlüsselungsschlüssels
  • Zu viele aktive Netzwerkverbindungen
  • Hohe CPU-Auslastung des Leader-Knotens
  • Verbindungsprobleme auf der Clientseite

Lösung

Eingeschränkter Zugriff für eine bestimmte IP-Adresse oder einen CIDR-Block

Prüfen Sie, ob in Ihrer Sicherheitsgruppe der Zugriff für eine bestimmte IP-Adresse oder einen bestimmten CIDR-Block eingeschränkt ist. Aufgrund der DHCP-Konfiguration kann sich Ihre Client-IP-Adresse ändern, was zu Verbindungsproblemen führen kann. Wenn Sie keine elastischen IP-Adressen für Ihren Amazon Redshift-Cluster verwenden, kann sich außerdem die von AWS verwaltete IP-Adresse Ihrer Clusterknoten ändern. Ihre IP-Adresse kann sich beispielsweise ändern, wenn Sie Ihren Cluster löschen und ihn dann aus einem Snapshot neu erstellen oder wenn Sie einen angehaltenen Cluster wieder aufnehmen.

Hinweis: Öffentliche IP-Adressen werden rotiert, wenn der Amazon Redshift-Cluster gelöscht und neu erstellt wird. Private IP-Adressen ändern sich, wenn Knoten ersetzt werden.

Um Netzwerkeinschränkungen zu beheben, sollten Sie die folgenden Ansätze in Betracht ziehen:

  • Wenn Ihre Anwendung die öffentliche IP-Adresse hinter einem Cluster-Endpunkt zwischenspeichert, stellen Sie sicher, dass Sie diesen Endpunkt für Ihre Amazon Redshift-Verbindung verwenden. Um die Stabilität und Sicherheit Ihrer Netzwerkverbindung zu gewährleisten, sollten Sie keinen DNS-Cache für Ihre Verbindung verwenden.
  • Es ist eine bewährte Methode, eine elastische IP-Adresse für Ihren Amazon Redshift-Cluster zu verwenden. Eine elastische IP-Adresse ermöglicht es Ihnen, Ihre zugrunde liegende Konfiguration zu ändern, ohne die IP-Adresse zu beeinflussen, die Clients für die Verbindung mit Ihrem Cluster verwenden. Dieser Ansatz ist hilfreich, wenn Sie einen Cluster nach einem Ausfall wiederherstellen. Weitere Informationen finden Sie unter Verwalten von Clustern in einer VPC.
  • Wenn Sie eine private IP-Adresse verwenden, um eine Verbindung zu einem Leader-Knoten oder Rechenknoten herzustellen, stellen Sie sicher, dass Sie die neue IP-Adresse verwenden. Wenn Sie beispielsweise eine SSH-Aufnahme durchgeführt haben oder über eine Amazon EMR-Konfiguration verfügen, die den Rechenknoten verwendet, aktualisieren Sie Ihre Einstellungen mit der neuen IP-Adresse. Nach einem Knotenwechsel wird neuen Knoten eine neue private IP-Adresse gewährt.

Aktualisierungen des Wartungsfensters

Überprüfen Sie das Wartungsfenster für Ihren Amazon Redshift-Cluster. Während eines Wartungsfensters kann Ihr Amazon Redshift-Cluster keine Lese- oder Schreibvorgänge verarbeiten. Wenn ein Wartungsereignis für eine bestimmte Woche geplant ist, beginnt es innerhalb des zugewiesenen 30-minütigen Wartungsfensters. Während Amazon Redshift Wartungsarbeiten durchführt, werden alle laufenden Abfragen oder sonstigen Vorgänge beendet. Sie können das Zeitfenster für geplante Wartungsarbeiten über die Amazon Redshift-Konsole ändern.

Knotenausfälle oder geplante Verwaltungsaufgaben

Suchen Sie in der Amazon Redshift-Konsole auf der Registerkarte Ereignisse nach Knotenausfällen oder geplanten Verwaltungsaufgaben (wie einer Änderung der Clustergröße oder einem Neustart).

Bei einem Hardwarefehler ist Amazon Redshift möglicherweise für einen kurzen Zeitraum nicht verfügbar, was zu fehlgeschlagenen Abfragen führen kann. Wenn eine Abfrage fehlschlägt, wird eine Ereignisbeschreibung wie die folgende angezeigt:

"A hardware issue was detected on Amazon Redshift cluster [cluster name]. A replacement request was initiated at [time]."

Oder wenn ein Kontoadministrator einen Neustart oder eine Größenänderung in Ihrem Amazon Redshift-Cluster geplant hat, können zeitweise Verbindungsprobleme auftreten. Ihre Ereignisbeschreibung enthält dann Folgendes:

"Cluster [cluster name] began restart at [time]."
"Cluster [cluster name] completed restart at [time]."

Weitere Informationen finden Sie unter Amazon Redshift-Ereigniskategorien und -meldungen.

Rotationen des Verschlüsselungsschlüssels

Überprüfen Sie Ihre Schlüsselverwaltungseinstellungen für Ihren Amazon Redshift-Cluster. Überprüfen Sie, ob Sie die Schlüsselverschlüsselung und die Schlüsselverschlüsselungsrotation von AWS Key Management Service (AWS KMS) verwenden.

Wenn Ihr Verschlüsselungsschlüssel aktiviert ist und der Verschlüsselungsschlüssel rotiert wird, ist Ihr Amazon Redshift-Cluster während dieser Zeit nicht verfügbar. Daraufhin erhalten Sie die folgende Fehlermeldung:

"pg_query(): Query failed: SSL SYSCALL error: EOF detected"

Die Häufigkeit Ihrer Schlüsselrotation hängt von den Richtlinien und Standards Ihrer Umgebung in Bezug auf Datensicherheit ab. Rotieren Sie die Schlüssel so oft wie nötig oder immer dann, wenn der verschlüsselte Schlüssel kompromittiert werden könnte. Stellen Sie außerdem sicher, dass Sie über einen wichtigen Managementplan verfügen, der sowohl Ihre Sicherheits- als auch Ihre Clusterverfügbarkeitsanforderungen erfüllt.

Zu viele aktive Verbindungen

In Amazon Redshift werden alle Verbindungen zu Ihrem Cluster an den Leader-Knoten gesendet, und es gibt ein Höchstlimit für aktive Verbindungen. Das maximale Limit, das Ihr Amazon Redshift-Cluster unterstützen kann, wird vom Knotentyp (und nicht von der Anzahl der Knoten) bestimmt.

Wenn in Ihrem Amazon Redshift-Cluster zu viele aktive Verbindungen vorhanden sind, erhalten Sie die folgende Fehlermeldung:

"[Amazon](500310) Invalid operation: connection limit "500" exceeded for non-bootstrap users"

Wenn Sie einen Fehler Ungültiger Vorgang beim Herstellen einer Verbindung zu Ihrem Amazon Redshift-Cluster erhalten, bedeutet dies, dass Sie das Verbindungslimit erreicht haben. Sie können die Anzahl der aktiven Verbindungen für Ihren Cluster überprüfen, indem Sie sich die Metrik DatabaseConnections in Amazon CloudWatch ansehen.

Wenn Sie einen Anstieg Ihrer Datenbankverbindungen feststellen, gibt es möglicherweise eine Reihe inaktiver Verbindungen in Ihrem Amazon Redshift-Cluster. Führen Sie die folgende SQL-Abfrage aus, um die Anzahl der inaktiven Verbindungen zu überprüfen:

select trim(a.user_name) as user_name, a.usesysid, a.starttime,
 datediff(s,a.starttime,sysdate) as session_dur, b.last_end,
datediff(s,case when b.last_end is not null then b.last_end else
a.starttime end,sysdate) idle_dur
 	FROM
	(select starttime,process,u.usesysid,user_name
	from stv_sessions s, pg_user u
	where
	s.user_name = u.usename
 	and u.usesysid>1
and process NOT IN (select pid from stv_inflight where userid>1
union select pid from stv_recents where status != 'Done' and
 userid>1)
	) a
	LEFT OUTER JOIN (select
userid,pid,max(endtime) as last_end from svl_statementtext where
 userid>1 and sequence=0 group by 1,2) b ON a.usesysid = b.userid AND
a.process = b.pid
	WHERE (b.last_end > a.starttime OR b.last_end is null)
	ORDER BY idle_dur;

Die Ausgabe sieht wie in diesem Beispiel aus:

process | user_name  | usesysid |      starttime      | session_dur | last_end | idle_dur
---------+------------+----------+---------------------+-------------+----------+----------
   14684 | myuser     |      100 | 2020-06-04 07:02:36 |           6 |          |        6
(1 row)

Wenn die inaktiven Verbindungen identifiziert wurden, kann die Verbindung mithilfe der folgenden Befehlssyntax beendet werden:

select pg_terminate_backend(process);

Die Ausgabe sieht wie in diesem Beispiel aus:

pg_terminate_backend
----------------------
                    1
(1 row)

Hohe CPU-Auslastung des Leader-Knotens

Alle Clients stellen über einen Leader-Knoten eine Verbindung zu einem Amazon Redshift-Cluster her. Eine hohe CPU-Auslastung des Leader-Knotens kann zu zeitweiligen Verbindungsproblemen führen.

Wenn Sie versuchen, eine Verbindung zu Ihrem Amazon Redshift-Cluster herzustellen und der Leader-Knoten viel CPU verbraucht, erhalten Sie die folgende Fehlermeldung:

"Error setting/closing connection"

Um zu überprüfen, ob Ihr Leader-Knoten eine hohe CPU-Auslastung erreicht hat, überprüfen Sie die Metrik CPUUtilization in Amazon CloudWatch. Weitere Informationen finden Sie unter Amazon Redshift-Metriken.

Verbindungsprobleme auf der Clientseite

Prüfen Sie, ob ein Verbindungsproblem zwischen dem Client (wie Workbench/J oder PostgreSQL) und dem Server (Ihrem Amazon Redshift-Cluster) besteht. Es kann zu einem clientseitigen Verbindungsreset kommen, wenn Ihr Client versucht, eine Anforderung von einem freigegebenen Port aus zu senden. Daher kann das Zurücksetzen der Verbindung zu zeitweiligen Verbindungsproblemen führen.

Um diese clientseitigen Verbindungsprobleme zu vermeiden, sollten Sie die folgenden Ansätze in Betracht ziehen:

  • Verwenden Sie die Keepalive-Funktion in Amazon Redshift, um zu überprüfen, ob die Verbindung zwischen dem Client und dem Server ordnungsgemäß funktioniert. Die Keepalive-Funktion verhindert auch, dass Verbindungslinks unterbrochen werden. Informationen zum Überprüfen oder Konfigurieren der Werte für Keepalive finden Sie unter Ändern der TCP/IP-Timeout-Einstellungen und Ändern der DSN-Timeout-Einstellungen.
  • Überprüfen Sie die maximale Übergangseinheit (MTU), wenn Ihre Abfragen zwar ausgeführt werden, aber im SQL-Client-Tool hängen bleiben. Manchmal werden die Abfragen aufgrund eines Paketverlusts in Amazon Redshift nicht angezeigt. Ein Paketverlust tritt auf, wenn die Netzwerkpfade zwischen zwei IP-Hosts unterschiedliche MTU-Größen aufweisen. Weitere Informationen zum Umgang mit Problemen mit dem Ablegen von Paketen finden Sie unter Abfragen scheinen zu hängen und erreichen den Cluster manchmal nicht.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren