使用shared VPC连接本地存储时Serverless Spark作业报错求助
问题解决思路:Dataproc Serverless Batch 共享VPC下Worker注册超时+NAT网关配置
一、先解决Worker注册超时核心问题
你当前的报错是Worker无法注册到Master,这和你配置的出站到本地ECS的防火墙规则无关,是集群内部节点通信被阻断导致的,优先处理这个:
- 在共享VPC的宿主项目中创建入站防火墙规则:
- 目标:选择Dataproc Serverless集群所在的子网(或使用标签
goog-dataproc-serverless,需确保集群创建时添加该标签) - 源:同目标子网的IP范围(或相同标签
goog-dataproc-serverless) - 协议端口:允许所有TCP、UDP端口
- 动作:允许
- 目标:选择Dataproc Serverless集群所在的子网(或使用标签
- 注意:这个规则必须在共享VPC的宿主项目中配置,而非你的业务项目,因为共享VPC的防火墙规则由宿主项目管控。
二、共享VPC下访问本地ECS的NAT网关配置
当集群内部通信正常后,再配置NAT实现出站访问本地ECS:
1. 共享VPC宿主项目侧配置
- 创建云NAT网关:
- 关联集群所在的子网,创建NAT路由器
- 配置NAT规则,允许子网的所有IP段出站到本地ECS的IP范围
- 补充出站防火墙规则:
- 方向:出站
- 目标:本地ECS的IP段
- 源:集群所在子网IP范围
- 协议端口:根据你使用的存储服务端口配置(比如HTTP/HTTPS的80/443,或自定义端口)
- 动作:允许
2. 你的业务项目侧配置
- 确保Dataproc Serverless集群的服务账号拥有共享VPC子网的使用权限(在宿主项目中给该服务账号分配
Compute Network User角色) - 集群创建时指定使用共享VPC子网,并开启私有访问(如果需要)
三、已验证的解决方案案例
不少用户遇到过相同的共享VPC下Dataproc Serverless集群初始化失败问题,排查后均是因为宿主项目未配置集群内部通信的防火墙规则。按上述步骤配置内部通信规则后,Worker注册超时问题基本都能解决,后续再通过NAT网关实现对本地ECS的访问。
内容的提问来源于stack exchange,提问作者Jaysukh Kalasariya
相关产品推荐
相关产品推荐

