VPC-Peering konfigurieren

Mit VPC-Netzwerk-Peering können Sie die private Kommunikation von Datastream mit Ressourcen in Ihrem VPC-Netzwerk (Virtual Private Cloud) ermöglichen. Über die VPC-Netzwerk-Peering-Verbindung zwischen Ihrem VPC-Netzwerk und dem VPC-Netzwerk von Datastream kann Datastream eine Verbindung zu folgenden Elementen herstellen:

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

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

Wenn Sie eine Verbindung zwischen Datastream und einer Ressource herstellen möchten, auf die nur über Ihr VPC-Netzwerk zugegriffen werden kann, 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 eine private Verbindung zu einer Cloud SQL-Instanz herstellen kann.

Diagramm: Datastream-Nutzerfluss

Voraussetzungen für das 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. Es darf sich nicht um einen IP-Bereich handeln, der bereits als Subnetz vorhanden ist, um einen vorab zugewiesenen IP-Bereich für den Zugriff auf private Dienste oder um eine Route (außer der Standardroute 0.0.0.0), die den IP-Bereich enthält. Datastream verwendet diesen IP-Bereich, um ein Subnetz zu erstellen, damit es mit der Quelldatenbank kommunizieren kann. In der folgenden Tabelle werden gültige IP-Bereiche beschrieben.
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 Gemeinsamer Adressbereich 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 (verworfen) RFC 7526
198.18.0.0/15 Benchmarktests RFC 2544
  • Prüfen Sie, ob Google Cloud und die lokale Firewall Traffic aus dem ausgewählten IP-Bereich zulassen. Falls nicht, erstellen Sie eine Firewallregel für eingehenden Traffic, die Traffic am Port der Quelldatenbank zulässt. Der IPv4-Adressbereich in der Firewallregel muss mit dem IP-Adressbereich übereinstimmen, der beim Erstellen der privaten Verbindungsressource 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, ausgedrückt als Ganzzahl zwischen 0 und 65.535 (jeweils einschließlich). Der Wert muss kleiner als der für die Blockierungsregel festgelegte Wert sein, sofern vorhanden. Je niedriger der Wert, desto höher die Priorität.
    • PRIVATE_CONNECTIVITY_VPC: Das VPC-Netzwerk, das mit dem privaten Netzwerk von Datastream verbunden werden kann und die auf der Seite VPC-Peering-Netzwerk beschriebenen Anforderungen erfüllt. Das ist das VPC, das Sie beim Erstellen der Konfiguration für private Verbindungen angeben.
    • VPC_PROJECT: Das Projekt des VPC-Netzwerks.
    • FIREWALL_RULES: Die Liste der Protokolle und Ports, auf die die Firewallregel angewendet wird, z. B. tcp:80. Die Regel muss TCP-Traffic an die IP-Adresse und den 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 IP-Adressbereich, über den Datastream mit der Quelldatenbank kommuniziert. Dies ist derselbe Bereich, den Sie im Feld IP-Bereich zuweisen angeben, wenn Sie die Konfiguration für die private Verbindung erstellen.

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

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

Voraussetzungen für freigegebene VPCs

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

  1. Im Dienstprojekt:

    1. Aktivieren Sie die Datastream API.
    2. Rufen Sie die für das Dienstkonto von Datastream 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.
      • Erstellen Sie eine Konfiguration für private Verbindungen, wählen Sie Ihre freigegebene VPC aus und klicken Sie auf Datastream-Dienstkonto erstellen. Das Dienstkonto wird im Hostprojekt erstellt.

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

  2. Für das Hostprojekt:

    1. Gewähren Sie dem Datastream-Dienstkonto die IAM-Rolle (Identity and Access Management) 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 die Berechtigung in Ihrer Organisation nicht gewährt werden kann, erstellen Sie eine benutzerdefinierte Rolle mit den folgenden Mindestberechtigungen zum Erstellen und Löschen von Ressourcen für private Verbindungen:

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

NAT-VM einrichten

  1. Geben Sie die IP-Adresse der Cloud SQL-Instanz an, zu der Datastream eine Verbindung herstellen muss.

  2. Geben Sie Ihr VPC-Netzwerk an. Das ist das VPC-Netzwerk, das über VPC-Netzwerk-Peering mit dem VPC-Netzwerk von Datastream verbunden ist.

  3. Erstellen Sie in Datastream eine Konfiguration für private Verbindungen, falls noch nicht geschehen. Dadurch wird die VPC-Netzwerk-Peering-Verbindung erstellt, die Ihr VPC-Netzwerk mit dem VPC-Netzwerk von Datastream verbindet. Notieren Sie sich den IP-Adressbereich, der von der Konfiguration für die private Datastream-Verbindung verwendet wird.

  4. Wählen Sie einen Maschinentyp für die NAT-VM aus, die Sie im nächsten Schritt erstellen.Google Cloud erzwingt eine maximale ausgehende Bandbreitenbeschränkung pro Instanz für Pakete, die von nächsten Hops innerhalb eines VPC-Netzwerks weitergeleitet werden, entsprechend dem Maschinentyp der VM-Instanz. Weitere Informationen finden Sie unter Ausgehende Verbindungen zu Zielen, die innerhalb eines VPC-Netzwerks routbar sind und Maximale ausgehende Bandbreite pro Instanz.

  5. Erstellen Sie die NAT-VM in Ihrem VPC-Netzwerk. Wenn Ihr VPC-Netzwerk ein freigegebenes VPC-Netzwerk ist, können Sie die NAT-VM entweder im Hostprojekt oder in einem beliebigen Dienstprojekt erstellen, solange sich die Netzwerkschnittstelle der NAT-VM im freigegebenen VPC-Netzwerk befindet.

    • Erstellen Sie die NAT-VM in derselben Region wie Datastream, um die Netzwerk-Rücklaufzeit zu minimieren.
    • In diesem Beispiel wird davon ausgegangen, dass die NAT-VM eine einzelne Netzwerkschnittstelle hat.
    • Führen Sie das Script 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 Script enthält Kommentare, in denen erläutert wird, was die einzelnen Zeilen des Scripts tun. Ersetzen Sie im Script CLOUD_SQL_INSTANCE_IP durch die IP-Adresse der Cloud SQL-Instanz und DATABASE_PORT durch den Zielport, 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 eingehenden Zugriffen (oder eine Regel in einer globalen Netzwerk-Firewallrichtlinie, regionalen Netzwerk-Firewallrichtlinie oder hierarchischen Firewallrichtlinie) mit den folgenden Eigenschaften:

    • Richtung: Eingehend
    • Aktion: Zulassen
    • Zielparameter: mindestens die NAT-VM
    • Quellparameter: IP-Adressbereich, der von der Datastream-Konfiguration für die private Konnektivität verwendet wird
    • Protokoll: TCP
    • Port: muss mindestens die DATABASE_PORT enthalten
  7. Die implizierte Firewallregel zum Zulassen von ausgehendem Traffic ermöglicht es der NAT-VM, Pakete an jedes Ziel zu senden. Wenn in Ihrem VPC-Netzwerk Firewallregeln für abzulehnenden ausgehenden Traffic verwendet werden, 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 für ausgehende Verbindungen erforderlich ist, verwenden Sie die folgenden Parameter:

    • Richtung: ausgehend
    • Aktion: Zulassen
    • Zielparameter: mindestens die NAT-VM
    • Zielparameter: IP-Adresse der Cloud SQL-Instanz
    • Protokoll: TCP
    • Port: muss mindestens die DATABASE_PORT enthalten
  8. Ihre Cloud SQL-Instanz muss so konfiguriert sein, 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, sollten Sie die folgende Architektur in Betracht ziehen, bei der zwei NAT-VMs und ein interner Passthrough-Network Load Balancer verwendet werden:

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

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

  2. Erstellen Sie einen internen Passthrough-Network Load Balancer, dessen Backend-Dienst die Instanzgruppe oder ‑gruppen aus dem vorherigen Schritt als Backends 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.

    Wenn Sie die Systemdiagnose des Load Balancers konfigurieren, können Sie eine TCP-Systemdiagnose verwenden, die einen Ziel-TCP-Port verwendet, der mit der 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 eine TCP- oder HTTP-Systemdiagnose an einem benutzerdefinierten Port beantwortet.

  3. Erstellen Sie Firewallregeln und konfigurieren Sie autorisierte Cloud SQL-Netzwerke wie in der Anleitung 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 in den Verbindungsdetails des Profils die IP-Adresse der Weiterleitungsregel des internen Passthrough-Network Load Balancers an.

Nächste Schritte