【问题标题】:Google cloud load balancer causing error 502 - failed_to_pick_backend谷歌云负载均衡器导致错误 502 - failed_to_pick_backend
【发布时间】:2020-12-09 02:02:25
【问题描述】:

当我使用带有 CDN 的谷歌云平衡器时出现错误 502,问题是,我很确定我在设置负载平衡器时做错了什么,因为当我移除负载平衡器时,我的网站运行正常很好。

这就是我配置负载均衡器的方式 here

检查负载均衡器日志消息时,它显示错误提示 failed_to_pick_backend 。我尝试重新配置负载均衡器,但没有帮助。

我刚开始学习谷歌云,我的知识真的很有限,如果有人能一步一步地告诉我如何解决这个问题,我将不胜感激。谢谢!


【问题讨论】:

  • 您的后端是否配置了 HTTPS 并安装了 SSL 证书?大多数情况下,只需要配置HTTP(80端口)即可。如果配置,前端将为您处理 HTTPS。在您的情况下,您的后端在端口 443 (HTTPS) 上没有正确响应。

标签: google-cloud-platform load-balancing http-status-code-502


【解决方案1】:

发布答案 - 基于 OP 的发现以改善用户体验。

error 502 - failed_to_pick_backend 的解决方案是将负载均衡器从 HTTP 更改为 TCP protocol,同时将运行状况检查从 HTTP 更改为 TCP。

之后,LB 会按照应有的方式通过所有传入连接,并且错误消失了。

这里有一些关于各种types of health checks and how to chose correct one 的更多信息。

【讨论】:

  • 这个解决方案也适用于 GCP 负载均衡器
【解决方案2】:

您面临的错误消息是“failed_to_pick_backend”。 此错误消息意味着当 GFE 无法建立与后端实例的连接或无法识别要连接的可行后端实例时,会生成 HTTP 响应代码

我在图片中注意到您的健康检查失败导致上述错误消息,此健康检查失败行为可能是由于:

  • Web 服务器软件不在后端实例上运行

  • 后端实例上的 Web 服务器软件配置错误

  • 服务器资源耗尽且不接受连接:

      - CPU usage too high to respond
      - Memory usage too high, process killed or can't malloc()
      - Maximum amount of workers spawned and all are busy (think mpm_prefork in Apache)
      - Maximum established TCP connections
    

检查正在运行的服务是否以 200(OK)响应 Health Check 探测并验证您的后端服务 timeout。后端服务超时与配置的健康检查值一起定义实例在被视为不健康之前必须响应的时间量。

另外,你可以看到这个troubleshooting guide来面对一些错误信息(包括这个)。

【讨论】:

  • 谢谢@roberto_h,我确实更改了超时但没有帮助,正在运行的服务没有以 200 响应健康检查探测。结果是我错误地设置了负载均衡器的后端服务,我将 LB 协议从 HTTP 更改为 TCP,并将健康检查更改为 TCP 健康检查,现在它工作正常。无论如何,谢谢你的帮助。最好的!
【解决方案3】:

那些在其他平台上使用过 Kubernetes 的人可能会对为什么他们的 Ingress 称他们的后端“不健康”感到困惑。 健康检查与 Readiness Probes 和 Liveness Probes 不同。

运行状况检查是 GCP 负载均衡器使用的独立实用程序,执行完全相同的功能,但在其他地方定义。这里的失败会导致 502 错误。 https://console.cloud.google.com/compute/healthChecks

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 2020-12-31
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    相关资源
    最近更新 更多