Risolvere i problemi di rete di Dataflow

Le regole di routing e firewall di Virtual Private Cloud (VPC) aiutano i worker Dataflow a comunicare tra loro e a raggiungere gli endpoint Google Cloud richiesti. Utilizza le seguenti informazioni per diagnosticare e risolvere gli errori di rete comuni, come i timeout di comunicazione dei worker, l'esaurimento degli indirizzi IP e le configurazioni di accesso privato Google mancanti.

Per saperne di più sulla configurazione del networking per i job Dataflow, consulta Configura l'accesso a internet e le regole firewall e Specifica una rete e una subnet.

Impossibile creare PoolableConnectionFactory

Il seguente errore si verifica quando il job Dataflow deve connettersi a un database esterno:

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

Questo problema si verifica quando il worker Dataflow non riesce a stabilire una connessione con il server del database, spesso a causa di una regola in uscita o di un firewall.

Per identificare la causa principale di questo problema, crea ed esegui Connectivity Tests. Connectivity Tests può aiutarti a identificare dove è bloccato il traffico.

Per aggiornare le regole in uscita, consulta Esempio di regola firewall in uscita.

Timeout della connessione quando si utilizza Cloud NAT

Quando il job Dataflow tenta di connettersi a un servizio esterno tramite un gateway Cloud NAT, può verificarsi il seguente errore:

java.net.ConnectTimeoutException: Connection timed out

Questo problema può verificarsi se il job Dataflow è configurato per utilizzare indirizzi IP esterni quando la rete è configurata anche per utilizzare Cloud NAT per il traffico in uscita. Quando i worker Dataflow hanno indirizzi IP esterni, tentano di instradare il traffico a internet direttamente anziché tramite il gateway Cloud NAT, il che può causare timeout della connessione se le regole firewall impediscono questo accesso diretto.

Per risolvere il problema, configura i worker Dataflow in modo che non utilizzino indirizzi IP esterni. Questa configurazione contribuisce a garantire che il traffico in uscita venga instradato attraverso il gateway Cloud NAT configurato. Per saperne di più, consulta la documentazione di Cloud NAT.

Per informazioni su come disattivare gli indirizzi IP esterni, consulta Configura l'accesso a internet e le regole firewall.

I riferimenti tra progetti per questa risorsa non sono consentiti

Il seguente errore si verifica quando esegui un job Dataflow su una rete VPC condiviso:

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.

Questo problema si verifica se specifichi una subnet in una rete VPC condivisa, ma il progetto di servizio non è collegato al progetto host del VPC condiviso.

Per risolvere il problema, un amministratore della rete VPC condivisa deve collegare il progetto di servizio al progetto host.

L'istanza deve trovarsi nella stessa regione della subnet

Il seguente errore si verifica quando esegui un job Dataflow con una subnet specificata:

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.

Questo problema si verifica quando il job e la subnet specificata nel job si trovano in regioni diverse.

Per risolvere il problema, esegui il job nella regione in cui si trova la subnet. Ad esempio, se la tua subnet si trova in us-central1, esegui il job nella regione us-central1.

Lo spazio IP è esaurito

Quando crei un job Dataflow o attivi un'operazione di scalabilità automatica, queste operazioni potrebbero non riuscire e generare il seguente messaggio:

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

Per risolvere questo errore, puoi provare una delle seguenti strategie:

  1. Riduci il numero di richieste di worker per il job Dataflow. Puoi fornire un numero specifico di worker impostando l'opzione della pipeline num_workers oppure puoi impostare un limite massimo per il numero di worker utilizzando l'opzione della pipeline max_num_workers. Per saperne di più, consulta Opzioni della pipeline.
  2. Se possibile, aumenta le dimensioni della subnet del job Dataflow. Per informazioni sull'espansione di una subnet esistente, consulta la documentazione di Virtual Private Cloud.
  3. Utilizza una subnet diversa con un numero sufficiente di indirizzi IP disponibili per il job Dataflow.
  4. Se possibile, crea una subnet dedicata con un numero sufficiente di indirizzi IP per i job Dataflow.

L'interfaccia di rete deve specificare una subnet se la risorsa di rete è in modalità subnet personalizzata

Quando esegui un job Dataflow, si verifica il seguente errore:

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

Questo problema si verifica se la rete VPC denominata default è stata convertita da una rete VPC in modalità automatica a una rete VPC in modalità personalizzata.

Per risolvere il problema, specifica il parametro della subnet quando utilizzi una rete VPC in modalità personalizzata. Per saperne di più, consulta Specifica una rete e una subnet.

Rete non raggiungibile

Il seguente errore si verifica quando gli indirizzi IP esterni sono disabilitati e provi a eseguire un job Dataflow:

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

Questo problema si verifica perché la configurazione della pipeline non consente le connessioni a indirizzi IP esterni, ma la pipeline deve connettersi a un IP esterno per essere eseguita. Le seguenti opzioni della pipeline disattivano le connessioni IP esterne:

Java

--usePublicIps=false

Python

--no_use_public_ips=true

Vai

--no_use_public_ips=true

API

options = PipelineOptions(use_public_ips=False)

Per identificare dove il traffico è bloccato, crea ed esegui Connectivity Tests.

Per risolvere il problema senza consentire le connessioni a indirizzi IP esterni, apporta una o più delle seguenti modifiche.

Per saperne di più sulla configurazione dell'accesso a internet per Dataflow, consulta Accesso a internet per Dataflow.

La rete o la subnet non è accessibile al account di servizio Dataflow o non esiste

Si verifica uno dei seguenti errori quando provi a eseguire un job Dataflow. Il job non va a buon fine.

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

Il problema può verificarsi per i seguenti motivi:

  • Ometti i parametri di subnet e rete quando crei il job Dataflow, ma nel tuo progetto non esiste una rete VPC in modalità automatica denominata default. Potresti non avere una rete predefinita se è stata eliminata o se un vincolo della policy dell'organizzazione ti impedisce di crearne una.
  • Manca la subnet.
  • Il parametro della subnet non è specificato correttamente.
  • Le autorizzazioni richieste per il account di servizio Dataflow non sono presenti.
  • Se utilizzi un VPC condiviso, il valore del progetto host deve essere il progetto in cui è ospitato il VPC. Per scoprire di più sul VPC condiviso, consulta Panoramica del VPC condiviso.

Per risolvere il problema, segui le linee guida per specificare una rete e una subnet.

Timeout o connessione non riuscita della RPC sulle porte 12345 o 12346

Si verifica uno dei seguenti errori quando esegui un job Dataflow che non utilizza Streaming Engine o Dataflow Shuffle. Il job si blocca o non va a buon fine.

Per i job di flussi di dati:

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

Per i job batch:

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

Questo problema si verifica se manca una regola firewall che consente il traffico di rete sulle porte TCP 12345 e 12346. Quando il job utilizza più worker, questi non sono in grado di comunicare tra loro.

Per risolvere il problema, consulta i passaggi per la risoluzione dei problemi in DEADLINE_EXCEEDED o Server non risponde.

Un singolo worker viene avviato e arrestato ripetutamente

Il seguente problema si verifica quando avvii un job Dataflow. Nella pagina Metriche job del job Dataflow, il grafico Utilizzo CPU (tutti i worker) mostra che un worker viene avviato ripetutamente e poi arrestato dopo alcuni minuti. È disponibile un solo worker alla volta.

Grafico dell'utilizzo della CPU che mostra che un worker alla volta viene creato ripetutamente e poi arrestato.

Si verifica il seguente errore:

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.

Non vengono creati log dei worker.

Nei log del job potrebbero essere visualizzati più messaggi simili ai seguenti:

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

Questo problema si verifica se la rete VPC non ha una route predefinita verso internet e una route predefinita verso la subnet.

Per risolvere il problema, aggiungi route predefinite alla tua rete VPC. Per saperne di più, consulta Accesso a internet per Dataflow.

Questo problema può verificarsi anche se il account di servizio worker gestito dall'utente e il job Dataflow si trovano in progetti diversi. Per ulteriori informazioni su come evitare questo problema quando utilizzi service account tra progetti, consulta le indicazioni fornite nei passaggi 3 e 4 di Specifica un service account worker gestito dall'utente.

Se la tua rete VPC ha route predefinite e il account di servizio worker gestito dall'utente e il job Dataflow si trovano nello stesso progetto, accedi alla VM worker del job Dataflow e controlla i log nella directory /var/log/dataflow per identificare il problema.

La subnet non ha l'accesso privato Google

Il seguente errore si verifica quando avvii un job Dataflow in cui gli indirizzi IP esterni sono disabilitati:

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.

Questo problema si verifica se disattivi gli indirizzi IP esterni senza attivare l'accesso privato Google.

Per risolvere il problema, attiva l'accesso privato Google per la subnet utilizzata dal job Dataflow.

Impossibile creare Dataflow con un intervallo IP specificato

Dataflow non supporta l'assegnazione di un intervallo IP statico alle VM worker. Come soluzione alternativa, puoi creare una subnet con un intervallo di indirizzi IP specifico ed eseguire il deployment del job Dataflow in quella subnet.

Per saperne di più sull'utilizzo delle subnet con Dataflow, consulta Specifica una rete e una subnet.

Per informazioni sulla configurazione degli intervalli IP nelle subnet, consulta Configura intervalli IP alias.

Per eseguire la pipeline nella subnet, consulta Esegui la pipeline con la subnet specificata.

Potresti anche dover creare una regola NAT e un router. Per saperne di più, consulta Cloud NAT.

Passaggi successivi

Per ulteriori passaggi di risoluzione dei problemi di networking, consulta Risolvi i problemi di connettività interna tra le VM.