VPC-Peering konfigurieren

Mit VPC-Netzwerk-Peering können Sie Datastream privat mit Ressourcen in Ihrem VPC-Netzwerk (Virtual Private Cloud) kommunizieren lassen.

VPC-Netzwerk-Peering ist eine Verbindung zwischen Ihrem VPC-Netzwerk und dem privaten Datastream-Netzwerk. Dadurch kann Datastream über interne IP-Adressen mit internen Ressourcen kommunizieren. Die Verwendung privater Verbindungen stellt eine dedizierte Verbindung im Datastream-Netzwerk her, das heißt, keine anderen Kunden können sie nutzen.

Über die VPC-Netzwerk-Peering-Verbindung zwischen Ihrem VPC-Netzwerk und dem VPC-Netzwerk von Datastream kann Datastream eine Verbindung zu folgenden Ressourcen herstellen:

Über die VPC-Netzwerk-Peering-Verbindung zwischen Ihrem VPC-Netzwerk und dem VPC-Netzwerk von Datastream kann Datastream keine Verbindung zu folgenden Ressourcen herstellen:

  • Private Service Connect-Endpunkte in Ihrem VPC-Netzwerk.
  • Ressourcen in einem anderen VPC-Netzwerk, das mit Ihrem VPC-Netzwerk per Peering verbunden ist, aber nicht mit dem VPC-Netzwerk von Datastream. (Das liegt daran, dass VPC-Netzwerk-Peering kein transitives Routing bietet.)

Wenn Sie eine Verbindung zwischen Datastream und einer Ressource herstellen möchten, die nur über Ihr VPC-Netzwerk zugänglich ist, können Sie eine NAT-VM (Network Address Translation) in Ihrem VPC-Netzwerk verwenden. Ein häufiger Anwendungsfall für eine NAT-VM ist, wenn Datastream eine Verbindung zu einer Cloud SQL-Instanz herstellen muss.

Auf dieser Seite wird eine Beispielkonfiguration für eine NAT-VM beschrieben, mit der Datastream privat eine Verbindung zu einer Cloud SQL-Instanz herstellen kann.

Diagramm: Datastream-Nutzerfluss

Voraussetzungen für VPC-Peering

Bevor Sie eine Konfiguration für private Verbindungen erstellen, müssen Sie die folgenden Schritte ausführen, damit Datastream die VPC-Peering-Verbindung zu Ihrem Projekt herstellen kann:

  • Sie haben ein VPC-Netzwerk, das eine Peering-Verbindung zum privaten Netzwerk von Datastream herstellen kann und die auf der Seite VPC-Netzwerk-Peering beschriebenen Anforderungen erfüllt. Weitere Informationen zum Erstellen dieses Netzwerks finden Sie unter VPC-Netzwerk-Peering verwenden.
  • Sie haben einen verfügbaren IP-Bereich (mit einem CIDR-Block von /29) im VPC-Netzwerk. Dieser IP-Bereich darf nicht bereits als Subnetz, als vorab zugewiesener IP-Bereich für den Zugriff auf private Dienste oder in einer anderen Route als der Standardroute 0.0.0.0 enthalten sein. Der IP-Bereich darf sich auch nicht mit den von Datastream reservierten internen IP-Adressen (10.1.0.0/16 und 10.2.2.0/24) überschneiden. Datastream verwendet diesen IP-Bereich, um ein Subnetz zu erstellen, damit es mit der Quelldatenbank kommunizieren kann. In der folgenden Tabelle sind gültige IP-Bereiche aufgeführt.
Bereich Beschreibung
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Private IP-Adressen RFC 1918
100.64.0.0/10 Gemeinsam genutzter Adressraum RFC 6598
192.0.0.0/24 IETF-Protokollzuweisungen RFC 6890
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
Dokumentation RFC 5737
192.88.99.0/24 IPv6-zu-IPv4-Relay (veraltet) RFC 7526
198.18.0.0/15 Benchmark-Tests RFC 2544
  • Achten Sie darauf, dass alle Ressourcen in Ihrem VPC-Netzwerk, die mit Datastream kommunizieren (z. B. NAT-VMs, interne Load-Balancer oder Quell- und Zieldatenbanken), keine IP-Adressen in den Bereichen 10.1.0.0/16 oder 10.2.2.0/24 verwenden. Diese Bereiche sind für die interne Infrastruktur von Datastream reserviert. Wenn Sie sie für Ihre Ressourcen verwenden, kann dies zu Routingkonflikten und unvorhersehbaren Verbindungsfehlern führen.

  • Prüfen Sie, ob Google Cloud und die lokale Firewall Traffic aus dem ausgewählten IP-Bereich zulassen. Wenn nicht, erstellen Sie eine Firewallregel für eingehenden Traffic, die Traffic am Port der Quelldatenbank zulässt. Achten Sie darauf, dass der IPv4-Adressbereich in der Firewallregel mit dem IP-Adressbereich übereinstimmt, der beim Erstellen der Ressource für private Verbindungen zugewiesen wurde:

    gcloud compute firewall-rules create FIREWALL-RULE-NAME \
      --direction=INGRESS \
      --priority=PRIORITY \
      --network=PRIVATE_CONNECTIVITY_VPC \
      --project=VPC_PROJECT \
      --action=ALLOW \
      --rules=FIREWALL_RULES \
      --source-ranges=IP-RANGE
      

    Ersetzen Sie Folgendes:

    • FIREWALL-RULE-NAME: Der Name der zu erstellenden Firewallregel.
    • PRIORITY: Die Priorität der Regel als Ganzzahl zwischen 0 und 65535 (jeweils einschließlich). Der Wert muss niedriger sein als der Wert, der für die Regel zum Blockieren von Traffic festgelegt wurde, falls vorhanden. Niedrigere Prioritätswerte bedeuten eine höhere Priorität.
    • PRIVATE_CONNECTIVITY_VPC: Das VPC-Netzwerk, das eine Peering-Verbindung zu dem privaten Netzwerk von Datastream herstellen kann und die Anforderungen erfüllt, die auf der Seite VPC-Netzwerk-Peering beschrieben sind. Dies ist die VPC, die Sie beim Erstellen der Konfiguration für private Verbindungenangeben.
    • VPC_PROJECT: Das Projekt des VPC-Netzwerk.
    • FIREWALL_RULES: Die Liste der Protokolle und Ports, auf die die Firewallregel angewendet wird, z. B. tcp:80. Die Regel muss TCP-Traffic zur IP-Adresse und zum Port der Quelldatenbank oder des Proxys zulassen. Da private Verbindungen mehrere Datenbanken unterstützen können, muss die Regel die tatsächliche Nutzung Ihrer Konfiguration berücksichtigen.
    • IP-RANGE: Der Bereich der IP-Adressen, die Datastream für die Kommunikation mit der Quelldatenbank verwendet. Dies ist derselbe Bereich, den Sie beim Erstellen der Konfiguration für private Verbindungen im Feld IP-Bereich zuweisen angeben.

      Möglicherweise müssen Sie auch eine identische Firewallregel für ausgehenden Traffic erstellen, um Traffic zurück zu Datastream zuzulassen.

  • sind einer Rolle zugewiesen, die die Berechtigung compute.networks.list enthält. Mit dieser Berechtigung erhalten Sie die erforderlichen IAM-Berechtigungen, um VPC-Netzwerke in Ihrem Projekt aufzulisten. Welche Rollen diese Berechtigung enthalten, finden Sie in der Referenz für IAM-Berechtigungen.

Voraussetzungen für freigegebene VPC

Wenn Sie eine gemeinsam genutzte VPC verwenden, müssen Sie zusätzlich zu den im Abschnitt VPC-Voraussetzungen beschriebenen Schritten die folgenden Schritte ausführen:

  1. Im Dienstprojekt:

    1. Aktivieren Sie die Datastream API.
    2. Rufen Sie die für das Datastream Dienstkonto verwendete E-Mail-Adresse ab. Datastream-Dienstkonten werden erstellt, wenn Sie eine der folgenden Aktionen ausführen:

      • Sie erstellen eine Datastream-Ressource, z. B. ein Verbindungsprofil oder einen Stream.
      • Sie erstellen eine Konfiguration für private Verbindungen, wählen Ihre gemeinsam genutzte VPC aus und klicken auf Datastream-Dienstkonto erstellen. Das Dienstkonto wird im Hostprojekt erstellt.

      Die für das Datastream-Dienstkonto verwendete E-Mail-Adresse finden Sie auf der Startseite der Google Cloud console unter Projektnummer. Die E-Mail-Adresse des Dienstkontos lautet service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com.

  2. Im Hostprojekt:

    1. Gewähren Sie dem Datastream-Dienstkonto die IAM-Berechtigung (compute.networkAdmin). Diese Rolle ist nur erforderlich, wenn Sie das VPC-Peering erstellen. Nachdem das Peering eingerichtet wurde, benötigen Sie die Rolle nicht mehr.

      Wenn Ihre Organisation die Gewährung der Berechtigung nicht zulässt, erstellen Sie eine benutzerdefinierte Rolle mit den folgenden Mindestberechtigungen, um Ressourcen für private Verbindungen zu erstellen und zu löschen:

    Weitere Informationen zu benutzerdefinierten Rollen finden Sie unter Benutzerdefinierte Rollen erstellen und verwalten.

NAT-VM einrichten

  1. Ermitteln Sie die IP-Adresse der Cloud SQL-Instanz, mit der Datastream eine Verbindung herstellen muss.

  2. Ermitteln Sie Ihr VPC-Netzwerk. Dies ist das VPC-Netzwerk, das über VPC-Netzwerk-Peering mit dem VPC-Netzwerk von Datastream verbunden ist.

  3. Wenn Sie noch keine Konfiguration für private Verbindungen in Datastream erstellt haben, tun Sie das jetzt. Dadurch wird die VPC-Netzwerk-Peering-Verbindung erstellt, die Ihr VPC-Netzwerk und das VPC-Netzwerk von Datastream verbindet. Notieren Sie sich den IP-Adressbereich, der von der Konfiguration für private Verbindungen von Datastream verwendet wird.

  4. Wählen Sie einen Maschinentyp für die NAT-VM aus, die Sie im nächsten Schritt erstellen. Google Cloud erzwingt ein maximales Limit für die ausgehende Bandbreite pro Instanz, für Pakete, die von nächsten Hops in einem VPC-Netzwerk weitergeleitet werden, je nach Maschinentyp der VM-Instanz. Weitere Informationen finden Sie unter Ausgehender Traffic zu Zielen, die innerhalb eines VPC Netzwerks geroutet werden können und Maximale ausgehende Bandbreite pro Instanz.

  5. Erstellen Sie die NAT-VM in Ihrem VPC-Netzwerk. Wenn Sie die VM erstellen, müssen Sie die IP-Weiterleitung aktivieren. Weitere Informationen finden Sie unter IP-Weiterleitung für Instanzen aktivieren.

    Wenn Ihr VPC-Netzwerk ein freigegebene VPC-Netzwerk ist, können Sie die NAT-VM entweder im Hostprojekt oder in einem beliebigen Dienstprojekt erstellen, sofern sich die Netzwerkschnittstelle der NAT-VM im freigegebene VPC-Netzwerk befindet.

    • Um die Umlaufzeit des Netzwerks zu minimieren, erstellen Sie die NAT-VM in derselben Region wie Datastream.
    • In diesem Beispiel wird davon ausgegangen, dass die NAT-VM eine einzelne Netzwerkschnittstelle hat.
    • Führen Sie das Skript in einer Linux-Distribution aus, z. B. Debian 12.
    • Verwenden Sie das folgende Startskript. Das Startskript wird bei jedem Start der VM von root ausgeführt. Dieses Skript enthält Kommentare, in denen die Funktion jeder Zeile des Skripts erläutert wird. Ersetzen Sie im Skript CLOUD_SQL_INSTANCE_IP durch die IP-Adresse der Cloud SQL-Instanz und DATABASE_PORT durch den Ziel- Port, der von der Datenbanksoftware verwendet wird.
    #! /bin/bash
    
    export DB_ADDR=CLOUD_SQL_INSTANCE_IP
    export DB_PORT=DATABASE_PORT
    
    # Enable the VM to receive packets whose destinations do
    # not match any running process local to the VM
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # Ask the Metadata server for the IP address of the VM nic0
    # network interface:
    md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance"
    vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)"
    
    # Clear any existing iptables NAT table entries (all chains):
    iptables -t nat -F
    
    # Create a NAT table entry in the prerouting chain, matching
    # any packets with destination database port, changing the destination
    # IP address of the packet to the SQL instance IP address:
    iptables -t nat -A PREROUTING \
         -p tcp --dport $DB_PORT \
         -j DNAT \
         --to-destination $DB_ADDR
    
    # Create a NAT table entry in the postrouting chain, matching
    # any packets with destination database port, changing the source IP
    # address of the packet to the NAT VM's primary internal IPv4 address:
    iptables -t nat -A POSTROUTING \
         -p tcp --dport $DB_PORT \
         -j SNAT \
         --to-source $vm_nic_ip
    
    # Save iptables configuration:
    iptables-save
  6. Erstellen Sie eine Firewallregel zum Zulassen von eingehendem Traffic (oder eine Regel in einer globalen Netzwerk-Firewallrichtlinie, einer regionalen Netzwerk-Firewallrichtlinie oder einer hierarchischen Firewallrichtlinie) mit den folgenden Merkmalen:

    • Richtung: Eingehend
    • Aktion: Zulassen
    • Zielparameter: mindestens die NAT-VM
    • Quellparameter: der IP-Adressbereich, der von der Konfiguration für private Verbindungen von Datastream verwendet wird
    • Protokoll: TCP
    • Port: muss mindestens den DATABASE_PORT enthalten
  7. Die implizierte Firewallregel zum Zulassen von ausgehendem Traffic ermöglicht der NAT-VM, Pakete an ein beliebiges Ziel zu senden. Wenn Ihr VPC-Netzwerk Firewallregeln zum Ablehnen von ausgehendem Traffic verwendet, müssen Sie möglicherweise eine Firewallregel zum Zulassen von ausgehendem Traffic erstellen, damit die NAT-VM Pakete an die Cloud SQL-Instanz senden kann. Wenn eine Regel zum Zulassen von ausgehendem Traffic erforderlich ist, verwenden Sie diese Parameter:

    • Richtung: ausgehender Traffic
    • Aktion: Zulassen
    • Zielparameter: mindestens die NAT-VM
    • Zielparameter: die IP-Adresse der Cloud SQL-Instanz
    • Protokoll: TCP
    • Port: muss mindestens den DATABASE_PORT enthalten
  8. Achten Sie darauf, dass Sie Ihre Cloud SQL-Instanz so konfiguriert haben, dass Verbindungen von der primären internen IPv4-Adresse akzeptiert werden, die von der Netzwerkschnittstelle Ihrer NAT-VM verwendet wird. Eine Anleitung finden Sie in der Cloud SQL Dokumentation unter Mit autorisierten Netzwerken autorisieren.

  9. Erstellen Sie ein Verbindungsprofil in Datastream. Geben Sie in den Verbindungsdetails des Profils die primäre interne IPv4-Adresse der von Ihnen erstellten NAT-VM an. Geben Sie den Port der Quelldatenbank in das Portfeld des Verbindungsprofils ein.

Ein Paar NAT-VMs und einen internen Passthrough-Network Load Balancer einrichten

Um die Zuverlässigkeit einer NAT-VM-Lösung zu verbessern, können Sie die folgende Architektur verwenden, die ein Paar NAT-VMs und einen internen Passthrough-Network Load Balancer nutzt:

  1. Erstellen Sie zwei NAT-VMs in verschiedenen Zonen derselben Region. Folgen Sie der Anleitung unter NAT-VM einrichten, um jede VM zu erstellen, und platzieren Sie jede VM in einer eigenen zonal nicht verwalteten Instanzgruppe.

    Alternativ können Sie eine regionale verwaltete Instanzgruppe erstellen. Fügen Sie in die Vorlage für die verwaltete Instanzgruppe ein Startskript ein, z. B. das Beispiel-Startskript in der Anleitung unter NAT-VM einrichten .

  2. Erstellen Sie einen internen Passthrough-Network Load Balancer, dessen Backend-Dienst die Instanzgruppe oder -gruppen aus dem vorherigen Schritt als Back-Ends verwendet. Ein Beispiel für einen internen Passthrough-Network Load Balancer finden Sie unter Internen Passthrough-Network Load Balancer mit VM-Instanzgruppen Back-Ends einrichten.

    Beim Konfigurieren der Systemdiagnose des Load-Balancers können Sie eine TCP-Systemdiagnose verwenden, die einen TCP-Zielport verwendet, der mit dem DATABASE_PORT übereinstimmt. Systemdiagnosepakete werden gemäß der NAT-VM-Konfiguration an die CLOUD_SQL_INSTANCE_IP weitergeleitet. Alternativ können Sie einen lokalen Prozess auf der NAT-VM ausführen, der auf einem benutzerdefinierten Port auf eine TCP- oder HTTP-Systemdiagnose antwortet.

  3. Erstellen Sie Firewallregeln und konfigurieren Sie autorisierte Cloud SQL-Netzwerke wie in der Anleitung unter NAT-VM einrichten beschrieben. Achten Sie darauf, dass die autorisierten Cloud SQL-Netzwerke die primäre interne IPv4-Adresse beider NAT-VMs enthalten.

  4. Wenn Sie ein Datastream-Verbindungsprofil erstellen, geben Sie die IP-Adresse der Weiterleitungsregel des internen Passthrough-Network Load Balancers in den Verbindungsdetails des Profils an.

Nächste Schritte