排查批次和会话连接问题

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

常见症状和错误消息

当 Managed Service for 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 或其他数据库中的数据相关的错误。

常见原因和问题排查提示

本部分列出了 Managed Service for Apache Spark 连接问题的常见原因,并提供了问题排查提示,以帮助您解决这些问题。

网络配置

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

  • 访问权限选项:

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

      • 在 Google Cloud 控制台中,依次前往 Private Service Connect > 端点。 连接端点或确认端点已连接到所有必需的 API(例如 storage.googleapis.com 和 dataproc.googleapis.com),并且它们已连接到批处理工作负载或会话虚拟私有云网络。
    • 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.com 或 bigquery.googleapis.com)和外部服务的主机名。
    • 自定义 DNS 服务器和 Cloud DNS 专用区域必须转发或解析 Google 域名的查询。
    • 如果您使用 Private Service Connect 私下访问 Google API,则 Google 服务的 DNS 记录必须使用 PSC 端点解析为 VPC 网络中的专用 IP 地址。

问题排查提示:

  • 确定网络和子网配置:

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

    • 使用批处理或会话服务账号在批处理或会话子网中启动测试 Compute Engine 虚拟机。
    • 在测试虚拟机中,执行以下连接测试:
      • nslookup storage.googleapis.com,以验证 DNS 解析。 查找其他 Google API 网域,例如 bigquery.googleapis.com 和 dataproc.googleapis.com。借助专用 Google 访问通道(在 Managed Service 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 CloudNetwork Intelligence Center 连接测试,以诊断从子网到相关端点(例如 Google API 和外部 IP 地址)的网络路径。
  • 在 Cloud Logging 中查看网络连接错误:

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

IAM 权限

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

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

  • Managed Service for Apache Spark Worker 角色 (roles/dataproc.worker)。
  • 数据访问角色,例如 roles/storage.objectViewer 或 roles/bigquery.dataViewer。
  • Logging:(roles/logging.logWriter)。

问题排查提示:

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

外部服务配置

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

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

后续步骤