Soluciona problemas de herramientas de redes de Dataflow

En esta página, se muestra cómo resolver problemas con las redes de Dataflow.

Para obtener más información sobre cómo configurar las redes de tus trabajos de Dataflow, consulta Configura el acceso a Internet y las reglas de firewall y Especifica una red y una subred.

No se puede crear PoolableConnectionFactory

El siguiente error ocurre cuando el trabajo de Dataflow necesita conectarse a una base de datos externa:

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

Este problema se produce cuando el trabajador de Dataflow no puede establecer una conexión con el servidor de la base de datos, a menudo se debe a una regla de salida o un firewall.

Para identificar la causa raíz de este problema, crea y ejecuta pruebas de conectividad. Las pruebas de conectividad pueden ayudarte a identificar dónde está bloqueado el tráfico.

Para actualizar tus reglas de salida, consulta Ejemplo de regla de salida de firewall.

Se agota el tiempo de espera de la conexión cuando se usa Cloud NAT

El siguiente error puede ocurrir cuando tu trabajo de Dataflow intenta conectarse a un servicio externo a través de una puerta de enlace de Cloud NAT:

java.net.ConnectTimeoutException: Connection timed out

Este problema puede ocurrir si tu trabajo de Dataflow está configurado para usar direcciones IP externas cuando tu red también está configurada para usar Cloud NAT para el tráfico de salida. Cuando los trabajadores de Dataflow tienen direcciones IP externas, intentan enrutar el tráfico a Internet directamente en lugar de hacerlo a través de la puerta de enlace de Cloud NAT, lo que puede provocar tiempos de espera de conexión si las reglas de firewall impiden este acceso directo.

Para resolver este problema, configura tus trabajadores de Dataflow para que no usen direcciones IP externas. Esta configuración ayuda a garantizar que el tráfico de salida se enrute a través de la puerta de enlace de Cloud NAT configurada. Para obtener más información, consulta la documentación de Cloud NAT.

Para obtener información sobre cómo inhabilitar direcciones IP externas, consulta Configura el acceso a Internet y las reglas de firewall.

No se permiten las referencias entre proyectos de este recurso.

El siguiente error ocurre cuando ejecutas un trabajo de Dataflow en una red de VPC compartida:

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.

Este problema ocurre cuando especificas una subred en una red de VPC compartida, pero el proyecto de servicio no está vinculado al proyecto host de la VPC compartida.

Para resolver este problema, un administrador de VPC compartida debe vincular el proyecto de servicio al proyecto host.

La instancia debe estar en la misma región que la subred

El siguiente error ocurre cuando ejecutas un trabajo de Dataflow con una subred especificada:

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.

Este problema ocurre cuando tu trabajo y la subred especificada en él se encuentran en regiones diferentes.

Para resolver este problema, ejecuta tu trabajo en la región en la que se encuentra tu subred. Por ejemplo, si tu subred está en us-central1, ejecuta tu trabajo en la región us-central1.

Se agotó el espacio de IP

Cuando creas un trabajo de Dataflow o activas una operación de ajuste automático de escala, es posible que estas operaciones fallen con el siguiente mensaje:

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

Puedes probar cualquiera de las siguientes estrategias para resolver este error:

  1. Reduce la cantidad de solicitudes de trabajadores para el trabajo de Dataflow. Puedes proporcionar una cantidad específica de trabajadores si configuras la opción de canalización num_workers o puedes establecer un límite superior en la cantidad de trabajadores con la opción de canalización max_num_workers. Para obtener más información, consulta Opciones de canalización.
  2. Si es posible, aumenta el tamaño de la subred del trabajo de Dataflow. Para obtener información sobre cómo expandir una subred existente, consulta la documentación de Virtual Private Cloud.
  3. Usa una subred diferente con suficientes direcciones IP disponibles para el trabajo de Dataflow.
  4. Si es posible, crea una subred dedicada con una cantidad suficiente de direcciones IP para los trabajos de Dataflow.

La interfaz de red debe especificar una subred si el recurso de red está en modo de subred personalizado

El siguiente error ocurre cuando ejecutas un trabajo de 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

Este problema ocurre si la red de VPC llamada default se convirtió de una red de VPC de modo automático a una red de VPC de modo personalizado.

Para resolver este problema, especifica el parámetro de subred cuando uses una red de VPC de modo personalizado. Para obtener más información, consulta Especifica una red y una subred.

No se puede alcanzar la red

El siguiente error ocurre cuando tienes inhabilitadas las direcciones IP externas y, luego, intentas ejecutar un trabajo de Dataflow:

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

Este problema se produce porque la configuración de tu canalización no permite conexiones a direcciones IP externas, pero la canalización debe conectarse a una IP externa para ejecutarse. Las siguientes opciones de canalización inhabilitan las conexiones IP externas:

Java

--usePublicIps=false

Python

--no_use_public_ips=true

Go

--no_use_public_ips=true

API

options = PipelineOptions(use_public_ips=False)

Para identificar dónde está bloqueado el tráfico, crea y ejecuta pruebas de conectividad.

Para resolver este problema sin permitir conexiones a direcciones IP externas, realiza uno o más de los siguientes cambios.

Si deseas obtener más información para configurar el acceso a Internet para Dataflow, consulta Acceso a Internet para Dataflow.

La cuenta de servicio de Dataflow no puede acceder a la red o subred o no existe

Uno de los siguientes errores se produce cuando intentas ejecutar un trabajo de Dataflow. En caso de que la tarea fracase.

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

Esto puede suceder por los siguientes motivos:

  • Omites la subred y los parámetros de red cuando creas el trabajo de Dataflow, pero no existe una red de VPC de modo automático llamada default en tu proyecto. Es posible que no tengas una red predeterminada si esta se borró o si una restricción de la política de la organización te impide crear una red predeterminada.
  • Falta la subred.
  • El parámetro de subred se especificó de forma incorrecta.
  • Faltan los permisos necesarios para la cuenta de servicio de Dataflow.
  • Si usas una VPC compartida, el valor del proyecto host debe ser el proyecto en el que se aloja la VPC. Consulta Descripción general de la VPC compartida para obtener más información sobre la VPC compartida.

Para resolver este problema, sigue los lineamientos para especificar una red y una subred.

Se agotó el tiempo de espera de RPC o no se pudo conectar en los puertos 12345 o 12346

Uno de los siguientes errores ocurre cuando ejecutas un trabajo de Dataflow que no usa Streaming Engine ni Dataflow Shuffle. El trabajo se atasca o falla.

Para los trabajos de transmisión:

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

Para los trabajos por lotes:

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

Este problema se produce si falta una regla de firewall que permite el tráfico de red en los puertos TCP 12345 y 12346. Cuando el trabajo usa varios trabajadores, estos no pueden comunicarse entre sí.

Para resolver este problema, consulta los pasos para solucionar problemas en DEADLINE_EXCEEDED o Server Unresponsive.

Un solo trabajador se inicia y se detiene varias veces

El siguiente problema ocurre cuando inicias un trabajo de Dataflow. En la página del trabajo Métricas del trabajo de Dataflow, el gráfico uso de CPU (todos los trabajadores) muestra que un trabajador comenzó varias veces y se detuvo después de unos minutos. Solo hay un trabajador disponible a la vez.

Gráfico del uso de CPU en el que se muestra que un trabajador a la vez se crea de forma repetida y, luego, se detiene.

Se produce el siguiente error:

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.

No se crean registros de trabajadores.

En los registros de trabajos, pueden aparecer varios mensajes similares a los siguientes:

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

Este problema se produce si la red de VPC no tiene una ruta predeterminada a Internet y una ruta predeterminada a la subred.

Para solucionar este problema, agrega rutas predeterminadas a la red de VPC. Para obtener más información, consulta Acceso a Internet para Dataflow.

Este problema también puede ocurrir si la cuenta de servicio de trabajador administrada por el usuario y el trabajo de Dataflow están en proyectos diferentes. Para obtener más información sobre cómo evitar este problema cuando usas cuentas de servicio entre proyectos, consulta la orientación que se ofrece en los pasos 3 y 4 de Cómo especificar una cuenta de servicio de trabajador administrada por el usuario.

Si tu red de VPC tiene rutas predeterminadas y la cuenta de servicio del trabajador administrada por el usuario y el trabajo de Dataflow están en el mismo proyecto, accede a la VM de trabajador del trabajo de Dataflow y revisa los registros en el directorio /var/log/dataflow para identificar el problema.

La subred no tiene Acceso privado a Google

El siguiente error ocurre cuando inicias un trabajo de Dataflow en el que las direcciones IP externas están inhabilitadas:

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.

Este problema se produce si desactivas las direcciones IP externas sin habilitar el acceso privado a Google.

Para resolver este problema, habilita el Acceso privado a Google para la subred que usa el trabajo de Dataflow.

No se puede crear Dataflow con un rango de IP especificado

Dataflow no admite la asignación de un rango de IP estático a las VM de trabajador. Como solución alternativa, puedes crear una subred con un rango de direcciones IP e implementar el trabajo de Dataflow en esa subred.

Para obtener más información sobre el uso de subredes con Dataflow, consulta Especificar una red y una subred.

Para obtener información sobre cómo configurar rangos de IP en subredes, consulta Configurar rangos de IP de alias.

Para ejecutar tu canalización en la subred, consulta Ejecuta tu canalización con la subred especificada.

Es posible que también debas crear una regla NAT y un router. Para obtener más información, consulta Cloud NAT.

¿Qué sigue?

Si quieres ver más pasos para solucionar problemas de red, consulta Solucionar los problemas de conectividad interna entre las VM.