排查南向连接问题

本页面介绍如何排查使用 Private Service Connect 的 Looker (Google Cloud Core) 实例的南向(出站)连接问题,这些实例使用专用 IP 配置。

如果您在南向 Private Service Connect 连接时遇到故障,请使用以下决策树开始问题排查。

如需了解详情,请参阅使用 Private Service Connect 的 Looker (Google Cloud Core) 出站访问外部服务文档。

排查连接错误

即使 Private Service Connect 连接状态为 Accepted,当 Looker (Google Cloud Core) 尝试访问您的服务时,您可能仍然会遇到连接错误。

主机名解析问题

如果您在测试数据库连接时,或当 Looker (Google Cloud Core) 尝试连接到您的服务时,在 Looker (Google Cloud Core) 界面中收到“Unknown host”错误,这可能表明您为南向 Private Service Connect 连接配置的主机名的 DNS 解析失败。

在这种情况下,请执行以下问题排查步骤:

  • 验证在 Looker (Google Cloud Core) 中为服务配置的主机名是否正确,并且与应存在 DNS 记录的主机名匹配。
  • 验证负载均衡器和后端服务是否正常运行。
  • 测试从生产方 VPC 中的虚拟机进行的连接,以确保可以通过负载均衡器的转发规则访问后端服务。您可以在负载均衡器所在的 VPC 和区域中创建一个临时虚拟机,并使用 curltelnet 等工具测试与服务的 IP 地址和端口的连接。

如果主机名解析问题仍然存在,请与 Cloud Customer Care 联系以获取帮助。

连接超时

如果从 Looker (Google Cloud Core) 到您的服务的连接超时,这可能是因为生产方 VPC 中的防火墙规则阻止了来自 Private Service Connect NAT 子网的流量,或者可能是因为其他网络问题。

验证南向 Private Service Connect 配置

如需验证 Looker (Google Cloud Core) 实例与您的网络之间的连接是否正确建立,请按以下步骤操作:

检查 Looker (Google Cloud Core) 实例 Private Service Connect 端点状态

如需在 Looker (Google Cloud Core) 实例的配置中验证南向服务连接的状态,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Looker 页面。
  2. 点击要检查连接的实例的名称。
  3. 网络 部分的服务连接 下,找到您要排查的端点。
  4. 检查状态 是否为 Accepted

如果状态为 Pending,可能是由于以下原因之一:

  • 服务连接的连接偏好设置未设置为“自动接受所有连接”,并且连接尚未手动批准。
  • Looker (Google Cloud Core) 实例的项目不在服务连接的许可名单中。

如需解决 Pending 状态,请检查服务连接配置,并确保连接偏好设置设置为 Automatically accept all connections,或者已明确允许 Looker (Google Cloud Core) 项目。

如果网域或连接 URI 不正确,请使用正确的值再次运行 gcloud looker instances update 命令。此命令会覆盖所有现有连接,因此必须包含所有选定的连接。如需了解详情,请参阅修改 Looker (Google Cloud Core) 实例设置

验证生产方的服务连接配置

您还应检查生产方项目中的服务连接的配置,以确保其设置正确,可以接收来自 Looker (Google Cloud Core) 的连接。

在 Google Cloud 控制台中,依次前往网络服务 > Private Service Connect,然后点击已发布的服务标签页。点击用于连接的服务连接以查看其详细信息。

验证是否满足以下要求:

  • 服务连接配置了有效的目标转发规则和专用的 Private Service Connect NAT 子网。
  • 连接偏好设置 设置为 Accept automatically。如果连接偏好设置为 Accept for selected networksAccept for selected projects,请确保来自 Looker (Google Cloud Core) 项目的连接已获批准。
  • 目标服务指向正确的转发规则。
  • NAT 子网配置正确,并且具有足够的 IP 空间。
  • 提供给 Looker (Google Cloud Core) 实例的服务连接 URI 正确。

您可以使用 Google Cloud 控制台或运行 gcloud compute service-attachments update 命令来更新服务连接配置。

验证防火墙规则

来自 Looker (Google Cloud Core) 的流量通过 Private Service Connect NAT 子网进入您的 VPC。您必须具有允许此流量到达负载均衡器后端的防火墙规则。

如需验证防火墙规则,请执行以下操作:

  1. 确定在服务连接上配置的 Private Service Connect NAT 子网的 IP 范围。
  2. 在 Google Cloud 控制台中,前往生产方 VPC 中的 防火墙 页面。
  3. 验证是否存在入站防火墙规则,该规则允许 TCP 流量从 Private Service Connect NAT 子网流向负载均衡器后端(在服务使用的端口上)。该规则应满足以下条件:
    • 来源过滤条件:来源 IP 范围包括 Private Service Connect NAT 子网范围。
    • 目标:该规则适用于内部负载均衡器后端(例如,通过网络标记)。
    • 协议和端口:该规则允许目标服务端口上的 TCP 流量。

如果不存在此类规则,或者优先级较高的规则拒绝此流量,请创建入站防火墙规则以允许来自 Private Service Connect NAT 子网的流量。

验证负载均衡器和网络端点组配置

您的服务通过内部负载均衡器和指向您的服务的网络端点组 (NEG) 向 Looker (Google Cloud Core) 公开。验证这些组件是否正常运行且配置正确。

如需检查 NEG 配置,请执行以下操作:

  1. 在 Google Cloud 控制台中,依次前往网络服务 > 负载均衡
  2. 点击负载均衡器,然后点击后端服务以查看其详细信息。
  3. 在后端服务详细信息中,点击网络端点组的名称。
  4. 验证网络端点组类型
    • 对于可通过 Cloud VPN 或 Cloud Interconnect 访问的本地或多云服务,类型应为 Hybrid connectivity NEG (NON_GCP_PRIVATE_IP_PORT)。
    • 对于公共互联网服务(例如 Git 提供商),类型应为 Internet NEG (INTERNET_FQDN_PORT)。
  5. 网络端点 部分中,检查 IP 地址和端口(对于混合 NEG)或 FQDN 和端口(对于互联网 NEG)是否与目标服务正确匹配。

如果 NEG 配置错误,您可能需要更新它或创建一个新的 NEG。

验证 DNS 解析和路由

如果您无法从 Looker (Google Cloud Core) 进行连接,但其他问题排查步骤未显示任何问题,请从生产方 VPC 内测试连接,以隔离问题:

  1. 在内部负载均衡器所在的生产方 VPC 和子网中创建一个临时 Compute Engine 虚拟机。
  2. 在该虚拟机中,使用 telnetnc 等工具测试与服务端口上的负载均衡器转发规则 IP 地址的连接,例如:telnet LOAD_BALANCER_IP TARGET_PORT

如果您可以从虚拟机成功连接,则问题可能出在从 Looker (Google Cloud Core) 到您的 VPC 的路径中。请重新检查服务连接和 Looker (Google Cloud Core) 实例配置。

如果您无法从虚拟机进行连接,则问题可能出在生产方 VPC 中。检查负载均衡器的转发规则、后端服务状态以及 VPC 中的防火墙规则。

调查特定服务连接问题

某些目标服务在通过 Private Service Connect 连接时具有独特的要求或依赖项。

Snowflake:辅助存储端点

Snowflake JDBC 驱动程序通常从中间云存储位置(例如 Amazon S3 或 Azure Blob Storage)下载结果集或元数据,而不是从主数据库主机下载。如果 Looker (Google Cloud Core) 无法访问这些辅助端点,连接或查询可能会失败,尤其是对于大型结果集。

如需排查此问题,请执行以下操作:

  1. 检查 Looker (Google Cloud Core) 日志中是否存在引用外部存储网域(例如 s3.amazonaws.comblob.core.windows.net)的超时错误。
  2. 确定 Snowflake 实例所需的存储端点的确切 FQDN。您可以在 Snowflake 日志中找到此信息,也可以与 Snowflake 支持团队联系。
  3. 每个外部 FQDN 都必须配置为单独的南向连接。 为存储端点的 FQDN 创建新的 Private Service Connect 配置(互联网 NEG、负载均衡器和服务连接)。
  4. 将新的服务连接添加到 Looker (Google Cloud Core) 实例的配置中。

公共 Git 提供商:出站流量到互联网

具有专用 IP 配置的 Looker (Google Cloud Core) 实例没有通往公共互联网的默认路由。如需连接到 GitHub 或 GitLab 等公共 Git 提供商,您必须明确配置出站路径。

如需排查此问题,请执行以下操作:

  1. 验证您是否尝试从专用 IP 实例连接到公共 Git 提供商。连接失败通常表现为一般超时或 SSL 握手错误。
  2. 使用 Internet NEG 创建南向 Private Service Connect 连接。
  3. 确保为 Internet NEG 配置了正确的端口(例如,SSH 的端口 22 或 HTTPS 的端口 443)。
  4. 如果您的 VPC 中有 DNS 替换政策,该政策会使用基于 FQDN 的 Internet NEG 创建路由环路,请考虑改用基于 IP 的 Internet NEG (INTERNET_IP_PORT)。

Action Hub 和 Marketplace

默认的 Google 托管的 Looker (Google Cloud Core) Marketplace 和 Action Hub 是公共互联网服务,默认情况下无法从专用 IP 实例访问。

  • Action Hub:如需将 Action Hub 与专用 IP 实例搭配使用,您必须 部署自托管的专用 Action Hub 服务器,并使用 南向 Private Service Connect 连接连接到该服务器。
  • Marketplace:如需连接到 Looker Marketplace,您 可以在实例的出站 连接配置中启用与 Marketplace 的连接。启用后,Looker (Google Cloud Core) 会使用 Secure Web Proxy直接连接到 Marketplace 和 github.com。如需了解详情,请参阅连接到 Looker Marketplace。 如果您未启用此连接,则必须从其 Git 代码库手动下载扩展程序或块,并将其安装为本地项目。

检查日志

虚拟私有云流日志和负载均衡器日志记录(例如内部应用负载均衡器日志记录内部直通式网络负载均衡器日志记录)可以提供有关连接问题的更多分析洞见。

在负载均衡器使用的子网上启用 Virtual Private Cloud 流日志,并在内部负载均衡器的后端服务上启用日志记录,然后尝试从 Looker (Google Cloud Core) 进行连接以重现错误。

在 Cloud Logging 中,查询虚拟私有云流日志,过滤从 Private Service Connect NAT 子网 IP 范围到负载均衡器 IP 地址的流量。如果流量到达负载均衡器,请查询负载均衡日志,了解有关与后端连接状态的信息。