Verbindung zu einem Cluster von außerhalb seiner VPC herstellen

Wenn Sie von Anwendungen, die außerhalb des konfigurierten Virtual Private Cloud-Netzwerks (VPC) ausgeführt werden, z. B. von lokalen Umgebungen, anderen Cloud-Anbietern oder separaten VPC-Netzwerken, eine Verbindung zu einem AlloyDB for PostgreSQL-Cluster herstellen möchten, können Sie den Traffic über eine zwischengeschaltete virtuelle Maschine (VM), Cloud VPN oder Cloud Interconnect weiterleiten. Bevor Sie beginnen, sollten Sie einen AlloyDB-Cluster erstellt haben.

Externe Verbindungen

Ihr AlloyDB-Cluster besteht aus mehreren Knoten in einem VPC-Netzwerk vonGoogle Cloud . Wenn Sie einen Cluster erstellen, können Sie den Zugriff auf private Dienste zwischen einem Ihrer VPC-Netzwerke und dem von Google verwalteten VPC-Netzwerk konfigurieren, das Ihren neuen Cluster enthält. Über diese Peering-Verbindung können Sie über private IP-Adressen auf Ressourcen im VPC-Netzwerk des Clusters zugreifen, als ob sie Teil Ihres eigenen VPC-Netzwerks wären.

In folgenden Situationen muss Ihre Anwendung von außerhalb dieses verbundenen VPC-Netzwerk eine Verbindung zu Ihrem Cluster herstellen:

  • Ihre Anwendung wird an anderer Stelle im Google Cloud -Ökosystem ausgeführt, außerhalb des VPC-Netzwerk, das Sie über den Zugriff auf private Dienste mit Ihrem Cluster verbunden haben.

  • Ihre Anwendung wird in einem VPC-Netzwerk ausgeführt, das sich außerhalb des Google-Netzwerks befindet.

  • Ihre Anwendung wird „lokal“ auf einem Computer ausgeführt, der sich an einem anderen Ort im öffentlichen Internet befindet.

In allen diesen Fällen müssen Sie einen zusätzlichen Dienst einrichten, um diese Art von externer Verbindung zu Ihrem AlloyDB-Cluster zu ermöglichen.

Zusammenfassung der Lösungen für externe Verbindungen

Je nach Ihren Anforderungen empfehlen wir zwei allgemeine Lösungen zum Herstellen externer Verbindungen:

In den nächsten Abschnitten werden diese Lösungen für externe Verbindungen ausführlich beschrieben.

Verbindung über eine intermediäre VM herstellen

Wenn Sie mit Open-Source-Tools und mindestens zusätzlichen Ressourcen eine Verbindung zu einem AlloyDB-Cluster von außerhalb seiner VPC herstellen möchten, führen Sie einen Proxy-Dienst auf einer zwischengeschalteten VM aus, die in dieser VPC eingerichtet ist. Sie können dafür eine neue VM einrichten oder eine VM verwenden, die bereits in der VPC Ihres AlloyDB-Clusters ausgeführt wird.

Als selbstverwaltete Lösung kostet die Verwendung einer zwischengeschalteten VM in der Regel weniger und hat eine schnellere Einrichtungszeit als die Verwendung eines Network Connectivity-Produkts. Sie hat auch Nachteile: Die Verfügbarkeit, Sicherheit und der Datendurchsatz der Verbindung hängen von der Zwischen-VM ab, die Sie als Teil Ihres Projekts verwalten müssen.

Verbindung über IAP herstellen

Mit Identity-Aware Proxy (IAP) können Sie sicher eine Verbindung zu Ihrem Cluster herstellen, ohne die öffentliche IP-Adresse der intermediären VM freigeben zu müssen. Sie verwenden eine Kombination aus Firewallregeln und Identity and Access Management (IAM), um den Zugriff über diese Route einzuschränken. Dies macht IAP zu einer guten Lösung für Nicht-Produktionsumgebungen wie Entwicklung und Prototyping.

So richten Sie den IAP-Zugriff auf Ihren Cluster ein:

  1. Installieren Sie die Google Cloud CLI auf Ihrem externen Client.

  2. Projekt für die TCP-Weiterleitung mit IAP vorbereiten

    Lassen Sie beim Definieren der neuen Firewallregel eingehenden TCP-Traffic an Port 22 (SSH) zu. Wenn Sie das Standardnetzwerk Ihres Projekts mit aktivierter vorkonfigurierter default-allow-ssh-Regel verwenden, gilt Folgendes: Sie müssen keine zusätzliche Regel definieren.

  3. Richten Sie die Portweiterleitung zwischen Ihrem externen Client und der zwischengeschalteten VM mit SSH über IAP ein.

    gcloud compute ssh my-vm \
           --tunnel-through-iap \
           --zone=ZONE_ID \
           --ssh-flag="-L PORT_NUMBER:ALLOYDB_IP_ADDRESS:5432"

    Ersetzen Sie Folgendes:

    • ZONE_ID: Die ID der Zone, in der sich der Cluster befindet, z. B. us-central1-a.
    • ALLOYDB_IP_ADDRESS: Die IP-Adresse der AlloyDB-Instanz, zu der Sie eine Verbindung herstellen möchten.
    • PORT_NUMBER: Die Portnummer Ihrer VM.
  4. Testen Sie die Verbindung auf Ihrem externen Client mit psql. Stellen Sie dabei eine Verbindung zum lokalen Port her, den Sie im vorherigen Schritt angegeben haben. So stellen Sie beispielsweise eine Verbindung als Nutzerrolle postgres zu Port 5432 her:

    psql -h localhost -p 5432 -U USERNAME

    Ersetzen Sie Folgendes:

    • USERNAME: Der PostgreSQL-Nutzer, der eine Verbindung zur Instanz herstellen soll, z. B. der Standardnutzer postgres.

Verbindung über einen SOCKS-Proxy herstellen

Das Ausführen eines SOCKS-Dienstes auf der intermediären VM bietet eine flexible und skalierbare Verbindung zu Ihrem AlloyDB-Cluster. Die Ende-zu-Ende-Verschlüsselung wird vom AlloyDB Auth-Proxy bereitgestellt. Mit der entsprechenden Konfiguration können Sie es für Produktionsarbeitslasten geeignet machen.

Diese Lösung umfasst folgende Schritte:

  1. Installieren, konfigurieren und führen Sie einen SOCKS-Server auf der intermediären VM aus. Ein Beispiel ist Dante, eine beliebte Open-Source-Lösung.

    Konfigurieren Sie den Server so, dass er sowohl für externe als auch für interne Verbindungen an die Netzwerkschnittstelle ens4 der VM gebunden ist. Geben Sie für interne Verbindungen einen beliebigen Port an.

  2. Konfigurieren Sie die Firewallregeln Ihrer VPC so, dass TCP-Traffic von der entsprechenden IP-Adresse oder dem entsprechenden Bereich zum konfigurierten Port des SOCKS-Servers zugelassen wird.

  3. Installieren Sie den AlloyDB Auth-Proxy auf dem externen Client.

  4. Führen Sie den AlloyDB Auth-Proxy auf Ihrem externen Client aus. Setzen Sie dabei die Umgebungsvariable ALL_PROXY auf die IP-Adresse der intermediären VM und geben Sie den Port an, den der SOCKS-Server verwendet.

    In diesem Beispiel wird der AlloyDB Auth-Proxy so konfiguriert, dass er über einen SOCKS-Server, der unter 198.51.100.1 auf Port 1080 ausgeführt wird, eine Verbindung zur Datenbank unter my-main-instance herstellt:

    ALL_PROXY=socks5://198.51.100.1:1080 ./alloydb-auth-proxy \
    projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

    Wenn Sie eine Verbindung von einem Peering-VPC-Netzwerk herstellen, können Sie die interne IP-Adresse der intermediären VM verwenden. Andernfalls verwenden Sie deren externe IP-Adresse.

  5. Testen Sie die Verbindung auf Ihrem externen Client mit psql und stellen Sie eine Verbindung zu dem Port her, den der AlloyDB Auth-Proxy überwacht. So stellen Sie beispielsweise eine Verbindung als Nutzerrolle postgres zu Port 5432 her:

    psql -h IP_ADDRESS -p PORT_NUMBER -U USERNAME

Verbindung über einen PostgreSQL-Pooler herstellen

Wenn Sie den AlloyDB Auth-Proxy anstelle eines externen Clients auf der intermediären VM installieren und ausführen müssen, können Sie sichere Verbindungen zu ihm aktivieren, indem Sie ihn mit einem protokollsensitiven Proxy, koppeln, auch als Pooler bekannt. Beliebte Open-Source-Pooler für PostgreSQL sind zum Beispiel Pgpool-II und PgBouncer.

In dieser Lösung führen Sie sowohl den AlloyDB Auth-Proxy als auch den Pooler auf der zwischengeschalteten VM aus. Ihr Client oder Ihre Anwendung kann dann direkt über SSL eine sichere Verbindung zum Pooler herstellen, ohne zusätzliche Dienste ausführen zu müssen. Der Pooler leitet PostgreSQL-Abfragen über den Auth-Proxy an Ihren AlloyDB-Cluster weiter.

Da jede Instanz in einem AlloyDB-Cluster eine separate interne IP-Adresse hat, kann jeder Proxydienst nur mit einer bestimmten Instanz kommunizieren: mit der primären Instanz, der Standby-Instanz oder einem Lesepool. Daher müssen Sie für jede Instanz im Cluster einen separaten Pooler-Dienst mit einem entsprechend konfigurierten SSL-Zertifikat ausführen.

Verbindung über Cloud VPN oder Cloud Interconnect herstellen

Für Produktionsarbeiten, die Hochverfügbarkeit (High Availability, HA) erfordern, empfehlen wir abhängig von den Anforderungen Ihres externen Dienstes und der Netzwerktopologie die Verwendung eines Google Cloud-Netzwerkverbindungsprodukts: entweder Cloud VPN oder Cloud Interconnect. Anschließend konfigurieren Sie Cloud Router, um die entsprechenden Routen zu bewerben.

Die Verwendung eines Network Connectivity-Produkts ist zwar aufwendiger als die Einrichtung einer Zwischen-VM, aber dieser Ansatz verlagert die Verantwortung für Betriebszeit und Verfügbarkeit von Ihnen auf Google. Insbesondere bietet HA VPN ein SLA von 99,99% und eignet sich daher für Produktionsumgebungen.

Mit Network Connectivity-Lösungen müssen Sie auch keine separate, sichere VM als Teil Ihrer Anwendung verwalten. So vermeiden Sie die Risiken eines Single Point of Failure, die mit diesem Ansatz verbunden sind.

Weitere Informationen zu diesen Lösungen finden Sie unter Netzwerkverbindungsprodukt auswählen.

Nächste Schritte