Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
RDSKonzepte und Terminologie von Proxys
Sie können das Verbindungsmanagement für Ihre und Amazon Aurora DB-Cluster mithilfe von RDS Proxy vereinfachen.
RDSDer Proxy verarbeitet den Netzwerkverkehr zwischen der Client-Anwendung und der Datenbank. Es tut dies auf aktive Weise, indem es das Datenbankprotokoll erfasst Anschließend passt er sein Verhalten an die SQL Operationen Ihrer Anwendung und die Ergebnismengen aus der Datenbank an.
RDSDer Proxy reduziert den Arbeitsspeicher und den CPU Overhead für die Verbindungsverwaltung in Ihrer Datenbank. Die Datenbank benötigt weniger Speicher und CPU Ressourcen, wenn Anwendungen viele Verbindungen gleichzeitig öffnen. Es erfordert auch keine Logik in Ihren Anwendungen, um Verbindungen zu schließen und wieder zu öffnen, die für eine lange Zeit inaktiv bleiben. Ebenso erfordert es weniger Anwendungslogik, um Verbindungen im Falle eines Datenbankproblems wiederherzustellen.
Die Infrastruktur für RDS Proxy ist hochverfügbar und wird über mehrere Availability Zones (AZs) bereitgestellt. Die Berechnung, der Arbeitsspeicher und der Speicher für RDS Proxy sind unabhängig vom Aurora-DB-Cluster Ihrer . Diese Trennung hilft, den Overhead auf Ihren Datenbankservern zu senken, sodass sie ihre Ressourcen für die Bereitstellung von Datenbank-Workloads einsetzen können. Die RDS Proxy-Rechenressourcen sind serverlos und werden automatisch auf der Grundlage Ihrer Datenbank-Arbeitslast skaliert.
Themen
Überblick über die RDS Proxy-Konzepte
RDSProxy verwaltet die Infrastruktur für das Verbindungspooling und die anderen Funktionen, die in den folgenden Abschnitten beschrieben werden. Die Proxys werden in der RDS Konsole auf der Seite Proxys dargestellt.
Jeder Proxy verarbeitet Verbindungen zu einer einzelnen , einem Aurora-DB-Cluster. Der Proxy bestimmt automatisch die aktuelle Writer-Instance für , die von Aurora bereitgestellt werden.
Die Verbindungen, die ein Proxy offen hält und für Ihre Datenbankanwendungen verfügbar hält, bilden den Verbindungspool.
Standardmäßig kann RDS Proxy eine Verbindung nach jeder Transaktion in Ihrer Sitzung wiederverwenden. Diese Wiederverwendung auf Transaktionsebene wird als Multiplexing bezeichnet. Wenn RDS Proxy vorübergehend eine Verbindung aus dem Verbindungspool entfernt, um sie wiederzuverwenden, wird dieser Vorgang als Ausleihen der Verbindung bezeichnet. Wenn dies sicher ist, gibt RDS Proxy diese Verbindung wieder an den Verbindungspool zurück.
In einigen Fällen kann RDS Proxy nicht sicher sein, ob es sicher ist, eine Datenbankverbindung außerhalb der aktuellen Sitzung wiederzuverwenden. In diesen Fällen bleibt die Sitzung auf derselben Verbindung erhalten, bis die Sitzung beendet ist. Dieses Fallback-Verhalten wird als Fixierung (Pinning) bezeichnet.
Ein Proxy hat einen Standard-Endpunkt. Sie stellen eine Verbindung zu diesem Endpunkt her, wenn Sie mit einer Aurora Aurora-DB-Cluster — arbeiten. Sie tun dies, anstatt eine Verbindung mit dem Lese-/Schreib-Endpunkt herzustellen, der direkt mit dem Cluster verbunden wird. Die speziellen Endpunkte für einen Aurora-Cluster stehen Ihnen weiterhin zur Verfügung. Für Aurora-DB-Cluster RDS können Sie auch zusätzliche Lese-/Schreib- und schreibgeschützte Endpunkte erstellen. Weitere Informationen finden Sie unter Überblick über Proxy-Endpunkte.
Sie können beispielsweise weiterhin eine Verbindung zum Clusterendpunkt für Verbindungen mit Lese-/Schreibzugriff ohne Verbindungspooling herstellen. Sie können weiterhin eine Verbindung zum Leser-Endpunkt für schreibgeschützte Verbindungen mit Lastenausgleich herstellen. Sie können weiterhin eine Verbindung zu den Instance-Endpunkten für die Diagnose und Behebung von Fehlern in bestimmten DB-Instances innerhalb eines Clusters herstellen. Wenn Sie andere AWS Dienste verwenden, z. B. AWS Lambda um eine Verbindung zu RDS Datenbanken herzustellen, ändern Sie deren Verbindungseinstellungen, sodass der Proxy-Endpunkt verwendet wird. Sie geben beispielsweise den Proxy-Endpunkt an, um Lambda-Funktionen den Zugriff auf Ihre Datenbank zu ermöglichen und gleichzeitig die RDS Proxy-Funktionalität zu nutzen.
Jeder Proxy enthält eine Zielgruppe. Diese Zielgruppe verkörpert den Aurora-DB-Cluster der , zu dem der Proxy eine Verbindung herstellen kann. Bei einem Aurora-Cluster ist die Zielgruppe standardmäßig allen DB-Instances in diesem Cluster zugeordnet. Auf diese Weise kann sich der Proxy mit jeder Aurora-DB-Instance verbinden, die zur Writer-Instance im Cluster hochgestuft wird. Der mit einem Proxy verknüpfte Aurora-DB-Cluster der wird als Ziele dieses Proxys bezeichnet. Der Einfachheit halber erstellt Proxy beim Erstellen eines RDS Proxys über die Konsole auch die entsprechende Zielgruppe und registriert die zugehörigen Ziele automatisch.
Eine Engine-Familie ist eine verwandte Gruppe von Datenbank-Engines, die dasselbe DB-Protokoll verwenden. Sie wählen die Engine-Familie für jeden Proxy, den Sie erstellen.
Verbindungspooling
Jeder Proxy führt ein Verbindungspooling für die Writer-Instance seiner zugehörigen Aurora DB durch. Das Verbindungspooling ist eine Optimierung, die den Overhead reduziert, der mit dem Öffnen und Beenden von Verbindungen und dem Vorhandensein vieler aktiver Verbindungen gleichzeitig verbunden ist. Dieser Overhead umfasst den Arbeitsspeicher, der für die Verarbeitung jeder neuen Verbindung erforderlich ist. Es ist auch mit CPU Mehraufwand verbunden, jede Verbindung zu schließen und eine neue zu öffnen. Beispiele hierfür sind Transport Layer Security/Secure Sockets Layer (TLS/SSL), Handshaking, Authentifizierung, Verhandlungsmöglichkeiten usw. Das Verbindungspooling vereinfacht Ihre Anwendungslogik. Sie müssen keinen Anwendungscode schreiben, um die Anzahl gleichzeitig geöffneter Verbindungen zu minimieren.
Jeder Proxy führt darüber hinaus Verbindungsmultiplexing aus, auch bekannt als Wiederverwendung von Verbindungen. Beim Multiplexing führt der RDS Proxy alle Operationen für eine Transaktion mithilfe einer zugrunde liegenden Datenbankverbindung aus. RDSkann dann eine andere Verbindung für die nächste Transaktion verwenden. Sie können viele gleichzeitige Verbindungen zum Proxy öffnen und der Proxy hält eine geringere Anzahl von Verbindungen zur DB-Instance oder zum Cluster offen. Dadurch wird der Speicher-Overhead für Verbindungen auf dem Datenbankserver weiter minimiert. Diese Technik reduziert auch die Wahrscheinlichkeit des Fehlers "zu viele Verbindungen".
RDSProxy-Sicherheit
RDSDer Proxy verwendet die vorhandenen RDS Sicherheitsmechanismen wieTLS/SSLund AWS Identity and Access Management (IAM). Allgemeine Informationen zu diesen Sicherheitsfunktionen finden Sie unter Sicherheit in Amazon Aurora. Machen Sie sich außerdem mit der Funktionsweise von Aurora in Bezug auf Authentifizierung, Autorisierung und andere Sicherheitsbereiche vertraut.
RDSDer Proxy kann als zusätzliche Sicherheitsebene zwischen Client-Anwendungen und der zugrunde liegenden Datenbank dienen. Sie können beispielsweise mit TLS 1.3 eine Verbindung zum Proxy herstellen, auch wenn die zugrunde liegende DB-Instance eine ältere Version von unterstütztTLS. Sie können mithilfe einer IAM Rolle eine Verbindung zum Proxy herstellen. Dies gilt auch dann, wenn der Proxy mithilfe der nativen Benutzer- und Passwortauthentifizierungsmethode eine Verbindung mit der Datenbank herstellt. Mit dieser Technik können Sie hohe Authentifizierungsanforderungen für Datenbankanwendungen ohne einen kostspieligen Migrationsaufwand für die DB-Instances selbst erzwingen.
Sie speichern die vom RDS Proxy verwendeten Datenbankanmeldeinformationen in AWS Secrets Manager. Jeder Datenbankbenutzer für den Aurora-DB-Cluster der , auf den ein Proxy zugreift, muss über ein entsprechendes Geheimnis in Secrets Manager verfügen. Sie können auch die IAM Authentifizierung für Benutzer von RDS Proxy einrichten. Auf diese Weise können Sie die IAM Authentifizierung für den Datenbankzugriff erzwingen, auch wenn die Datenbanken die systemeigene Passwortauthentifizierung verwenden. Es wird empfohlen, diese Sicherheitsfunktionen zu verwenden, anstatt Datenbankanmeldeinformationen in Ihren Anwendungscode einzubetten.
TLS/SSLmit RDS Proxy verwenden
Sie können mit dem SSL ProtokollTLS/eine Verbindung zum RDS Proxy herstellen.
Anmerkung
RDSDer Proxy verwendet Zertifikate von AWS Certificate Manager (ACM). Wenn Sie RDS Proxy verwenden, müssen Sie keine RDS Amazon-Zertifikate herunterladen oder Anwendungen aktualisieren, die RDS Proxy-Verbindungen verwenden.
Um dies TLS für alle Verbindungen zwischen dem Proxy und Ihrer Datenbank durchzusetzen, können Sie beim Erstellen oder Ändern eines Proxys in der die Einstellung Transport Layer Security erforderlich angeben AWS Management Console.
RDSDer Proxy kann auch sicherstellen, dass Ihre SitzungTLS/SSLzwischen Ihrem Client und dem RDS Proxy-Endpunkt verwendet. Damit RDS Proxy dies tun kann, geben Sie die Anforderung auf der Clientseite an. SSLSitzungsvariablen werden nicht für SSL Verbindungen zu einer Datenbank über RDS Proxy festgelegt.
-
Geben Sie Aurora My SQL die Anforderung auf der Clientseite mit dem
--ssl-mode
Parameter an, wenn Sie denmysql
Befehl ausführen. -
Geben Sie bei und Aurora Postgre
sslmode=require
als Teil derconninfo
Zeichenfolge anSQL, wenn Sie den Befehl ausführen.psql
RDSDer Proxy unterstützt die TLS Protokollversionen 1.0, 1.1, 1.2 und 1.3. Sie können eine Verbindung zum Proxy herstellen, indem Sie eine höhere Version von verwenden TLS als die, die Sie in der zugrunde liegenden Datenbank verwenden.
Standardmäßig stellen Client-Programme eine verschlüsselte Verbindung mit dem RDS Proxy her. Weitere Steuerungsmöglichkeiten stehen über --ssl-mode
diese Option zur Verfügung. Auf der Client-Seite unterstützt RDS Proxy alle SSL Modi.
Für den Client sind die SSL Modi die folgenden:
- PREFERRED
-
SSList die erste Wahl, aber sie ist nicht erforderlich.
- DISABLED
-
Nein SSL ist erlaubt.
- REQUIRED
-
ErzwingenSSL.
- VERIFY_CA
-
Erzwingen SSL und verifizieren Sie die Zertifizierungsstelle (CA).
- VERIFY_IDENTITY
-
Erzwingen SSL und verifizieren Sie die Zertifizierungsstelle und den CA-Hostnamen.
Bei Verwendung eines Clients mit --ssl-mode
VERIFY_CA
oder VERIFY_IDENTITY
, geben Sie die Option --ssl-ca
an, die auf eine CA im .pem
-Format verweist. Laden Sie für die zu verwendende .pem
Datei alle Stammzertifizierungsstellen PEMs von Amazon Trust Services.pem
Datei.
RDSDer Proxy verwendet Wildcard-Zertifikate, die sowohl für eine Domain als auch für ihre Subdomains gelten. Wenn Sie den mysql
Client für die Verbindung mit dem SSL Modus verwendenVERIFY_IDENTITY
, müssen Sie derzeit den My SQL mysql
8.0-kompatiblen Befehl verwenden.
Failover
Failover ist eine Funktion mit hoher Verfügbarkeit, die eine Datenbank-Instance durch eine andere ersetzt, wenn die ursprüngliche Instance nicht verfügbar ist. Ein Failover kann aufgrund eines Problems mit einer Datenbank-Instance auftreten. Er kann aber auch Teil normaler Wartungsverfahren sein, z. B. während eines Datenbank-Upgrades. Failover gilt für Aurora-DB-Cluster mit einer oder mehreren Reader-Instances zusätzlich zur Writer-Instance.
Wenn Sie eine Verbindung über einen Proxy herstellen, sind Ihre Anwendungen widerstandsfähiger gegenüber Datenbank-Failovers. Wenn die ursprüngliche DB-Instance nicht mehr verfügbar ist, stellt der RDS Proxy eine Verbindung zur Standby-Datenbank her, ohne dass inaktive Anwendungsverbindungen unterbrochen werden. Dies trägt dazu bei, den Failover-Prozess zu beschleunigen und zu vereinfachen. Dadurch wird Ihre Anwendung weniger beeinträchtigt als ein typischer Neustart oder ein Datenbankproblem.
Ohne RDS Proxy bedeutet ein Failover einen kurzen Ausfall. Während des Ausfalls können Sie im Failover keine Schreibvorgänge an der Datenbank ausführen. Alle vorhandenen Datenbankverbindungen werden unterbrochen und Ihre Anwendung muss sie erneut öffnen. Die Datenbank wird für neue Verbindungen und Schreiboperationen verfügbar, wenn eine schreibgeschützte DB-Instance anstelle einer nicht verfügbaren Instance hochgestuft wird.
Bei DB-Failovers akzeptiert RDS Proxy weiterhin Verbindungen mit derselben IP-Adresse und leitet Verbindungen automatisch zur neuen primären DB-Instance weiter. Clients, die eine Verbindung über RDS einen Proxy herstellen, sind nicht anfällig für Folgendes:
-
Verzögerungen bei der Übertragung von Domain Name System (DNS) beim Failover.
-
Lokales DNS Caching.
-
Verbindungszeitüberschreitungen.
-
Unsicherheit darüber, welche DB-Instance der aktuelle Writer ist.
-
Warten auf eine Abfrageantwort eines früheren Writers, die nicht verfügbar wurde, ohne Verbindungen zu schließen.
Bei Anwendungen, die ihren eigenen Verbindungspool verwalten, bedeutet die Verwendung eines RDS Proxys, dass die meisten Verbindungen auch bei Failovers oder anderen Störungen bestehen bleiben. Nur Verbindungen, die sich mitten in einer Transaktion oder SQL Abrechnung befinden, werden storniert. RDSDer Proxy akzeptiert sofort neue Verbindungen. Wenn der Datenbank-Writer nicht verfügbar ist, stellt RDS Proxy eingehende Anfragen in eine Warteschlange.
Für Anwendungen, die keine eigenen Verbindungspools verwalten, bietet RDS Proxy schnellere Verbindungsraten und mehr offene Verbindungen. Es reduziert den teuren Overhead, der mit dem häufigen Herstellen neuer Verbindungen über die Datenbank verbunden ist. Dies geschieht durch die Wiederverwendung von Datenbankverbindungen, die im RDS Proxy-Verbindungspool verwaltet werden. Dieser Ansatz ist besonders wichtig für TLS Verbindungen, bei denen die Einrichtungskosten erheblich sind.
Transaktionen
Alle Anweisungen innerhalb einer einzelnen Transaktion verwenden immer dieselbe zugrunde liegende Datenbankverbindung. Die Verbindung wird für eine andere Sitzung verfügbar, wenn die Transaktion beendet wird. Die Verwendung der Transaktion als Granularitätseinheit hat folgende Auswirkungen:
-
Die Wiederverwendung von Verbindungen kann nach jeder einzelnen Anweisung erfolgen, wenn die SQL
autocommit
Einstellung Aurora My aktiviert ist. -
Ist die Einstellung
autocommit
deaktiviert, beginnt im Gegensatz dazu die erste Anweisung, die Sie in einer Sitzung ausgeben, eine neue Transaktion. Nehmen wir beispielsweise an, Sie geben eine Folge vonSELECT
,INSERT
UPDATE
, und anderen Anweisungen in der Datenmanipulationssprache (DML) ein. In diesem Fall wird die Wiederverwendung von Verbindungen erst vorgenommen, wenn Sie einenCOMMIT
,ROLLBACK
ausgeben oder die Transaktion anderweitig beenden. -
Die Eingabe einer Anweisung zur Datendefinitionssprache (DDL) führt dazu, dass die Transaktion beendet wird, nachdem diese Anweisung abgeschlossen ist.
RDSDer Proxy erkennt anhand des Netzwerkprotokolls, das von der Datenbank-Client-Anwendung verwendet wird, wenn eine Transaktion endet. Die Transaktionserkennung stützt sich nicht auf Schlüsselwörter wie COMMIT
oder solche, die im Text der SQL Anweisung ROLLBACK
vorkommen.
In einigen Fällen erkennt der RDS Proxy möglicherweise eine Datenbankanforderung, sodass es nicht praktikabel ist, Ihre Sitzung auf eine andere Verbindung zu verschieben. In diesen Fällen wird das Multiplexing für diese Verbindung während der verbleibenden Sitzung deaktiviert. Dieselbe Regel gilt, wenn der RDS Proxy nicht sicher sein kann, ob Multiplexing für die Sitzung praktikabel ist. Diese Operation wird als Fixierung (Pinning) bezeichnet. Hinweise zum Erkennen und Minimieren von Fixierungen finden Sie unter Vermeiden Sie das Anheften eines Proxys RDS.