本页面介绍了如何解决 Dataflow 网络问题。
如需详细了解如何为 Dataflow 作业配置网络,请参阅配置互联网访问权限和防火墙规则以及指定网络和子网。
如果网络资源处于自定义子网模式,则网络接口必须指定子网
运行 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
如果名为 default
的 VPC 网络从自动模式 VPC 网络转换为自定义模式 VPC 网络,则会发生此问题。
如需解决此问题,请在使用自定义模式 VPC 网络时指定子网参数。如需了解详情,请参阅指定网络和子网。
无法创建 PoolableConnectionFactory
当 Dataflow 作业需要连接到外部数据库时,会发生以下错误:
java.sql.SQLException: Cannot create PoolableConnectionFactory
(The connection attempt failed.)
如果 Dataflow 工作器无法与数据库服务器建立连接(通常是由于出站规则或防火墙导致),则会出现此问题。
如需确定此问题的根本原因,请创建和运行 Connectivity Tests 测试。Connectivity Tests 测试可帮助您确定流量被阻止的位置。
如需更新出站规则,请参阅防火墙出站规则示例。
不允许对此资源进行跨项目引用
在共享 VPC 网络上运行 Dataflow 作业时发生以下错误:
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.
如果您在共享 VPC 网络中指定了子网,但服务项目未关联到共享 VPC 宿主项目,则会发生此问题。
如需解决此问题,共享 VPC 管理员必须将服务项目关联到宿主项目。
实例必须与子网位于同一区域
在运行指定了子网的 Dataflow 作业时,会发生以下错误:
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.
如果您的作业和作业中指定的子网位于不同的区域,就会出现此问题。
如需解决此问题,请在子网所在的区域运行作业。例如,如果您的子网位于 us-central1
,请在区域 us-central1
中运行作业。
网络无法访问
当您停用了公共 IP 并尝试运行 Dataflow 作业时,会发生以下错误:
NewConnectionError(''<pip._vendor.urllib3.connection.HTTPSConnection object at ID>:
Failed to establish a new connection: [Errno 101] Network is unreachable
出现此问题的原因是流水线配置不允许连接到外部 IP 地址,但您的流水线需要连接到外部 IP 才能运行。以下流水线选项会停用外部 IP 连接:
Java
--usePublicIps=false
Python
--no_use_public_ips=true
Go
--no_use_public_ips=true
API
options = PipelineOptions(use_public_ips=False)
如需确定流量被阻止的位置,请创建并运行 Connectivity Tests 测试。
如需在不允许连接到外部 IP 地址的情况下解决此问题,请进行以下一项或多项更改。
- 配置 NAT 解决方案,例如 Cloud NAT。
- 配置专用 Google 访问通道。
- 如果您无法配置 NAT 解决方案,可以使用自定义容器来提供 Python 流水线依赖项。
如需详细了解如何为 Dataflow 配置互联网访问权限,请参阅 Dataflow 的互联网访问权限。
网络或子网无法由 Dataflow 服务账号访问或不存在
尝试运行 Dataflow 作业时发生以下错误之一。任务失败。
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
出现此问题的原因如下:
- 您在创建 Dataflow 作业时同时省略了子网和网络参数,但项目中不存在名为
default
的自动模式 VPC 网络。如果默认网络已被删除,或者组织政策限制条件阻止您创建默认网络,则您可能没有默认网络。 - 缺少子网。
- 未正确指定子网参数。
- 缺少 Dataflow 服务账号所需的权限。
- 如果您使用的是共享 VPC,则宿主项目的值必须是托管 VPC 的项目。如需详细了解共享 VPC,请参阅共享 VPC 概览。
如需解决此问题,请按照有关指定网络和子网的指南进行操作。
RPC 超时或未能在端口 12345 或 12346 上连接
运行未使用 Streaming Engine 或 Dataflow Shuffle 的 Dataflow 作业时发生以下错误之一。作业卡住或失败。
对于流处理作业:
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
对于批量作业:
(g)RPC timed out when SOURCE_WORKER_HARNESS talking to
DESTINATION_WORKER_HARNESS:12346.
如果缺少允许在 TCP 端口 12345
和 12346
上传递网络流量的防火墙规则,则会发生此问题。作业使用多个工作器时,这些工作器无法相互通信。
如需解决此问题,请参阅 DEADLINE_EXCEEDED 或服务器无响应中的问题排查步骤。
单个工作器反复启动和停止
启动 Dataflow 作业时发生以下问题。在 Dataflow 作业的作业指标页面上,CPU 利用率(所有工作器)图表显示某个工作器反复启动,然后在几分钟后停止。在给定时间只有一个工作器可用。
发生以下错误:
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.
系统不会创建工作器日志。
作业日志中可能会出现类似于以下内容的多条消息:
Autoscaling: Raised the number of workers to 1 based on the rate of progress in
the currently running stage(s).
如果 VPC 网络没有到互联网的默认路由以及到子网的默认路由,则会发生此问题。
如需解决此问题,请向 VPC 网络添加默认路由。如需了解详情,请参阅 Dataflow 的互联网访问权限。
子网没有专用 Google 访问通道
启动停用了外部 IP 地址的 Dataflow 作业时发生以下错误:
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.
如果您在未启用专用 Google 访问通道的情况下关闭外部 IP 地址,则会发生此问题。
如需解决此问题,请为 Dataflow 作业使用的子网启用专用 Google 访问通道。
无法创建具有指定 IP 范围的 Dataflow
Dataflow 不支持为工作器虚拟机分配静态 IP 范围。如需解决此问题,您可以创建具有特定 IP 地址范围的子网,并在该子网中部署 Dataflow 作业。
如需详细了解如何将子网与 Dataflow 搭配使用,请参阅指定网络和子网。
如需了解如何在子网中配置 IP 范围,请参阅配置别名 IP 范围。
如需在子网中运行流水线,请参阅使用指定的子网运行流水线。
您可能还需要创建 NAT 规则和路由器。如需了解详情,请参阅 Cloud NAT。
后续步骤
如需了解其他网络问题排查步骤,请参阅排查虚拟机之间的内部连接问题。