OIDC 身份验证、超时错误、Private Service Connect 和专用服务访问通道。
如果您的 Looker (Google Cloud Core) 实例无法连接到外部服务、身份提供方或数据库后端,请使用本指南诊断并解决常见的网络问题。您可以排查 OpenID Connect (OIDC) 身份验证失败、504 和 HttpClient:ConnectTimeoutError 超时以及 Private Service Connect (PSC) 和专用服务访问通道的路由传播错误。
受控出站流量的 OpenID Connect 身份验证失败
在配置了 Private Service Connect 且启用了受控出站流量的 Looker (Google Cloud Core) 实例上设置 OpenID Connect 身份验证时,身份验证可能会失败。
表现
如果身份验证失败,您可能会遇到以下任一症状:
- 在浏览器中,Looker
/openidconnect端点会挂起大约 60 秒,然后显示错误或因504 Upstream Request Timeout或504 Gateway Timeout错误而超时。 您的身份提供方会显示一条错误消息,指明重定向 URI 不匹配,例如:
AADSTS50011: The redirect URI specified in the request does not match the redirect URIs configured for the application此错误消息具有误导性,因为您在身份提供方中配置的重定向 URI 可能正确无误。当 Looker (Google Cloud Core) 在后端交换期间无法联系身份提供商的令牌端点时,会发生实际故障。
原因
受控出站流量的自动预配工作流有时无法在 Looker (Google Cloud Core) 租户项目中创建必要的 Secure Web Proxy 网络路由 (looker-swp-route)。
如果缺少此路由,Looker (Google Cloud Core) 从后端向身份提供商的令牌端点发出的请求会超时,因为实例无法通过 Secure Web Proxy 将出站流量路由到公共互联网。
解决方法
如需解决此问题,请按以下步骤重置受控出站流量配置,以强制系统重新创建缺失的网络路由:
在 Google Cloud 控制台中,前往 Looker 页面:
点击要更新的实例的名称。
点击修改。
展开连接部分,然后前往配置出站连接部分。
记录全局 FQDN 部分中列出的所有现有完全限定域名 (FQDN),例如身份提供方的端点。
删除全球 FQDN 部分中列出的所有 FQDN。
清除支持 Looker 连接到外部服务复选框,以停用受控出站流量。
点击保存。
等待实例更新完成,并等待配置更改清除。
再次点击修改。
展开连接部分,然后选中支持 Looker 连接到外部服务复选框。
在全局 FQDN 部分中,重新添加身份提供方和任何其他外部服务的必需 FQDN。
点击保存。
重置受控出站流量会触发自动预配流程,以重新创建缺失的 looker-swp-route 网络路由。创建路由后,即可完成向身份提供方发出的出站后端请求。
504 上游请求超时错误
在启用了受控出站流量的 Looker (Google Cloud Core) 实例上通过外部服务或身份提供商进行身份验证时,请求可能会因超时错误而失败。
表现
从身份提供方的登录页面返回后或连接到外部服务时,您会在浏览器中收到 504 Upstream Request Timeout 错误。
原因
504 Upstream Request Timeout 错误表示 Looker (Google Cloud Core) 实例无法通过受控的出站流量访问外部网域。与缺少路由错误不同,504 错误通常意味着网络路径存在,但必需的网域未包含在全局 FQDN 许可名单中并被屏蔽,或者请求在网关处超时。
解决方法
如需解决此问题,请按以下步骤操作:
- 验证所需的 FQDN:在 Google Cloud 控制台中,验证外部服务或身份提供方所需的所有网域是否已添加到全局 FQDN 列表中。OIDC 身份验证流程通常需要多个端点(例如授权端点、令牌端点和用户信息端点),这些端点可能使用不同的网域。
- 捕获网络轨迹:如果错误仍然存在,请在重现问题时捕获浏览器网络轨迹(HAR 文件)。在轨迹中搜索
504状态代码或失败的 HTTP 请求,以确定在流程期间联系过但未包含在全局 FQDN 列表中的任何网域。 - 重置配置:如果所需的 FQDN 存在,但请求仍超时,请按照有关 OpenID Connect 身份验证失败的问题解决步骤重置受控出站流量配置。
HttpClient:ConnectTimeoutError 执行已过期
在 Looker 管理面板中测试 OpenID Connect 连接或其他外部网络连接时,连接测试可能会因超时错误而失败。
表现
当您在 Looker 管理面板中运行连接测试(例如在 OpenID Connect 身份验证页面上)时,Looker 会返回以下错误:
HttpClient:ConnectTimeoutError execution expired
原因
此错误表示 Looker (Google Cloud Core) 实例缺少与外部服务或身份提供方通信所需的必要网络路径。如果满足以下任一条件,通常会发生此问题:
- 缺少路由传播:Cloud Router 正在使用默认设置,并且未将 VPC 网络路由(例如自定义通告路由)传播到 Looker (Google Cloud Core)实例。
- 缺少互联网 NEG:您的 VPC 网络中未配置互联网网络端点组 (NEG),无法将流量路由到外部服务。
解决方法
如需解决此问题,请按以下步骤操作:
- 配置 Cloud Router 路由传播:通过设置自定义通告路由,验证 Cloud Router 是否已配置为将必要的 VPC 网络路由传播到 Looker(Google Cloud 核心)实例。
- 配置互联网 NEG:在 VPC 网络中设置互联网 NEG,以允许 Looker (Google Cloud Core) 实例将出站流量路由到外部身份提供方或服务。
- 验证专用服务访问通道:对于使用专用服务访问通道的实例,请确保您的 VPC 网络已与 Google 服务正确对等互连。如需了解详情,请参阅使用专用服务访问通道访问外部服务。
南向 Private Service Connect 连接问题
对于使用 Private Service Connect 进行出站连接的 Looker (Google Cloud Core) 实例,即使端点状态为 Accepted,您也可能会遇到连接错误。
常见问题包括:
- 主机名解析错误:如果 Looker (Google Cloud Core)在测试连接时显示
Unknown host错误,请验证配置的主机名是否与专用网络中的 DNS 记录匹配,以及后端负载均衡器是否正常运行。 - 连接超时:如果连接超时,请检查您的 VPC 防火墙规则,验证是否允许入站流量从 Private Service Connect NAT 子网流向负载均衡器的后端。
- “待处理”或“已关闭”状态:如果服务连接状态为
Pending或Closed,请检查使用方项目是否位于服务连接的许可名单中,以及是否已配置强制性 TCP 健康检查。
如需详细了解诊断工作流和决策树,请参阅排查出站 Private Service Connect 连接问题。
专用服务访问通道路由和连接问题
对于使用专用服务访问通道的 Looker (Google Cloud Core) 实例,与外部服务的出站通信需要适当的路由传播和网络基础设施:
- 路由传播:验证 Cloud Router 是否已配置为将 VPC 网络路由(例如自定义通告路由)传播到 Looker (Google Cloud Core)实例。
- 互联网网络端点组:如果您的实例需要通过专用服务访问通道访问外部端点,请确保在 VPC 网络中配置互联网网络端点组 (NEG)。
如果缺少这些路由或端点组,则与外部端点的连接测试会失败,并显示 HttpClient:ConnectTimeoutError execution expired 错误。
如需了解详情,请参阅使用专用服务访问通道访问外部服务。
诊断工具和日志
您可以使用以下工具和日志来帮助诊断网络问题:
- Cloud Logging:在 Cloud Logging 中查看实例级日志,以识别连接失败和系统事件。如需了解详情,请参阅查看实例日志。
- Looker 系统活动:如果您可以管理员身份登录,请查看系统活动中的用户活动信息中心。 此信息中心会显示最近的登录失败情况、所用的身份验证方法和错误消息。如需了解详情,请参阅用户活动信息中心。
- VPC 流日志:检查 VPC 流日志,以确定 Looker (Google Cloud Core)的网络流量是否到达目标子网,或者是否被防火墙规则阻止。
- Cloud Customer Care:如果您已完成问题排查步骤,但问题仍然存在,请与 Cloud Customer Care 联系以获取帮助。