En esta página se explica cómo resolver problemas con las redes de Dataflow.
Para obtener más información sobre cómo configurar la red de tus trabajos de Dataflow, consulta los artículos Configurar el acceso a Internet y las reglas de cortafuegos y Especificar una red y una subred.
No se puede crear PoolableConnectionFactory
Se produce el siguiente error cuando tu 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 debido a una regla de salida o a un cortafuegos.
Para identificar la causa principal de este problema, crea y ejecuta pruebas de conectividad. Las pruebas de conectividad pueden ayudarte a identificar dónde se bloquea el tráfico.
Para actualizar las reglas de salida, consulta el ejemplo de regla de salida de cortafuegos.
Se agota el tiempo de espera de la conexión al usar Cloud NAT
Puede producirse el siguiente error cuando tu trabajo de Dataflow intenta conectarse a un servicio externo a través de una pasarela Cloud NAT:
java.net.ConnectTimeoutException: Connection timed out
Este problema puede producirse si tu trabajo de Dataflow está configurado para usar direcciones IP externas cuando tu red también está configurada para usar Cloud NAT en 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 Cloud NAT, lo que puede provocar que se agote el tiempo de espera de la conexión si las reglas de cortafuegos impiden este acceso directo.
Para resolver este problema, configure sus trabajadores de Dataflow para que no usen direcciones IP externas. Esta configuración ayuda a asegurarse de que el tráfico de salida se enruta a través de la pasarela 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 las direcciones IP externas, consulta el artículo Configurar el acceso a Internet y las reglas de firewall.
No se permiten referencias entre proyectos para este recurso
Se produce el siguiente error al ejecutar 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 se produce si especificas una subred en una red de VPC compartida, pero el proyecto de servicio no está asociado al proyecto del host de la VPC compartida.
Para solucionar este problema, un administrador de la VPC compartida debe vincular el proyecto de servicio al proyecto host.
La instancia debe estar en la misma región que la subred
Se produce el siguiente error 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 se produce cuando tu trabajo y la subred especificada en él se encuentran en regiones diferentes.
Para solucionar este problema, ejecuta el trabajo en la región en la que se encuentra tu subred.
Por ejemplo, si tu subred está en us-central1
, ejecuta el trabajo en la región us-central1
.
El espacio de direcciones IP se ha agotado
Cuando creas una tarea de Dataflow o activas una operación de escalado automático, es posible que estas operaciones fallen y se muestre 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:
- Reduce el número de solicitudes de trabajadores de la tarea de Dataflow.
Puedes indicar un número específico de trabajadores configurando la opción
num_workers
pipeline o puedes establecer un límite superior para el número de trabajadores con la opciónmax_num_workers
pipeline. Para obtener más información, consulta las opciones de Pipeline. - Si es posible, aumenta el tamaño de la subred de la tarea de Dataflow. Para obtener información sobre cómo ampliar una subred, consulta la documentación de Virtual Private Cloud.
- Usa una subred diferente con suficientes direcciones IP disponibles para el trabajo de Dataflow.
- Si es posible, crea una subred específica con un número suficiente de direcciones IP para las tareas de Dataflow.
La interfaz de red debe especificar una subred si el recurso de red está en el modo de subred personalizada
Se produce el siguiente error al ejecutar 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 se produce si la red VPC llamada default
se ha convertido de una red VPC de modo automático a una red VPC de modo personalizado.
Para solucionar este problema, especifica el parámetro subred cuando utilices una red de VPC en modo personalizado. Para obtener más información, consulta Especificar una red y una subred.
No se puede acceder a la red
Se produce el siguiente error cuando tienes las direcciones IP externas inhabilitadas e 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 las conexiones a direcciones IP externas, pero tu canalización necesita conectarse a una dirección 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 se bloquea el tráfico, crea y ejecuta pruebas de conectividad.
Para solucionar este problema sin permitir las conexiones a direcciones IP externas, haga uno o varios de los siguientes cambios.
- Configura una solución NAT, como Cloud NAT.
- Configura Acceso privado de Google.
- Si no puedes configurar una solución NAT, puedes usar contenedores personalizados para proporcionar dependencias de la canalización de Python.
Para obtener más información sobre cómo configurar el acceso a Internet para Dataflow, consulta el artículo Acceso a Internet para Dataflow.
La red o la subred no están accesibles para la cuenta de servicio de Dataflow o no existen
Se produce uno de los siguientes errores al intentar ejecutar un trabajo de Dataflow. El trabajo falla.
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
Este error puede producirse por varios motivos:
- Omite los parámetros de subred y de red al crear el trabajo de Dataflow, pero no existe ninguna red VPC de modo automático llamada
default
en su proyecto. Es posible que no tengas una red predeterminada si se ha eliminado o si una restricción de la política de la organización te impide crear una. - Falta la subred.
- El parámetro de subred se ha especificado de forma incorrecta.
- Faltan los permisos necesarios para la cuenta de servicio de Dataflow.
- Si utilizas una VPC compartida, el valor del proyecto del host debe ser el proyecto en el que se aloja la VPC. Para obtener más información sobre la VPC compartida, consulta la descripción general de la VPC compartida.
Para solucionar este problema, sigue las directrices para especificar una red y una subred.
Se ha agotado el tiempo de espera de la RPC o no se ha podido conectar en los puertos 12345 o 12346
Se produce uno de los siguientes errores al ejecutar una tarea de Dataflow que no usa Streaming Engine ni Dataflow Shuffle. El trabajo se bloquea o falla.
En el caso de las tareas de streaming:
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
En el caso de las tareas 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 cortafuegos que permita el tráfico de red en los puertos TCP 12345
y 12346
. Cuando el trabajo usa varios procesos de trabajo, estos no pueden comunicarse entre sí.
Para solucionar este problema, consulta los pasos que se indican en DEADLINE_EXCEEDED o Server Unresponsive.
Un solo trabajador se inicia y se detiene repetidamente
El siguiente problema se produce al iniciar una tarea de Dataflow. En la página Métricas de la tarea de Dataflow, el gráfico Uso de CPU (todos los trabajadores) muestra que un trabajador se inicia repetidamente y, después de unos minutos, se detiene. Solo hay un trabajador disponible en un momento dado.
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 trabajo, 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, añada rutas predeterminadas a su red de VPC. Para obtener más información, consulta el artículo sobre el acceso a Internet de Dataflow.
Este problema también puede producirse si la cuenta de servicio de trabajador gestionada 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 al usar cuentas de servicio entre proyectos, consulta las instrucciones de los pasos 3 y 4 del artículo Especificar una cuenta de servicio de trabajador gestionada por el usuario.
Si tu red de VPC tiene rutas predeterminadas y la cuenta de servicio de trabajador gestionada por el usuario y el trabajo de Dataflow están en el mismo proyecto, inicia sesión en la VM de trabajador del trabajo de Dataflow y consulta los registros del directorio /var/log/dataflow
para identificar el problema.
La subred no tiene Acceso privado de Google
Se produce el siguiente error al iniciar 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 desactiva las direcciones IP externas sin habilitar Acceso privado de Google.
Para solucionar este problema, habilite el acceso privado de Google en la subred que utiliza el trabajo de Dataflow.
No se puede crear Dataflow con un intervalo de IP especificado
Dataflow no admite la asignación de un intervalo de IPs estáticas a las VMs de los trabajadores. Como solución alternativa, puedes crear una subred con un intervalo de direcciones IP específico e implementar la tarea de Dataflow en esa subred.
Para obtener más información sobre cómo usar subredes con Dataflow, consulta Especificar una red y una subred.
Para obtener información sobre cómo configurar intervalos de IP en subredes, consulta Configurar intervalos de IP de alias.
Para ejecutar tu flujo de procesamiento en la subred, consulta Ejecutar un flujo de procesamiento con la subred especificada.
También es posible que tengas que crear una regla NAT y un router. Para obtener más información, consulta Cloud NAT.
Siguientes pasos
Para ver más pasos de solución de problemas de redes, consulta Solucionar problemas de conectividad interna entre máquinas virtuales.