VPC-Peering konfigurieren

In Datastream können Sie mit VPC-Netzwerk-Peering eine dedizierte Verbindung zwischen Ihrem VPC-Netzwerk (Virtual Private Cloud) und Datastream über interne IP-Adressen herstellen. Bevor Sie eine Konfiguration für private Konnektivität erstellen, sollten Sie sich die unterstützten Netzwerktopologien ansehen und die Voraussetzungen für VPC und gemeinsam genutzte VPC erfüllen. Wenn Sie eine Verbindung zu einer Cloud SQL-Instanz herstellen möchten, können Sie auch eine NAT-VM in Ihrem VPC-Netzwerk einrichten.

VPC-Netzwerk-Peering in Datastream

Die Verwendung von privater Konnektivität stellt eine dedizierte Verbindung zum Datastream-Netzwerk her, was bedeutet, dass keine anderen Kunden sie gemeinsam nutzen können.

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

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

  • Private Service Connect-Endpunkte in Ihrem VPC-Netzwerk.
  • Ressourcen, die sich in einem anderen VPC-Netzwerk befinden, das mit Ihrem VPC-Netzwerk, aber nicht mit dem Datastream-VPC-Netzwerk verbunden ist, da 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, z. B. eine Cloud SQL-Instanz, können Sie eine NAT-VM (Network Address Translation) in Ihrem VPC-Netzwerk verwenden. Das folgende Diagramm zeigt eine Beispielkonfiguration für eine NAT-VM, mit der Datastream eine private Verbindung zu einer Cloud SQL-Instanz herstellen kann:

Diagramm: Datastream-Nutzerfluss

Voraussetzungen für VPC-Peering

Bevor Sie eine Konfiguration für private Konnektivität 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 mit dem privaten Netzwerk von Datastream per Peering verbunden werden 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.
  • Ermitteln Sie einen verfügbaren IP-Bereich (mit einem CIDR-Block von /29) im VPC-Netzwerk. Dies darf kein IP-Bereich sein, der bereits als Subnetz, als vorab zugewiesener IP-Bereich für den Zugriff auf private Dienste oder als Route (außer der Standardroute 0.0.0.0) vorhanden ist, die den IP-Bereich enthält. 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 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
  • Achten Sie darauf, dass 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 Verbindungsausfällen führen.

  • Prüfen Sie, ob Google Cloud und die lokale Firewall Traffic aus dem ausgewählten IP-Bereich zulassen. Wenn dies nicht der Fall ist, 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 für die Regel, ausgedrückt als Ganzzahl zwischen 0 und 65535 (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 ein Peering mit dem privaten Datastream-Netzwerk herstellen kann und die auf der Seite VPC-Netzwerk-Peering beschriebenen Anforderungen erfüllt. Dies ist die VPC, die Sie beim Erstellen der Konfiguration für private Konnektivität angeben.
    • VPC_PROJECT: Das Projekt des VPC-Netzwerk.
    • FIREWALL_RULES: Die Liste der Protokolle und Ports, für die die Firewallregel gilt, z. B. tcp:80. Die Regel muss TCP-Traffic an die IP-Adresse und den Port der Quelldatenbank oder des Proxys zulassen. Da private Konnektivität mehrere Datenbanken unterstützen kann, muss die Regel die tatsächliche Nutzung Ihrer Konfiguration berücksichtigen.
    • IP-RANGE: Der IP-Adressbereich, den Datastream für die Kommunikation mit der Quelldatenbank verwendet. Dies ist derselbe Bereich, den Sie beim Erstellen Ihrer 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.

  • Sie 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, können Sie der IAM-Berechtigungsreferenz entnehmen.

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 Aktionen ausführen:

  1. Im Dienstprojekt:

    1. Aktivieren Sie die Datastream API.
    2. Rufen Sie die E‑Mail-Adresse ab, die für das Datastream-Dienstkonto verwendet wird. 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 Konnektivität, wählen Ihre gemeinsam genutzte VPC aus und klicken auf Datastream-Dienstkonto erstellen. Das Dienstkonto wird im Hostprojekt erstellt.

      Die E-Mail-Adresse des Datastream-Dienstkontos finden Sie auf der Startseite der Google Cloud Console unter Projektnummer. Die E-Mail-Adresse des Dienstkontos lautet service-[project_number]@gcp-sa-datastream..

  2. Für das Hostprojekt:

    1. Weisen Sie dem Datastream-Dienstkonto die IAM-Rollenberechtigung (Identity and Access Management) compute.networkAdmin zu. 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 das Gewähren 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, zu der Datastream eine Verbindung herstellen muss.

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

  3. Falls noch nicht geschehen, erstellen Sie in Datastream eine Konfiguration für private Konnektivität. Dadurch wird die VPC-Netzwerk-Peering-Verbindung erstellt, die Ihr VPC-Netzwerk und das Datastream-VPC-Netzwerk verbindet. Notieren Sie sich den IP-Adressbereich, der von der Konfiguration für die private Verbindung 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 Limit für die maximale Bandbreite für ausgehenden Traffic pro Instanz für Pakete, die von nächsten Hops innerhalb eines VPC-Netzwerk weitergeleitet werden, entsprechend dem Maschinentyp der VM-Instanz. Weitere Informationen finden Sie unter Ausgehender Traffic an Ziele, die innerhalb eines VPC-Netzwerks routingfähig sind und Maximale Bandbreite für ausgehenden Traffic pro Instanz.

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

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

    • Erstellen Sie die NAT-VM in derselben Region wie Datastream, um die Netzwerkumlaufzeit 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 die Funktion der einzelnen Zeilen des Scripts erläutert wird. Ersetzen Sie im Skript 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
    export SYSCTL_CONF_FILE="/etc/sysctl.d/99-sysctl.conf"
    
    # Ensure the VM can receive packets whose destinations do
    # not match any running process local to the VM
    if [ "$(sysctl net.ipv4.ip_forward)" != "net.ipv4.ip_forward = 1" ]; then
        echo "Enabling IP forwarding..."
        if [ ! -f "${SYSCTL_CONF_FILE}" ]; then
           # Create the kernel parameter config file if it doesn't exist.
           touch "${SYSCTL_CONF_FILE}"
        fi
        # Remove any lines with net.ipv4.ip_forward:
        sed -i '/net.ipv4.ip_forward/d' "${SYSCTL_CONF_FILE}"
        # Append net.ipv4.ip_forward=1:
        echo "net.ipv4.ip_forward=1" >> "${SYSCTL_CONF_FILE}"
        # Reload kernel parameters:
        sysctl --system
    fi
    
    # 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 Konnektivität von Datastream verwendet wird
    • Protokoll: TCP
    • Port: muss mindestens den DATABASE_PORT enthalten
  7. Die implizierte Firewallregel zum Zulassen von ausgehendem Traffic ermöglicht es 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 Zulassungsregel für ausgehenden Traffic erforderlich ist, verwenden Sie diese Parameter:

    • Richtung: ausgehend
    • 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 sie Verbindungen von der primären internen IPv4-Adresse akzeptiert, 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.

NAT-VM-Paar und internen Passthrough-Network Load Balancer einrichten

Wenn Sie die Zuverlässigkeit einer NAT-VM-Lösung verbessern möchten, sollten Sie die folgende Architektur in Betracht ziehen, die ein Paar NAT-VMs und einen internen Passthrough-Network-Load-Balancer verwendet:

  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 eine regionale verwaltete Instanzgruppe erstellen. Fügen Sie in die Vorlage für die verwaltete Instanzgruppe ein Startskript ein, wie im Beispiel-Startskript 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.

    Beim Konfigurieren der Load-Balancer-Systemdiagnose können Sie eine TCP-Systemdiagnose verwenden, die einen Ziel-TCP-Port 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 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 die IP-Adresse der Weiterleitungsregel des internen Passthrough-Network Load Balancers in den Verbindungsdetails des Profils an.

Nächste Schritte