排查批次和会话连接问题

本页面提供了有关诊断和解决 Serverless for Apache Spark 批量工作负载和交互式会话的常见网络连接问题的指南。这些问题可能会导致工作负载无法访问所需的数据源、外部服务或 Google Cloud API。

常见症状和错误消息

当 Apache Spark 无服务器版遇到连接问题时,您可能会遇到以下错误:

  • Unable to connect to service_name.googleapis.com
  • Could not reach required Google APIs
  • Connection refused
  • Host unreachable
  • Operation timed out
  • Permission denied(如果阻塞 API 调用,通常与网络相关)

您还可能会遇到与访问 Cloud Storage、BigQuery 或其他数据库中的数据相关的错误。

常见原因和问题排查提示

本部分列出了 Apache Spark 无服务器连接问题的常见原因,并提供了问题排查提示来帮助您解决这些问题。

网络配置

网络配置错误是导致连接失败的常见原因。 Serverless for Apache Spark 工作负载和会话在具有内部 IP 地址的虚拟机上运行,并自动在工作负载或会话子网上启用专用 Google 访问通道 (PGA),以访问 Google API 和服务。如需了解详情,请参阅 Serverless for Apache Spark 网络配置

  • 访问权限选项:

    • Private Service Connect (PSC):您可以在 VPC 网络中创建专用端点,以访问特定的 Google API。

      • 在 Google Cloud 控制台中,前往 Private Service Connect > 端点。连接端点或确认端点已连接到所有必需的 API(例如 storage.googleapis.comdataproc.googleapis.com),并确认这些端点已连接到批处理工作负载或会话 Virtual Private Cloud 网络。
    • Cloud NAT:如果工作负载需要访问公共互联网,您可以为批处理工作负载或会话子网配置 Cloud NAT:

      • 在 Google Cloud 控制台中,前往 Cloud NAT 页面。 配置网关或确认已为批处理工作负载或会话 VPC 网络、区域和子网配置网关。另请确保防火墙规则允许出站流量流向 0.0.0.0/0。如需了解详情,请参阅设置 Cloud NAT
  • 防火墙规则:

    • VPC 网络(或共享 VPC 网络宿主项目,如果适用)中的出站防火墙规则不得阻止出站流量到达所需目的地。
      • 如果适用,出站规则必须允许流量流向外部服务,例如 Google Cloud之外的公共 API 和数据库。如果您的批处理工作负载或会话需要访问互联网,可以使用 Cloud NAT 提供子网出站流量。
    • 虽然入站流量规则过于严格不是连接问题的常见原因,但可能会无意中阻止必要的返回流量或内部通信。
  • DNS 解析:

    • 必须在 VPC 网络内配置 DNS 解析。工作负载和会话必须能够解析 Google API(例如 storage.googleapis.combigquery.googleapis.com)和外部服务的主机名。
    • 自定义 DNS 服务器和 Cloud DNS 专用区域必须转发或解析针对 Google 网域的查询。
    • 如果您使用 Private Service Connect 私密访问 Google API,则 Google 服务的 DNS 记录必须使用 PSC 端点解析为 VPC 网络内的专用 IP 地址。

问题排查提示:

  • 确定网络和子网配置:

    • 在 Serverless for Apache Spark 批处理或会话详情中,查看 networkUrisubnetUri
    • 在 Google Cloud 控制台中,查看 VPC 网络和子网的设置。
  • 测试来自代理虚拟机的连接:

    • 使用批处理或会话服务账号在批处理或会话子网中启动测试 Compute Engine 虚拟机。
    • 在测试虚拟机中,执行以下连接测试:
      • nslookup storage.googleapis.com 以验证 DNS 解析。 查找其他 Google API 网域,例如 bigquery.googleapis.comdataproc.googleapis.com。借助专用 Google 访问通道(在 Serverless for Apache Spark 子网上自动启用)或 Private Service Connect,网域必须解析为专用 IP 地址。
      • curl -v https://storage.googleapis.com,以验证与 Google API 的 HTTPS 连接。您还可以尝试连接到其他 Google 服务。
      • ping 8.8.8.8 以测试互联网连接(如果您的批次或会话需要)。如果需要 Cloud NAT,请尝试 curl -v https://example.com
    • 运行 Google Cloud Network Intelligence Center 连接测试,以诊断从子网到相关端点(例如 Google API 和外部 IP 地址)的网络路径。
  • 在 Cloud Logging 中查看是否存在网络错误:

    • 查看 Serverless for Apache Spark 工作负载或会话的日志记录。查找与网络超时、连接拒绝或 API 调用失败相关的 ERRORWARNING 消息。按 jsonPayload.component="driver"jsonPayload.component="executor" 过滤,以查找特定于 Spark 的网络问题。

IAM 权限

如果 IAM 权限不足,工作负载或会话将无法访问资源,导致 API 调用被拒绝,进而导致网络故障。

您的批处理工作负载或会话所使用的服务账号必须具有所需的角色:

  • Dataproc Worker 角色 (roles/dataproc.worker)。
  • 数据访问角色,例如 roles/storage.objectViewerroles/bigquery.dataViewer)。
  • 日志记录:(roles/logging.logWriter)。

问题排查提示:

  • 确定批处理工作负载或会话服务账号。 如果未指定,则默认为 Compute Engine 默认服务账号
  • 在 Google Cloud 控制台中,前往 IAM 和管理 > IAM 页面,找到批处理工作负载或会话服务账号,然后验证该账号是否具有工作负载操作所需的必要角色。授予任何缺失的角色。

外部服务配置

如果您的工作负载连接到 Google Cloud之外的数据库或服务,请验证其配置:

  • 验证外部服务防火墙或安全组是否允许来自 VPC 网络 IP 范围的入站连接:如果适用,请检查使用 VPC 对等互连、Cloud VPN 或 Cloud Interconnect 的内部 IP 地址,或者 Cloud NAT IP 地址。
  • 检查数据库凭据或连接字符串。检查连接详细信息、用户名和密码。

后续步骤