In diesem Dokument wird beschrieben, wie Sie die folgenden Aufgaben ausführen:
- Dataflow-VM-Instanzen für den Internetzugriff konfigurieren
- Netzwerk-Tags erstellen
- Firewallregeln für das Netzwerk definieren, das mit Ihren Dataflow-Jobs verknüpft ist
Für dieses Dokument sind Grundkenntnisse über Google Cloud-Netzwerke erforderlich. Informationen zum Definieren eines Netzwerks für Ihren Dataflow-Job finden Sie unter Netzwerk und Subnetzwerk angeben. Weitere Informationen zur Fehlerbehebung bei Netzwerkproblemen finden Sie unter Fehlerbehebung bei Netzwerkproblemen mit Dataflow.
Zugriff auf Google Cloud APIs für Dataflow
Virtuelle Maschinen (VMs) von Dataflow-Workern müssen Google Cloud APIs und Dienste erreichen. Die Anzahl der abhängigen Google Cloud-Endpunkte kann sich im Laufe der Zeit ändern. Sie alle unterstützen jedoch VPC Service Controls. Verwenden Sie eine der folgenden Methoden, um den Zugriff auf Google Cloud APIs zu konfigurieren:
Konfigurieren Sie den privaten Google-Zugriff. Mit privatem Google-Zugriff können VMs, die nur interne IP-Adressen haben, auf IP-Adressen für Google Cloud und Dienste zugreifen.
Konfigurieren Sie eine Private Service Connect-Endpunkt-IP-Adresse für den Zugriff auf Google Cloud APIs und Dienste.
Konfigurieren Sie Worker-VMs mit externen IP-Adressen.
Standardmäßig erlauben Firewallregeln und DNS-Konfigurationen den Zugriff auf Google Cloud APIs. Möglicherweise beschränken Sie den Zugriff jedoch aktiv auf einen Teil der Google Cloud APIs, z. B. wenn Sie VPC Service Controls verwenden.
In diesem Fall muss mindestens restricted.googleapis.com
zugänglich sein. Wenn Sie Private Service Connect verwenden, gewähren Sie Zugriff auf das vpc-sc
-Bundle.
Wenn Sie Zugriff auf weniger restriktive Domains wie private.googleapis.com
gewähren, sind die erforderlichen Funktionen ebenfalls verfügbar.
Damit der Zugriff auf die erforderlichen Google Cloud APIs über eine bestimmte Domain möglich ist, muss Ihre Umgebung die folgenden Anforderungen erfüllen:
Firewallregeln müssen den ausgehenden Traffic zu allen Adressbereichen unter der ausgewählten Domain zulassen.
Das DNS muss
*.googleapis.com
in die von Ihnen ausgewählte Domain auflösen.
Wenn Ihre Firewallregeln den ausgehenden Traffic beispielsweise auf den Adressbereich restricted.googleapis.com
beschränken, muss restricted.googleapis.com
auf Adressen in diesem Bereich aufgelöst werden.*.googleapis.com
Weitere Informationen finden Sie unter DNS für googleapis.com konfigurieren.
Wenn Sie Private Service Connect verwenden, müssen Sie auch DNS-Einträge für die Standarddomain googleapis.com
erstellen, um Zugriff auf mindestens alle Dienste im vpc-sc
-Bundle zu ermöglichen.
Internetzugang für Dataflow
Je nach Anwendungsfall benötigen Ihre VMs möglicherweise auch Zugriff auf Ressourcen außerhalb von Google Cloud. Verwenden Sie eine der folgenden Methoden, um den Internetzugriff für Dataflow zu konfigurieren:
Konfigurieren Sie Worker-VMs mit einer externen IP-Adresse, damit sie den Anforderungen für den Internetzugriff entsprechen.
Konfigurieren Sie eine NAT-Lösung, z. B. Cloud NAT. Diese Option dient zum Ausführen von Jobs, die auf APIs und Dienste außerhalb von Google Cloud zugreifen, die Internetzugriff benötigen. Beispielsweise benötigen Python SDK-Jobs möglicherweise Zugriff auf den Python-Paketindex (PyPI), um Pipelineabhängigkeiten herunterzuladen. In diesem Fall müssen Sie entweder Worker-VMs mit externen IP-Adressen konfigurieren oder Cloud NAT verwenden. Sie können auch Python-Pipelineabhängigkeiten während der Jobübermittlung angeben. Sie können beispielsweise benutzerdefinierte Container verwenden, um Python-Pipelineabhängigkeiten bereitzustellen. Dadurch ist es nicht mehr erforderlich, auf PyPI zur Laufzeit zuzugreifen.
Weitere Informationen finden Sie unter Python-Pipelineabhängigkeiten verwalten in der Apache Beam-Dokumentation.
Externe IP-Adresse deaktivieren
Standardmäßig weist Dataflow Workern sowohl externe als auch interne IP-Adressen zu. Wenn Sie externe IP-Adressen deaktivieren, kann der Dataflow-Job nur auf Ressourcen an folgenden Orten zugreifen:
- Weitere Instanz im selben VPC-Netzwerk
- Freigegebenes VPC-Netzwerk
- Netzwerk mit aktiviertem VPC Network-Peering
Auch ohne externe IP-Adressen können Sie Verwaltungs- und Monitoringaufgaben ausführen. Wenn Sie auf Ihre Worker zugreifen möchten, verwenden Sie SSH über die oben aufgeführten Optionen. Die Pipeline kann jedoch nicht auf das Internet zugreifen und Internethosts haben keinen Zugriff auf Ihre Dataflow-Worker.
Wenn Sie keine externen IP-Adressen verwenden, ist Ihre Datenverarbeitungsinfrastruktur besser geschützt. Außerdem verringern Sie die Anzahl der externen IP-Adressen, die Sie im Rahmen Ihres Google Cloud-Projektkontingents nutzen.
Wenn Sie externe IP-Adressen deaktivieren, können Ihre Dataflow-Jobs nicht auf APIs und Dienste außerhalb von Google Cloud zugreifen, die Internetzugriff erfordern.
Führen Sie einen der folgenden Schritte aus, um externe IP-Adressen zu deaktivieren:
Java
- Aktivieren Sie Privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
- Legen Sie für die Parameter Ihres Dataflow-Jobs
--usePublicIps=false
und--network=NETWORK-NAME
oder--subnetwork=SUBNETWORK-NAME
fest.Ersetzen Sie je nach Auswahl einen der folgenden Strings:
- NETWORK-NAME ist der Name Ihres Compute Engine-Netzwerks
- SUBNETWORK-NAME ist der Name Ihres Compute Engine-Subnetzwerks
Python
- Implementieren Sie alle Python-Paketabhängigkeiten gemäß der Anleitung zu den Apache Beam-Pipelineabhängigkeiten.
- Aktivieren Sie Privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
- Legen Sie für die Parameter Ihres Dataflow-Jobs
--no_use_public_ips
und--network=NETWORK
oder--subnetwork=SUBNETWORK
fest. - NETWORK-NAME ist der Name Ihres Compute Engine-Netzwerks
- SUBNETWORK-NAME ist der Name Ihres Compute Engine-Subnetzwerks
Ersetzen Sie je nach Auswahl einen der folgenden Strings:
Go
- Aktivieren Sie Privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
- Legen Sie für die Parameter Ihres Dataflow-Jobs
--no_use_public_ips
und--network=NETWORK
oder--subnetwork=SUBNETWORK
fest. - NETWORK-NAME ist der Name Ihres Compute Engine-Netzwerks
- SUBNETWORK-NAME ist der Name Ihres Compute Engine-Subnetzwerks
Ersetzen Sie je nach Auswahl einen der folgenden Strings:
Netzwerk-Tags für Dataflow
Netzwerk-Tags sind Textattribute, die Sie an Compute Engine-VMs anhängen können. Mit Netzwerk-Tags können Sie VPC-Netzwerk-Firewallregeln und bestimmte benutzerdefinierte statische Routen für bestimmte VM-Instanzen festlegen. Dataflow unterstützt das Hinzufügen von Netzwerk-Tags zu allen Worker-VMs, die einen bestimmten Dataflow-Job ausführen.
Auch wenn Sie den Netzwerkparameter nicht verwenden, fügt Dataflow jeder erstellten Worker-VM immer das Standard-Netzwerk-Tag dataflow
hinzu.
Netzwerk-Tags aktivieren
Die Netzwerk-Tags können nur dann angegeben werden, wenn Sie die Dataflow-Jobvorlage zum Erstellen eines Jobs ausführen. Nachdem ein Job gestartet wurde, können Sie dem Job keine weiteren Netzwerk-Tags hinzufügen. Wenn Sie weitere Netzwerk-Tags auf einen Job anwenden möchten, müssen Sie Ihre Jobvorlage mit den erforderlichen Netzwerk-Tags neu erstellen.
Fügen Sie Ihrem Pipelinecode Folgendes hinzu, unabhängig davon, ob Sie in Java oder Python ausführen:
--experiments=use_network_tags=TAG-NAME
Ersetzen Sie TAG-NAME durch die Namen Ihrer Tags. Wenn Sie mehr als ein Tag hinzufügen, trennen Sie jedes Tag mit einem Semikolon (;
) ab, wie im folgenden Format gezeigt: TAG-NAME-1;TAG-NAME-2;TAG-NAME-3;....
Netzwerk-Tags für Flex-Vorlagen-VMs aktivieren
Wenn Sie Flex-Vorlagen verwenden, können Sie Netzwerk-Tags für Dataflow-Worker-VMs mit der Option --additional-experiments
aktivieren, wie im folgenden Beispiel gezeigt:
--additional-experiments=use_network_tags=TAG-NAME
Wenn Sie Netzwerk-Tags sowohl für Worker-VMs als auch für Launcher-VMs aktivieren möchten, haben Sie folgende zwei Möglichkeiten:
--additional-experiments=use_network_tags=TAG-NAME
--additional-experiments=use_network_tags_for_flex_templates=TAG-NAME
Ersetzen Sie TAG-NAME durch die Namen Ihrer Tags. Wenn Sie mehr als ein Tag hinzufügen, trennen Sie jedes Tag mit einem Semikolon (;
) ab, wie im folgenden Format gezeigt: TAG-NAME-1;TAG-NAME-2;TAG-NAME-3;....
Nachdem Sie die Netzwerk-Tags aktiviert haben, werden die Tags geparst und an die VMs angehängt.
Siehe die geltenden Limits für Netzwerk-Tags.
Firewallregeln für Dataflow
Mit Firewallregeln können Sie Traffic zu und von Ihren VMs zulassen oder ablehnen. Wenn Ihre Dataflow-Jobs Dataflow Shuffle oder Streaming Engine verwenden, müssen Sie nur dafür sorgen, dass die Firewallregeln den Zugriff auf Google Cloud APIs zulassen.
Andernfalls müssen Sie zusätzliche Firewallregeln konfigurieren, damit Dataflow-VMs Netzwerkverkehr über den TCP-Port 12345
für Streamingjobs und über den TCP-Port 12346
für Batchjobs senden und empfangen können.
Ein Projektinhaber, Projektbearbeiter oder Sicherheitsadministrator muss die erforderlichen Firewallregeln im VPC-Netzwerk erstellen, das von Ihren Dataflow-VMs verwendet wird.
Bevor Sie Firewallregeln für Dataflow konfigurieren, lesen Sie die folgenden Dokumente:
Übersicht über VPC-Firewallregeln und VPC-Firewallregeln verwenden
Übersicht über hierarchische Firewallrichtlinien und Hierarchische Firewallrichtlinien und -regeln verwenden
Geben Sie beim Erstellen von Firewallregeln für Dataflow die Dataflow-Netzwerk-Tags an. Andernfalls gelten die Firewallregeln für alle VMs im VPC-Netzwerk.
Gegebenenfalls werden hierarchische Firewallrichtlinien zuerst ausgewertet und diese Regeln überschreiben VPC-Firewallregeln. Wenn sich der Dataflow-Job in einem Projekt befindet, das Teil eines Ordners oder einer Organisation ist, in der hierarchische Firewallrichtlinien verwendet werden, ist die Rolle compute.orgFirewallPolicyAdmin
erforderlich, um Richtlinienänderungen vorzunehmen.
Wenn Sie beim Ausführen des Pipelinecodes keine benutzerdefinierten Netzwerk-Tags erstellen, verwenden Dataflow-VMs das Standard-Tag dataflow
. Wenn keine benutzerdefinierten Netzwerk-Tags vorhanden sind, erstellen Sie Firewallregeln mit dem Standard-Tag dataflow
.
Wenn Sie beim Ausführen des Pipelinecodes benutzerdefinierte Netzwerk-Tags erstellen, verwenden Dataflow-VMs diese Tags. Erstellen Sie die Firewallregeln mit den benutzerdefinierten Tags.
Einige VPC-Netzwerke, wie das automatisch erstellte Netzwerk default
, enthalten die Regel default-allow-internal
, die die Firewallanforderung für Dataflow erfüllt.
Beispiel einer Firewallregel für eingehenden Traffic
Die Firewallregel für eingehenden Traffic ermöglicht Dataflow-VMs, Pakete voneinander zu empfangen. Sie müssen immer Firewallregeln zum Zulassen von eingehendem Traffic erstellen, da der Traffic sonst immer blockiert wird, auch wenn Regeln für ausgehenden Traffic diesen Traffic zulassen.
Im folgenden Beispiel wird für Dataflow eine Firewallregel für eingehenden Traffic erstellt, wobei alle Worker-VMs das Standard-Netzwerk-Tag dataflow
haben. Ein Projektinhaber, Projektbearbeiter oder Sicherheitsadministrator kann mit dem folgenden gcloud
-Befehl eine Regel zum Zulassen von eingehendem Traffic erstellen. Diese lässt Traffic über die TCP-Ports 12345
und 12346
von VMs mit dem Netzwerk-Tag dataflow
zu anderen VMs mit demselben Tag zu:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INGRESS \
--action=allow \
--direction=ingress \
--network=NETWORK \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Dabei gilt:
FIREWALL_RULE_NAME_INGRESS
ist ein Name für die Firewallregel.NETWORK
: der Name des Netzwerks, das die Worker-VMs verwendenCUSTOM_TAG
ist eine durch Kommas getrennte Liste von Netzwerk-Tags.Die folgende Liste enthält Richtlinien zur Verwendung von Netzwerk-Tags:
Wenn Sie
--target-tags
weglassen, gilt die Regel für alle VMs im VPC-Netzwerk.Wenn Sie
--source-tags
und alle anderen Quellspezifikationen weglassen, ist Traffic von jeder Quelle zulässig.Wenn Sie keine benutzerdefinierten Netzwerk-Tags angegeben haben und die Regel für Dataflow-VMs spezifisch sein soll, verwenden Sie
dataflow
als Netzwerk-Tag.Wenn Sie benutzerdefinierte Netzwerk-Tags angegeben haben und die Regel für Dataflow-VMs spezifisch sein soll, verwenden Sie Ihre benutzerdefinierten Netzwerk-Tags.
PRIORITY_NUM
: die Priorität der FirewallregelJe niedriger die Zahl, desto höher die Priorität.
0
hat die höchste Priorität.
Beispiel für eine Firewallregel für ausgehenden Traffic
Die Firewallregel für ausgehenden Traffic ermöglicht Dataflow-VMs, Pakete aneinander zu senden. Wenn Sie Firewallregeln für abzulehnenden ausgehenden Traffic erstellt haben, müssen Sie möglicherweise benutzerdefinierte Firewallregeln zum Zulassen von ausgehendem Traffic in Ihrem VPC-Netzwerk erstellen.
In diesem Beispiel wird eine Firewallregel für ausgehenden Traffic für Dataflow erstellt, wobei alle Worker-VMs das Standard-Netzwerk-Tag dataflow
haben. Ein Projektinhaber, Projektbearbeiter oder Sicherheitsadministrator kann mit dem folgenden gcloud
-Befehl eine Regel zum Zulassen von ausgehendem Traffic erstellen. Diese lässt Traffic von den TCP-Ports 12345
und 12346
von VMs mit dem Netzwerk-Tag dataflow
zu anderen VMs mit demselben Tag zu:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_EGRESS \
--network=NETWORK \
--action=allow \
--direction=egress \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--destination-ranges=DESTINATION-RANGES\
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Ersetzen Sie Folgendes:
FIREWALL_RULE_NAME_EGRESS
ist ein Name für die Firewallregel.NETWORK
: der Name des Netzwerks, das die Worker-VMs verwendenCUSTOM_TAG
ist eine durch Kommas getrennte Liste von Netzwerk-Tags.Die folgende Liste enthält Richtlinien zur Verwendung von Netzwerk-Tags:
Wenn Sie
--target-tags
weglassen, gilt die Regel für alle VMs im VPC-Netzwerk.Wenn Sie
--source-tags
und alle anderen Quellspezifikationen weglassen, ist Traffic von jeder Quelle zulässig.Wenn Sie keine benutzerdefinierten Netzwerk-Tags angegeben haben und die Regel für Dataflow-VMs spezifisch sein soll, verwenden Sie
dataflow
als Netzwerk-Tag.Wenn Sie benutzerdefinierte Netzwerk-Tags angegeben haben und die Regel für Dataflow-VMs spezifisch sein soll, verwenden Sie Ihre benutzerdefinierten Netzwerk-Tags.
DESTINATION-RANGES
: eine durch Kommas getrennte Liste von CIDRsFügen Sie den primären IP-Adressbereich des ausgewählten Subnetzwerks hinzu.
PRIORITY_NUM
: die Priorität der FirewallregelJe niedriger die Zahl, desto höher die Priorität.
0
hat die höchste Priorität.
Für bestimmte von Dataflow verwendete TCP-Ports können Sie sich das Containermanifest des Projekts ansehen. Das Containermanifest gibt explizit die Ports an, um dem Container Host-Ports zuzuordnen.
SSH-Zugriff auf Worker-VMs
Dataflow erfordert kein SSH. Dieses ist jedoch für die Problembehandlung hilfreich.
Wenn Ihre Worker-VM über eine externe IP-Adresse verfügt, können Sie entweder über die Google Cloud Console oder mithilfe des Google Cloud CLI eine Verbindung zur VM herstellen. Wenn Sie eine Verbindung über SSH herstellen möchten, müssen Sie eine Firewallregel haben, die eingehende Verbindungen am TCP-Port 22 von mindestens der IP-Adresse des Systems zulässt, auf dem gcloud
ausgeführt wird, oder der IP-Adresse des Systems, auf dem der Webbrowser ausgeführt wird, mit dem Sie auf die Google Cloud Console zugreifen.
Sie können sich die Netzwerkkonfiguration und -aktivität ansehen, indem Sie eine SSH-Sitzung auf einem Ihrer Worker öffnen und iproute2
ausführen. Weitere Informationen finden Sie auf der Seite iproute2
im Wiki der Linux Foundation.
Informationen zum Herstellen einer Verbindung zu einer Worker-VM, die lediglich eine interne IP-Adresse hat, finden Sie unter Verbindungsoption für ausschließlich interne VMs auswählen.
Nächste Schritte
- Weitere Informationen zu Konnektivitätstests Konnektivitätstests ist ein Diagnosetool, mit dem Sie die Konnektivität zwischen Netzwerkendpunkten prüfen können.
- Konnektivitätstests erstellen und ausführen