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 geschieht dies, wenn Sie eine Pipeline erstellen, die aus einem SaaS-Dienst wie Salesforce oder einem öffentlichen Clouddienst 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. Es wird empfohlen, die VM für mehrere private Cloud Data Fusion-Instanzen innerhalb derselben VPC.

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

Hinweis

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.

    Zu „VM-Instanzen“

  2. Klicken Sie auf Instanz erstellen. Es wird empfohlen, eine VM ohne externe IP-Adresse.

  3. Verwenden Sie dieselbe VPC, für die das Netzwerk-Peering mit der privaten Cloud Data Fusion-Instanz eingerichtet ist. Weitere Informationen zu Lesen Sie in diesem Szenario VPC-Netzwerk-Peering 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 zum Erstellen der Gateway-VM und der Firewallregeln das folgende Skript im Google Cloud CLI:

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: 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-Dienstes Konto
  • CDF_IP_RANGE: Der IP-Bereich, der der Cloud Data Fusion-Instanz zugewiesen ist.

Freigegebene VPC verwenden

Wenn Sie eine freigegebene VPC verwenden, um eine Verbindung zu Ihrer privaten Cloud Data Fusion-Instanz herzustellen zu Quellen im öffentlichen Internet ist, erstellen Sie eine Gateway-VM im Hostprojekt, VPC-Netzwerk-Peering wird mit dem Mandantenprojekt eingerichtet.

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 die Ziel für den IP-Bereich, der Cloud Data Fusion zugewiesen ist Instanz.
  • Verwenden Sie dasselbe Projekt und dieselbe VPC wie die private Cloud Data Fusion-Instanz.
  • Achten Sie darauf, dass Ihre VPC-Netzwerk-Peering-Konfiguration den Export zulässt Routen, damit die VPC-Daten des Cloud Data Fusion-Mandantenprojekts importiert werden benutzerdefinierte Route über VPC-Netzwerk-Peering.

gcloud

So erstellen Sie eine 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 auf den S3-Bucket zugreifen können (oder andere SaaS- oder öffentliche Cloud-Dienste) in Preview und Wrangler verfügbar machen.

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 Prober-IP-Adressen der Systemdiagnose 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 für Ihr Projekt.
  • VPC_NETWORK ist der Name des VPC-Netzwerks.
  • CDF_IP_RANGE: Der IP-Adressbereich, der Cloud Data Fusion zugewiesen ist.

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

Wenn Sie Steuerelemente für ausgehenden Traffic einrichten, 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

Aktivieren Sie Cloud NAT, um während der Ausführung auf das öffentliche Internet zuzugreifen. sich in derselben Region und demselben Netzwerk wie der Dataproc-Cluster befinden.

Nächste Schritte