Verbindung zu einer öffentlichen Quelle von einer privaten Instanz aus herstellen

Auf dieser Seite wird beschrieben, wie Sie bei der Entwicklung einer Pipeline von einer privaten Cloud Data Fusion-Instanz eine Verbindung zu Software-as-a-Service-Anwendungen (SaaS) wie Salesforce und Cloud-Diensten von Drittanbietern wie Amazon S3 herstellen.

In diesem Leitfaden werden die Begriffe ausgehender Traffic und Steuerung des ausgehenden Traffics verwendet:

  • Ausgehender Traffic bezieht sich auf den Netzwerktraffic, der Google Cloud über das öffentliche Internet verlässt. In der Regel erfolgt ausgehender Traffic, wenn Sie eine Pipeline erstellen, die von einem SaaS-Dienst wie Salesforce oder einem öffentlichen Cloud-Dienst wie Amazon S3 liest oder in diesen schreibt.

  • Die Steuerung des ausgehenden Traffics definiert Sicherheitsvorkehrungen für ausgehenden Traffic über eine Proxy-VM, die ausgehenden Traffic zu einer Reihe vorkonfigurierter Domains zulässt und alle anderen fehlschlagen lässt. Dies ermöglicht einen höheren Sicherheitsbereich für ausgehenden Traffic und kann unerwünschten ausgehenden Traffic von einer privaten Instanz verhindern.

Das folgende Systemarchitekturdiagramm zeigt, wie eine private Cloud Data Fusion-Instanz bei der Entwicklung einer Pipeline eine Verbindung zum öffentlichen Internet herstellt:

Diagramm der Architektur einer privaten Instanz

Wenn Sie die Pipeline in diesem Szenario entwerfen, leitet Cloud Data Fusion den ausgehenden Traffic durch Ihr Kundenprojekt in der Cloud Data Fusion-Vorschau oder in Wrangler weiter. Für diesen Prozess werden die folgenden Ressourcen verwendet:

  • Eine benutzerdefinierte VPC-Netzwerkroute: Ein benutzerdefiniertes VPC-Netzwerk leitet den Traffic über eine importierte benutzerdefinierte Route an Gateway-VMs weiter, die mithilfe von VPC-Peering in die VPC eines Mandantenprojekts exportieren.

  • Eine Gateway-VM: Eine Gateway-VM leitet ausgehenden Traffic aus Google Cloud vom Cloud Data Fusion-Mandantenprojekt an eine SaaS- oder Drittanbieter-Cloud über das öffentliche Internet weiter. Sie verwalten diese VM in Ihrem Kundenprojekt. Sie können sie in einer Hochverfügbarkeitsumgebung (High Availability, HA) mit einem internen Load-Balancer (ILB) konfigurieren. Sie sollten die VM für mehrere private Cloud Data Fusion-Instanzen innerhalb derselben VPC wiederverwenden.

Informationen zum Einrichten der Steuerung des ausgehenden Traffics in Ihren Design- und Ausführungsumgebungen finden Sie unter Ausgehenden Traffic in einer privaten Instanz steuern.

Hinweise

Internetverbindung einrichten

In den folgenden Schritten wird beschrieben, wie Sie von einer privaten Cloud Data Fusion-Instanz in Wrangler auf einen Amazon S3-Bucket zugreifen. Dieselben Schritte gelten für den Zugriff auf eine Datenquelle über das öffentliche Internet, wenn Sie eine Pipeline in der Vorschau oder Wrangler entwerfen.

In dieser Anleitung wird nur eine einzelne VM verwendet. Für geschäftskritische Anwendungen empfehlen wir jedoch, VMs mit Load-Balancing zu erstellen. Weitere Informationen finden Sie unter Hochverfügbarkeits-VM einrichten.

NAT-Gateway erstellen

Erstellen Sie ein Cloud NAT-Gateway in derselben Region und demselben VPC-Netzwerk wie Ihre private Cloud Data Fusion-Instanz.

Zur Seite "Cloud NAT"

Gateway-VM-Instanz und Firewallregeln erstellen

Console

  1. Rufen Sie die Seite VM-Instanzen auf.

    Zur Seite „VM-Instanzen“

  2. Klicken Sie auf Instanz erstellen. Es empfiehlt sich, eine VM ohne externe IP-Adresse zu verwenden.

  3. Verwenden Sie dieselbe VPC, für die das Netzwerk-Peering mit der privaten Cloud Data Fusion-Instanz eingerichtet ist. Weitere Informationen zum VPC-Netzwerk-Peering in diesem Szenario finden Sie unter Vorbereitung.

  4. Aktivieren Sie die IP-Weiterleitung für die Instanz im selben Netzwerk wie die Cloud Data Fusion-Instanz.

  5. Geben Sie im Feld Startskript das folgende Skript ein:

    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE
    echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf
    iptables-save
    

    Weitere Informationen finden Sie unter Startskripts ausführen.

    Rufen Sie die Cloud Data Fusion-Seite Instanzdetails auf, um den zugewiesenen IP-Bereich für die Cloud Data Fusion-Instanz abzurufen.

    Staging-Schnittstelle für ausgehenden Traffic

gcloud

Führen Sie das folgende Skript in der Google Cloud CLI aus, um die Gateway-VM und die Firewallregeln zu erstellen:

export CDF_PROJECT=CDF_PROJECT
export GATEWAY_VM=GATEWAY_VM_NAME
export ZONE=VM_ZONE
export SUBNET=SUBNET
export VPC_NETWORK=VPC_NETWORK
export COMPUTE_ENGINE_SA=COMPUTE_ENGINE_SA

gcloud beta compute --project=$CDF_PROJECT instances create $GATEWAY_VM --zone=$ZONE --machine-type=e2-medium --subnet=$SUBNET --network-tier=PREMIUM --metadata=startup-script=\#\!\ /bin/bash$'\n'echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward$'\n'iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf$'\n'iptables-save  --can-ip-forward --no-address --maintenance-policy=MIGRATE --service-account=$COMPUTE_ENGINE_SA --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --tags=http-server,https-server --image=debian-10-buster-v20210316 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=$GATEWAY_VM --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --reservation-affinity=any

gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-http --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:80 --source-ranges=CDF_IP_RANGE --target-tags=http-server

gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-https --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:443 --source-ranges=CDF_IP_RANGE --target-tags=https-server

Ersetzen Sie Folgendes:

  • CDF_PROJECT: die anpassbare eindeutige Kennung für Ihr Projekt
  • GATEWAY_VM: der Name der VM, die Sie konfigurieren möchten
  • ZONE: die Zone Ihrer VM
  • SUBNET: das Subnetz
  • VPC_NETWORK: der Name Ihrer VM
  • COMPUTE_ENGINE_SA: der Name Ihres Compute Engine-Dienstkontos
  • CDF_IP_RANGE: der IP-Bereich, der der Cloud Data Fusion-Instanz zugewiesen ist

Freigegebene VPC verwenden

Wenn Sie eine freigegebene VPC verwenden, um Ihre private Cloud Data Fusion-Instanz mit Quellen im öffentlichen Internet zu verbinden, erstellen Sie eine Gateway-VM im Hostprojekt, in dem VPC-Netzwerk-Peering mit dem Mandantenprojekt eingerichtet ist.

Benutzerdefinierte Route erstellen

Erstellen Sie eine benutzerdefinierte Route, um eine Verbindung zur von Ihnen erstellten Gateway-VM-Instanz herzustellen.

Console

Informationen zum Erstellen einer Route in der Google Cloud Console finden Sie unter Statische Route hinzufügen.

Wenn Sie die Route konfigurieren, müssen Sie Folgendes tun:

  • Legen Sie die Priorität auf einen Wert größer oder gleich 1001 fest. Legen Sie als Ziel den IP-Bereich fest, der der Cloud Data Fusion-Instanz zugewiesen ist.
  • Verwenden Sie dasselbe Projekt und dieselbe VPC wie die private Cloud Data Fusion-Instanz.
  • Achten Sie darauf, dass Ihre VPC-Netzwerk-Peering-Konfiguration das Exportieren von Routen zulässt, damit die VPC des Cloud Data Fusion-Mandantenprojekts diese benutzerdefinierte Route über VPC-Netzwerk-Peering importiert.

gcloud

So erstellen Sie die Route in der gcloud CLI:

export ROUTE=ROUTE
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \
    --network=$VPC_NETWORK --priority=1001 \
    --destination-range=0.0.0.0/0 \
    --next-hop-instance=$GATEWAY_VM \
    --next-hop-instance-zone=$ZONE

Ersetzen Sie Folgendes:

  • ROUTE: der Name der benutzerdefinierten Route

Einrichtung überprüfen

Nachdem Sie die vorherigen Schritte ausgeführt haben, prüfen Sie, ob Sie in der Vorabversion und Wrangler auf S3-Bucket-Dienste (oder andere SaaS- oder öffentliche Cloud-Dienste) zugreifen können.

Hochverfügbares Gateway einrichten

Empfohlen: Für geschäftskritische Anwendungen empfehlen wir, Load-Balancing-VMs zu erstellen.

Firewallregeln für Systemdiagnosen erstellen

Erstellen Sie Firewallregeln, die Folgendes zulassen:

  • Port 80 (HTTP) und Port 443 (HTTPS) aus allen Quellbereichen
  • TCP-, UDP- und ICMP-Traffic von Systemdiagnose-Prober-IP-Adressen. Beispiel: 130.211.0.0/22,35.191.0.0/16

Console

Erstellen Sie Firewallregeln, die Ports aus allen Quellbereichen und Firewallregeln zulassen, um TCP-, UDP- und ICMP-Traffic von IP-Adressen des Systemdiagnose-Probers wie 130.211.0.0/22,35.191.0.0/16 zuzulassen.

Siehe Systemdiagnosen erstellen.

gcloud

Erstellen Sie eine Firewallregel für Systemdiagnosen:

export CDF_PROJECT=PROJECT_ID
export VPC_NETWORK=VPC_NETWORK

gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-http \
    --direction=INGRESS --priority=1000 \
    --network=$VPC_NETWORK \
    --action=ALLOW --rules=tcp:80 \
    --source-ranges=CDF_IP_RANGE \
    --target-tags=http-server

gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-https \
    --direction=INGRESS --priority=1000 --network=$VPC_NETWORK \
    --action=ALLOW --rules=tcp:443 --source-ranges=CDF_IP_RANGE \
    --target-tags=https-server

gcloud compute --project=$CDF_PROJECT firewall-rules create allow-health-checks \
    --network=$VPC_NETWORK \
    --action=allow --direction=ingress \
    --target-tags=allow-health-checks \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --rules=tcp,udp,icmp

Ersetzen Sie Folgendes:

  • PROJECT_ID: die anpassbare eindeutige Kennung für Ihr Projekt.
  • VPC_NETWORK ist der Name des VPC-Netzwerks.
  • CDF_IP_RANGE: der Cloud Data Fusion zugewiesene IP-Adressbereich.

Gateway-VM-Instanzvorlage erstellen

Console

Wenn Sie in der Console eine Instanzvorlage erstellen, müssen Sie Folgendes beachten:

  • Erstellen Sie sie in derselben VPC wie die Cloud Data Fusion-Instanz.
  • Empfohlen: Verwenden Sie eine VM mit einer privaten IP-Adresse.
  • Aktivieren Sie HTTP/HTTPS-Ports.
  • Aktivieren Sie die IP-Weiterleitung.
  • Geben Sie im Feld Startskript das folgende Skript ein:

    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE
    echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf
    iptables-save
    

    Weitere Informationen finden Sie unter Startskripts ausführen.

    Rufen Sie die Cloud Data Fusion-Seite Instanzdetails auf, um den zugewiesenen IP-Bereich für die Cloud Data Fusion-Instanz abzurufen.

gcloud

Instanzvorlage erstellen:

export TEMPLATE_NAME=TEMPLATE_NAME
export REGION=REGION
export SUBNET=SUBNET
export SERVICE_ACCOUNT=SERVICE_ACCOUNT

gcloud beta compute --project=$CDF_PROJECT instance-templates create $TEMPLATE_NAME \
--machine-type=e2-medium \
--subnet=projects/$CDF_PROJECT/regions/$REGION/subnetworks/$SUBNET \
--network-tier=PREMIUM --metadata=startup-script=sudo\ bash\ -c\ \"echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward\"$'\n'sudo\ iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'sudo\ bash\ -c\ \"echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf\"$'\n'sudo\ iptables-save \
--can-ip-forward --no-address --maintenance-policy=MIGRATE \
--service-account=$SERVICE_ACCOUNT \
--scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append \
--region=$REGION --tags=http-server,https-server,allow-health-checks \
--image=debian-10-buster-v20210316 \
--image-project=debian-cloud --boot-disk-size=10GB \
--boot-disk-type=pd-balanced \
--boot-disk-device-name=$TEMPLATE_NAME \
--no-shielded-secure-boot --no-shielded-vtpm \
--no-shielded-integrity-monitoring \
--reservation-affinity=any

Systemdiagnose erstellen

Auf dieser Gateway-VM-Instanz wird kein Dienst ausgeführt. Sie können also Port 22 für Ihre Systemdiagnose verwenden.

Console

Siehe Systemdiagnosen erstellen.

gcloud

Erstellen Sie eine Systemdiagnose.

export HEATH_CHECK=HEALTH_CHECK_NAME

gcloud beta compute health-checks create tcp $HEATH_CHECK --project=$CDF_PROJECT \
--port=22 --proxy-header=NONE --no-enable-logging \
--check-interval=5 --timeout=5 \
--unhealthy-threshold=2 --healthy-threshold=2

Instanzgruppe erstellen

Erstellen Sie mit der im vorherigen Schritt erstellten Systemdiagnose eine Instanzgruppe:

Console

Siehe Verwaltete Instanzgruppen erstellen.

gcloud

Instanzgruppe erstellen:

export INSTANCE_GROUP=INSTANCE_GROUP
gcloud beta compute --project=$CDF_PROJECT instance-groups managed create $INSTANCE_GROUP \
--base-instance-name=$INSTANCE_GROUP \
--template=$TEMPLATE_NAME --size=1 --zone=$ZONE \
--health-check=test --initial-delay=300

gcloud beta compute --project "$CDF_PROJECT" instance-groups managed set-autoscaling "$INSTANCE_GROUP" \
--zone "$ZONE" --cool-down-period "60" \
--max-num-replicas "10" --min-num-replicas "1" \
--target-cpu-utilization "0.6" --mode "on"

Load-Balancer erstellen

Erstellen Sie einen TCP-Load-Balancer (ILB) aus der im vorherigen Schritt erstellten Instanzgruppe.

Benutzerdefinierte Route zum Load-Balancer hinzufügen

Fügen Sie die benutzerdefinierte Route dem internen Load-Balancer (ILB) in derselben VPC wie die Cloud Data Fusion-Instanz hinzu.

Console

Zur VPC-Netzwerkseite.

Zur Seite VPC-Netzwerke

Klicken Sie auf dem Tab Routen auf Route erstellen.

Benutzerdefinierte Route hinzufügen

gcloud

Fügen Sie dem internen Load-Balancer die benutzerdefinierte Route hinzu:

export ROUTE=ROUTE_NAME
export ILB_FRONTEND=<ip_of_ilb_frontend>
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \
--network=$VPC_NETWORK --priority=1001 \
--destination-range=0.0.0.0/0 \
--next-hop-ilb=$ILB_FRONTEND \
--next-hop-ilb-region=$REGION

Fehlerbehebung

Zeitüberschreitungsfehler bei Verbindungen in der Vorschau oder Wrangler abrufen

Beim Einrichten der Steuerung für ausgehenden Traffic wird möglicherweise der Fehler Connection Timeout angezeigt.

Prüfen Sie, ob die folgenden Einstellungen vorhanden sind, um das Problem zu beheben:

Systemdiagnosen von Instanzgruppen sind nicht erfolgreich

Prüfen Sie, ob die Firewallregeln TCP-, UDP- und ICMP-Traffic aus dem Quellbereich 130.211.0.0/22,35.191.0.0/16 zulassen.

Pipeline schlägt während der Ausführung in Dataproc fehl

Wenn Sie während der Ausführung auf das öffentliche Internet zugreifen möchten, aktivieren Sie Cloud NAT in derselben Region und im selben Netzwerk wie der Dataproc-Cluster.

Nächste Schritte