Résoudre les problèmes de mise en réseau Dataflow

Cette page explique comment résoudre les problèmes liés à la mise en réseau Dataflow.

Pour en savoir plus sur la configuration de la mise en réseau de vos jobs Dataflow, consultez les pages Configurer l'accès à Internet et les règles de pare-feu et Spécifier un réseau et un sous-réseau.

Impossible de créer PoolableConnectionFactory

L'erreur suivante se produit lorsque votre job Dataflow doit se connecter à une base de données externe :

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

Ce problème survient lorsque le nœud de calcul Dataflow ne peut pas établir de connexion avec le serveur de base de données, souvent en raison d'une règle de sortie ou d'un pare-feu.

Pour identifier la cause première de ce problème, créez et exécutez l'outil Tests de connectivité. L'outil Tests de connectivité peut vous aider à identifier les endroits où le trafic est bloqué.

Pour mettre à jour vos règles de sortie, consultez Exemple de règle de sortie de pare-feu.

Délai d'expiration de la connexion lors de l'utilisation de Cloud NAT

L'erreur suivante peut se produire lorsque votre job Dataflow tente de se connecter à un service externe via une passerelle Cloud NAT :

java.net.ConnectTimeoutException: Connection timed out

Ce problème peut se produire si votre job Dataflow est configuré pour utiliser des adresses IP externes alors que votre réseau est également configuré pour utiliser Cloud NAT pour le trafic de sortie. Lorsque les nœuds de calcul Dataflow disposent d'adresses IP externes, ils tentent d'acheminer le trafic directement vers Internet au lieu de passer par la passerelle Cloud NAT. Cela peut entraîner des délais d'expiration de connexion si les règles de pare-feu empêchent cet accès direct.

Pour résoudre ce problème, configurez vos nœuds de calcul Dataflow pour qu'ils n'utilisent pas d'adresses IP externes. Cette configuration permet de s'assurer que le trafic de sortie est acheminé via la passerelle Cloud NAT configurée. Pour en savoir plus, consultez la documentation Cloud NAT.

Pour savoir comment désactiver les adresses IP externes, consultez Configurer l'accès à Internet et les règles de pare-feu.

Les références inter-projets pour cette ressource ne sont pas autorisées

L'erreur suivante se produit lorsque vous exécutez un job Dataflow sur un réseau VPC partagé :

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.

Ce problème se produit si vous spécifiez un sous-réseau dans un réseau VPC partagé, mais que le projet de service n'est pas associé au projet hôte de VPC partagé.

Pour résoudre ce problème, un administrateur de VPC partagé doit associer le projet de service au projet hôte.

L'instance doit se trouver dans la même région que le sous-réseau

L'erreur suivante se produit lorsque vous exécutez un job Dataflow avec un sous-réseau spécifié :

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.

Ce problème se produit lorsque votre job et le sous-réseau spécifié dans votre job se trouvent dans des régions différentes.

Pour résoudre ce problème, exécutez votre job dans la région où se trouve votre sous-réseau. Par exemple, si votre sous-réseau se trouve dans us-central1, exécutez votre job dans la région us-central1.

L'espace d'adresses IP est épuisé

Lorsque vous créez un job Dataflow ou déclenchez une opération d'autoscaling, ces opérations peuvent échouer et renvoyer le message suivant :

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

Pour résoudre cette erreur, vous pouvez essayer l'une des stratégies suivantes :

  1. Réduisez le nombre de requêtes de nœuds de calcul pour le job Dataflow. Vous pouvez fournir un nombre spécifique de nœuds de calcul en définissant l'option de pipeline num_workers, ou vous pouvez définir une limite supérieure pour le nombre de nœuds de calcul à l'aide de l'option de pipeline max_num_workers. Pour en savoir plus, consultez Options de pipeline.
  2. Si possible, augmentez la taille du sous-réseau du job Dataflow. Pour savoir comment étendre un sous-réseau existant, consultez la documentation sur le cloud privé virtuel.
  3. Utilisez un autre sous-réseau avec suffisamment d'adresses IP disponibles pour le job Dataflow.
  4. Si possible, créez un sous-réseau dédié avec un nombre suffisant d'adresses IP pour les jobs Dataflow.

L'interface réseau doit spécifier un sous-réseau si la ressource réseau est en mode de sous-réseau personnalisé

L'erreur suivante se produit lorsque vous exécutez un job Dataflow :

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

Ce problème se produit si le réseau VPC nommé default a été converti d'un réseau VPC en mode automatique en un réseau VPC en mode personnalisé.

Pour résoudre ce problème, spécifiez le paramètre de sous-réseau lorsque vous utilisez un réseau VPC en mode personnalisé. Pour plus d'informations, consultez la section Spécifier un réseau et un sous-réseau.

Réseau inaccessible

L'erreur suivante se produit lorsque les adresses IP externes sont désactivées et que vous essayez d'exécuter un job Dataflow :

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

Ce problème survient, car la configuration de votre pipeline n'autorise pas les connexions aux adresses IP externes, mais il doit se connecter à une adresse IP externe pour s'exécuter. Les options de pipeline suivantes désactivent les connexions IP externes :

Java

--usePublicIps=false

Python

--no_use_public_ips=true

Go

--no_use_public_ips=true

API

options = PipelineOptions(use_public_ips=False)

Pour identifier l'emplacement où le trafic est bloqué, créez et exécutez l'outil Tests de connectivité.

Pour résoudre ce problème sans autoriser les connexions aux adresses IP externes, effectuez une ou plusieurs des modifications suivantes.

Pour en savoir plus sur la configuration de l'accès à Internet pour Dataflow, consultez Accès à Internet pour Dataflow.

Le réseau ou le sous-réseau n'est pas accessible au compte de service Dataflow ou n'existe pas

L'une des erreurs suivantes se produit lorsque vous essayez d'exécuter un job Dataflow. Le job échoue.

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

Le problème peut survenir pour les raisons suivantes :

  • Vous omettez les paramètres de sous-réseau et de réseau lorsque vous créez le job Dataflow, mais un réseau VPC en mode automatique nommé default n'existe pas dans votre projet. Il est possible que vous ne disposiez pas d'un réseau par défaut si le réseau par défaut a été supprimé ou si une contrainte de règle d'administration vous empêche de créer un réseau par défaut.
  • Le sous-réseau est manquant.
  • Le paramètre de sous-réseau n'est pas spécifié correctement.
  • Les autorisations requises pour le compte de service Dataflow sont manquantes.
  • Si vous utilisez un VPC partagé, la valeur du projet hôte doit correspondre au projet dans lequel le VPC est hébergé. Pour en savoir plus sur le VPC partagé, consultez la Présentation du VPC partagé.

Pour résoudre ce problème, suivez les consignes pour spécifier un réseau et un sous-réseau.

Le RPC a expiré ou n'a pas pu se connecter sur les ports 12345 ou 12346

L'une des erreurs suivantes se produit lorsque vous exécutez un job Dataflow qui n'utilise pas Streaming Engine ou Dataflow Shuffle. Le job se bloque ou échoue.

Pour les jobs traités par flux :

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

Pour les jobs par lot :

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

Ce problème se produit si une règle de pare-feu autorisant le trafic réseau sur les ports TCP 12345 et 12346 est manquante. Lorsque le job utilise plusieurs nœuds de calcul, ceux-ci ne peuvent pas communiquer entre eux.

Pour résoudre ce problème, consultez la procédure de dépannage dans DEADLINE_EXCEEDED ou serveur non réactif.

Un nœud de calcul unique est démarré et arrêté plusieurs fois

Le problème suivant se produit lorsque vous lancez un job Dataflow. Sur la page Métriques du job du job Dataflow, le graphique Utilisation du processeur (tous les nœuds de calcul) indique qu'un nœud de calcul est démarré, puis arrêté à plusieurs reprises après quelques minutes. Un seul nœud de calcul est disponible à la fois.

Graphique d&#39;utilisation du processeur montrant qu&#39;un nœud de calcul à la fois est créé, puis arrêté à plusieurs reprises.

L'erreur suivante se produit :

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.

Aucun journal de nœud de calcul n'est créé.

Dans les journaux des jobs, plusieurs messages semblables à l'exemple suivant peuvent s'afficher :

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

Ce problème se produit si le réseau VPC ne dispose pas d'une route par défaut vers Internet ni d'une route par défaut vers le sous-réseau.

Pour résoudre ce problème, ajoutez des routes par défaut à votre réseau VPC. Pour en savoir plus, consultez Accès à Internet pour Dataflow.

Ce problème peut également se produire si le compte de service de nœud de calcul géré par l'utilisateur et le job Dataflow se trouvent dans des projets différents. Pour savoir comment éviter ce problème lorsque vous utilisez des comptes de service multiprojets, consultez les conseils fournis aux étapes 3 et 4 de la section Spécifier un compte de service Worker géré par l'utilisateur.

Si votre réseau VPC comporte des routes par défaut, et que le compte de service de nœud de calcul géré par l'utilisateur et le job Dataflow se trouvent dans le même projet, connectez-vous à la VM de nœud de calcul du job Dataflow et consultez les journaux du répertoire /var/log/dataflow pour identifier le problème.

Le sous-réseau ne dispose pas de l'Accès privé à Google

L'erreur suivante se produit lorsque vous lancez un job Dataflow dans laquelle les adresses IP externes sont désactivées :

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.

Ce problème se produit si vous désactivez les adresses IP externes sans activer l'accès privé à Google.

Pour résoudre ce problème, activez l'Accès privé à Google pour le sous-réseau utilisé par le job Dataflow.

Impossible de créer un Dataflow avec une plage d'adresses IP spécifiée

Dataflow n'est pas compatible avec l'attribution d'une plage d'adresses IP statiques aux VM de nœud de calcul. Pour contourner ce problème, vous pouvez créer un sous-réseau avec une plage d'adresses IP spécifique et déployer le job Dataflow dans ce sous-réseau.

Pour en savoir plus sur l'utilisation des sous-réseaux avec Dataflow, consultez Spécifier un réseau et un sous-réseau.

Pour en savoir plus sur la configuration des plages d'adresses IP dans les sous-réseaux, consultez Configurer des plages d'adresses IP d'alias.

Pour exécuter votre pipeline dans le sous-réseau, consultez Exécuter votre pipeline avec le sous-réseau spécifié.

Vous devrez peut-être également créer une règle NAT et un routeur. Pour en savoir plus, consultez Cloud NAT.

Étapes suivantes

Pour connaître la procédure de dépannage supplémentaire, consultez Résoudre les problèmes de connectivité interne entre les VM.