在云数据流中指定网络的问题
Problem in specifying the network in cloud dataflow
我没有配置项目,每当我 运行 我的工作时都会收到此错误 网络默认没有为内部连接打开 TCP 端口 1-65535 的规则与其他虚拟机。仅适用目标标签 'dataflow' 或空目标标签集的规则。如果您不指定这样的规则,则任何具有多个 worker 来随机播放数据的管道都将挂起。原因:没有与您的网络关联的防火墙规则。'
google_cloud_options = p_options.view_as(GoogleCloudOptions)
google_cloud_options.region = 'europe-west1'
google_cloud_options.project = 'my-project'
google_cloud_options.job_name = 'rim'
google_cloud_options.staging_location = 'gs://my-bucket/binaries'
google_cloud_options.temp_location = 'gs://my-bucket/temp'
p_options.view_as(StandardOptions).runner = 'DataflowRunner'
p_options.view_as(SetupOptions).save_main_session = True
p_options.view_as(StandardOptions).streaming = True
p_options.view_as(WorkerOptions).subnetwork = 'regions/europe-west1/subnetworks/test'
p = beam.Pipeline(options=p_options)
我试图在命令行中指定 --network 'test' 因为它不是默认配置
您的默认防火墙规则似乎已被修改,dataflow 检测到了这一点并阻止了您的作业启动。你能确认你的防火墙规则没有在你的项目中被修改吗?。请看一下documentation here。您还将在此处找到恢复防火墙规则的命令:
gcloud compute firewall-rules create [FIREWALL_RULE_NAME] \
--network [NETWORK] \
--action allow \
--direction ingress \
--target-tags dataflow \
--source-tags dataflow \
--priority 0 \
--rules tcp:1-65535
为防火墙选择一个名称,并提供一个网络名称。然后在启动数据流作业时使用 --network 传入网络名称。如果您有一个名为 'default' 的网络,dataflow 将尝试自动使用它,因此您无需传入 --network。如果您删除了该网络,您可能希望重新创建它。
截至目前,直到 Apache Beam 版本 2.19.0。数据流没有为其虚拟机设置网络标记的规定。
相反,在创建防火墙规则时,我们应该为数据流添加一个标签。
gcloud compute firewall-rules create FIREWALL_RULE_NAME \
--network NETWORK \
--action allow \
--direction DIRECTION \
--target-tags dataflow \
--source-tags dataflow \
--priority 0 \
--rules tcp:12345-12346
查看此 link 了解更多详情
https://cloud.google.com/dataflow/docs/guides/routes-firewall
我没有配置项目,每当我 运行 我的工作时都会收到此错误 网络默认没有为内部连接打开 TCP 端口 1-65535 的规则与其他虚拟机。仅适用目标标签 'dataflow' 或空目标标签集的规则。如果您不指定这样的规则,则任何具有多个 worker 来随机播放数据的管道都将挂起。原因:没有与您的网络关联的防火墙规则。'
google_cloud_options = p_options.view_as(GoogleCloudOptions)
google_cloud_options.region = 'europe-west1'
google_cloud_options.project = 'my-project'
google_cloud_options.job_name = 'rim'
google_cloud_options.staging_location = 'gs://my-bucket/binaries'
google_cloud_options.temp_location = 'gs://my-bucket/temp'
p_options.view_as(StandardOptions).runner = 'DataflowRunner'
p_options.view_as(SetupOptions).save_main_session = True
p_options.view_as(StandardOptions).streaming = True
p_options.view_as(WorkerOptions).subnetwork = 'regions/europe-west1/subnetworks/test'
p = beam.Pipeline(options=p_options)
我试图在命令行中指定 --network 'test' 因为它不是默认配置
您的默认防火墙规则似乎已被修改,dataflow 检测到了这一点并阻止了您的作业启动。你能确认你的防火墙规则没有在你的项目中被修改吗?。请看一下documentation here。您还将在此处找到恢复防火墙规则的命令:
gcloud compute firewall-rules create [FIREWALL_RULE_NAME] \
--network [NETWORK] \
--action allow \
--direction ingress \
--target-tags dataflow \
--source-tags dataflow \
--priority 0 \
--rules tcp:1-65535
为防火墙选择一个名称,并提供一个网络名称。然后在启动数据流作业时使用 --network 传入网络名称。如果您有一个名为 'default' 的网络,dataflow 将尝试自动使用它,因此您无需传入 --network。如果您删除了该网络,您可能希望重新创建它。
截至目前,直到 Apache Beam 版本 2.19.0。数据流没有为其虚拟机设置网络标记的规定。 相反,在创建防火墙规则时,我们应该为数据流添加一个标签。
gcloud compute firewall-rules create FIREWALL_RULE_NAME \
--network NETWORK \
--action allow \
--direction DIRECTION \
--target-tags dataflow \
--source-tags dataflow \
--priority 0 \
--rules tcp:12345-12346
查看此 link 了解更多详情 https://cloud.google.com/dataflow/docs/guides/routes-firewall