Dataflow-Netzwerkprobleme beheben .

Auf dieser Seite wird beschrieben, wie Sie Probleme mit der Dataflow-Netzwerkkommunikation beheben.

Weitere Informationen zum Konfigurieren des Netzwerks für Ihre Dataflow-Jobs finden Sie unter Internetzugriff und Firewallregeln konfigurieren und Netzwerk und Subnetzwerk angeben.

PoolableConnectionFactory kann nicht erstellt werden

Der folgende Fehler tritt auf, wenn Ihr Dataflow-Job eine Verbindung zu einer externen Datenbank herstellen muss:

java.sql.SQLException: Cannot create PoolableConnectionFactory
(The connection attempt failed.)

Dieses Problem tritt auf, wenn der Dataflow-Worker keine Verbindung zum Datenbankserver herstellen kann. Das liegt häufig an einer Egress-Regel oder einer Firewall.

Um die Ursache dieses Problems zu finden, erstellen Sie Konnektivitätstests und führen sie aus. Mit den Konnektivitätstests können Sie ermitteln, wo der Traffic blockiert wird.

Informationen zum Aktualisieren Ihrer Regeln für ausgehenden Traffic finden Sie unter Beispiel für eine Firewallregel für ausgehenden Traffic.

Verbindung überschreitet Zeitlimit bei Verwendung von Cloud NAT

Der folgende Fehler kann auftreten, wenn Ihr Dataflow-Job versucht, über ein Cloud NAT-Gateway eine Verbindung zu einem externen Dienst herzustellen:

java.net.ConnectTimeoutException: Connection timed out

Dieses Problem kann auftreten, wenn Ihr Dataflow-Job für die Verwendung externer IP-Adressen konfiguriert ist und Ihr Netzwerk auch für die Verwendung von Cloud NAT für ausgehenden Traffic eingerichtet ist. Wenn Dataflow-Worker externe IP-Adressen haben, versuchen sie, den Traffic direkt ins Internet weiterzuleiten, anstatt über das Cloud NAT-Gateway. Dies kann zu Zeitüberschreitungen bei der Verbindung führen, wenn Firewallregeln diesen direkten Zugriff verhindern.

Konfigurieren Sie Ihre Dataflow-Worker so, dass sie keine externen IP-Adressen verwenden, um dieses Problem zu beheben. Diese Konfiguration trägt dazu bei, dass ausgehender Traffic über das konfigurierte Cloud NAT-Gateway geleitet wird. Weitere Informationen finden Sie in der Cloud NAT-Dokumentation.

Informationen zum Deaktivieren externer IP-Adressen finden Sie unter Internetzugriff und Firewallregeln konfigurieren.

Projektübergreifende Verweise für diese Ressource sind nicht zulässig

Der folgende Fehler tritt auf, wenn Sie einen Dataflow-Job für ein freigegebenes VPC-Netzwerk ausführen:

Invalid value for field 'resource.properties.networkInterfaces[0].subnetwork':
'https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK'.
Cross-project references for this resource are not allowed.

Dieses Problem tritt auf, wenn Sie ein Subnetzwerk in einem freigegebenen VPC-Netzwerk angeben, das Dienstprojekt aber nicht an das freigegebene VPC-Hostprojekt angehängt ist.

Um dieses Problem zu beheben, muss ein Administrator für freigegebene VPCs das Dienstprojekt an das Hostprojekt anhängen.

Die Instanz muss sich in derselben Region wie das Subnetzwerk befinden.

Der folgende Fehler tritt auf, wenn Sie einen Dataflow-Job mit einem angegebenen Subnetzwerk ausführen:

Failed to start the VM, launcher-ID, used for launching because of status code: INVALID_ARGUMENT, reason: Invalid Error:
Message: Invalid value for field 'resource.networkInterfaces[0].subnetwork': 'https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK'. Instance must be in the same region as the subnetwork.
HTTP Code: 400.

Dieses Problem tritt auf, wenn sich Ihr Job und das in Ihrem Job angegebene Subnetzwerk in verschiedenen Regionen befinden.

Um dieses Problem zu beheben, führen Sie den Job in der Region aus, in der sich Ihr Subnetzwerk befindet. Wenn sich Ihr Subnetzwerk beispielsweise in us-central1 befindet, führen Sie Ihren Job in der Region us-central1 aus.

IP-Bereich ist aufgebraucht

Wenn Sie einen Dataflow-Job erstellen oder einen Autoscaling-Vorgang auslösen, schlagen diese Vorgänge möglicherweise mit der folgenden Meldung fehl:

IP_SPACE_EXHAUSTED: Instance 'INSTANCE_NAME' creation failed: IP space of 'projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK' is exhausted.

Sie können eine der folgenden Strategien ausprobieren, um diesen Fehler zu beheben:

  1. Reduzieren Sie die Anzahl der Worker-Anfragen für den Dataflow-Job. Sie können eine bestimmte Anzahl von Workern angeben, indem Sie die Pipelineoption num_workers festlegen. Alternativ können Sie mit der Pipelineoption max_num_workers eine Obergrenze für die Anzahl der Worker festlegen. Weitere Informationen finden Sie unter Pipelineoptionen.
  2. Erhöhen Sie nach Möglichkeit die Größe des Subnetzes des Dataflow-Jobs. Informationen zum Erweitern eines vorhandenen Subnetzes finden Sie in der Virtual Private Cloud-Dokumentation.
  3. Verwenden Sie ein anderes Subnetz mit genügend verfügbaren IP-Adressen für den Dataflow-Job.
  4. Erstellen Sie nach Möglichkeit ein dediziertes Subnetz mit einer ausreichenden Anzahl von IP-Adressen für Dataflow-Jobs.

Für die Netzwerkschnittstelle muss ein Subnetz angegeben werden, wenn sich die Netzwerkressource im benutzerdefinierten Subnetzmodus befindet.

Der folgende Fehler tritt auf, wenn Sie einen Dataflow-Job ausführen:

Workflow failed. Causes: Invalid Error: Message: Invalid value for field
'resource.properties.networkInterfaces[0].subnetwork': ''. Network interface
must specify a subnet if the network resource is in custom subnet mode. HTTP
Code: 400

Dieses Problem tritt auf, wenn das VPC-Netzwerk mit dem Namen default von einem VPC-Netzwerk im automatischen Modus in einen benutzerdefinierten VPC-Netzwerk-Modus umgewandelt wird.

Um dieses Problem zu beheben, geben Sie den Subnetzwerkparameter an, wenn Sie ein benutzerdefiniertes Modus-VPC-Netzwerk verwenden. Weitere Informationen finden Sie unter Netzwerk und Subnetzwerk angeben.

Netzwerk ist nicht erreichbar

Der folgende Fehler tritt auf, wenn Sie externe IP-Adressen deaktiviert haben und versuchen, einen Dataflow-Job auszuführen:

NewConnectionError(''<pip._vendor.urllib3.connection.HTTPSConnection  object at ID>:
Failed to establish a new connection: [Errno 101] Network is unreachable

Dieses Problem tritt auf, weil Ihre Pipelinekonfiguration keine Verbindungen zu externen IP-Adressen zulässt, Ihre Pipeline jedoch eine Verbindung zu einer externen IP-Adresse benötigt, um ausgeführt zu werden. Mit den folgenden Pipelineoptionen werden externe IP-Verbindungen deaktiviert:

Java

--usePublicIps=false

Python

--no_use_public_ips=true

Go

--no_use_public_ips=true

API

options = PipelineOptions(use_public_ips=False)

Um herauszufinden, wo der Traffic blockiert ist, erstellen Sie Konnektivitätstests und führen sie aus.

Nehmen Sie eine oder mehrere der folgenden Änderungen vor, um dieses Problem zu beheben, ohne Verbindungen zu externen IP-Adressen zuzulassen.

Weitere Informationen zum Konfigurieren des Internetzugriffs für Dataflow finden Sie unter Internetzugang für Dataflow.

Netzwerk oder Subnetzwerk ist für das Dataflow-Dienstkonto nicht zugänglich oder nicht vorhanden

Einer der folgenden Fehler tritt auf, wenn Sie versuchen, einen Dataflow-Job auszuführen. Der Job schlägt fehl.

Workflow failed. Causes: Network default is not accessible to Dataflow Service
account or does not exist
Workflow failed. Causes: Subnetwork SUBNETWORK is not
accessible to Dataflow Service account or does not exist

Das Problem kann folgende Ursachen haben:

  • Sie lassen beim Erstellen des Dataflow-Jobs die Subnetzwerk- und Netzwerkparameter weg, aber ein VPC-Netzwerk im automatischen Modus namens default ist in Ihrem Projekt nicht vorhanden. Möglicherweise haben Sie kein Standardnetzwerk, wenn das Standardnetzwerk gelöscht wurde oder eine Einschränkung der Organisationsrichtlinie verhindert, dass Sie ein Standardnetzwerk erstellen.
  • Das Subnetzwerk fehlt.
  • Der Subnetzwerkparameter wurde falsch angegeben.
  • Die erforderlichen Berechtigungen für das Dataflow-Dienstkonto fehlen.
  • Wenn Sie eine freigegebene VPC verwenden, muss der Wert für das Hostprojekt das Projekt sein, in dem die VPC gehostet wird. Weitere Informationen über Shared VPC finden Sie in der Shared VPC-Übersicht.

Folgen Sie der Anleitung zum Angeben eines Netzwerks und Unternetzwerks, um das Problem zu beheben.

RPC-Zeitüberschreitung oder Verbindungsfehler an den Ports 12345 oder 12346

Einer der folgenden Fehler tritt auf, wenn Sie einen Dataflow-Job ausführen, der weder Streaming Engine noch Dataflow Shuffle verwendet. Der Job bleibt hängen oder schlägt fehl.

Für Streamingjobs:

Rpc to WORKER_HARNESS:12345 completed with error
UNAVAILABLE: failed to connect to all addresses; last error : UNKNOWN:
ipv4:WORKER_IP_ADDRESS:12345: Failed to connect to remote
host: FD Shutdown

Für Batchjobs:

(g)RPC timed out when SOURCE_WORKER_HARNESS talking to
DESTINATION_WORKER_HARNESS:12346.

Dieses Problem tritt auf, wenn eine Firewallregel fehlt, die Netzwerk-Traffic an den TCP-Ports 12345 und 12346 zulässt. Wenn der Job mehrere Worker verwendet, können die Worker nicht miteinander kommunizieren.

Informationen zur Behebung dieses Problems finden Sie in den Schritten zur Fehlerbehebung unter DEADLINE_EXCEEDED oder Server reagiert nicht.

Einzelner Worker wird wiederholt gestartet und beendet

Das folgende Problem tritt auf, wenn Sie einen Dataflow-Job starten. Auf der Seite Jobmesswerte des Dataflow-Jobs wird im Diagramm CPU-Auslastung (alle Worker) angezeigt, dass ein Worker wiederholt gestartet und dann nach ein paar Minuten beendet wird. Es ist jeweils nur ein Worker verfügbar.

Diagramm zur CPU-Auslastung, das zeigt, dass jeweils ein Worker wiederholt erstellt und dann beendet wird.

Folgender Fehler tritt auf:

The Dataflow job appears to be stuck because no worker activity has been seen
in the last 1h. Please check the worker logs in Stackdriver Logging.

Es werden keine Worker-Logs erstellt.

In den Joblogs werden möglicherweise mehrere Meldungen angezeigt, die der folgenden ähneln:

Autoscaling: Raised the number of workers to 1 based on the rate of progress in
the currently running stage(s).

Dieses Problem tritt auf, wenn das VPC-Netzwerk keine Standardroute zum Internet und keine Standardroute zum Subnetzwerk hat.

So beheben Sie das Problem: Standardrouten zu Ihrem VPC-Netzwerk hinzufügen. Weitere Informationen finden Sie unter Internetzugriff für Dataflow.

Dieses Problem kann auch auftreten, wenn sich das vom Nutzer verwaltete Worker-Dienstkonto und der Dataflow-Job in verschiedenen Projekten befinden. Weitere Informationen dazu, wie Sie dieses Problem bei der Verwendung von projektübergreifenden Dienstkonten vermeiden können, finden Sie in den Anleitungen in Schritt 3 und Schritt 4 unter Vom Nutzer verwaltetes Worker-Dienstkonto angeben.

Wenn Ihr VPC-Netzwerk Standardrouten hat und sich das vom Nutzer verwaltete Worker-Dienstkonto und der Dataflow-Job im selben Projekt befinden, melden Sie sich auf der Worker-VM des Dataflow-Jobs an und prüfen Sie die Logs im Verzeichnis /var/log/dataflow, um das Problem zu ermitteln.

Subnetzwerk hat keinen privater Google-Zugriff

Der folgende Fehler tritt auf, wenn Sie einen Dataflow-Job starten, in dem externe IP-Adressen deaktiviert sind:

Workflow failed. Causes: Subnetwork SUBNETWORK on project
PROJECT_ID network NETWORK in
region REGION does not have Private Google Access, which
is required for usage of private IP addresses by the Dataflow workers.

Dieses Problem tritt auf, wenn Sie externe IP-Adressen deaktivieren, ohne den privater Google-Zugriff zu aktivieren.

So beheben Sie das Problem: privaten Google-Zugriff für das Subnetzwerk, das der Dataflow-Job verwendet, aktivieren.

Dataflow-Job mit einem bestimmten IP-Bereich kann nicht erstellt werden

Dataflow unterstützt das Zuweisen eines statischen IP-Bereichs zu den Worker-VMs nicht. Um das Problem zu umgehen, können Sie ein Subnetzwerk mit einer bestimmten IP-Adressbereich erstellen und den Dataflow-Job in dem Subnetzwerk bereitstellen.

Weitere Informationen zur Verwendung von Subnetzwerken mit Dataflow finden Sie unter Netzwerk und Subnetzwerk angeben.

Informationen zum Konfigurieren von IP-Bereichen in Subnetzwerken finden Sie unter Alias-IP-Bereiche konfigurieren.

Informationen zum Ausführen der Pipeline im Subnetzwerk finden Sie unter Pipeline mit angegebenem Subnetzwerk ausführen.

Möglicherweise müssen Sie auch eine NAT-Regel und einen Router erstellen. Weitere Informationen finden Sie unter Cloud NAT.

Nächste Schritte

Weitere Schritte zur Fehlerbehebung bei der Netzwerkverbindung finden Sie unter Fehlerbehebung bei internen Verbindungen zwischen VMs.