Google云负载平衡器导致错误502-failed_to_pick_backend

问题描述

当我将谷歌云平衡器与CDN一起使用时出现错误502,事实是,我很确定我在设置负载平衡器时一定做错了,因为当我删除负载平衡器时,我的网站只运行了很好。

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

当检查负载平衡器日志消息时,它显示一条错误消息,内容Failed_to_pick_backend。我试图重新配置负载均衡器,但没有帮助。

我刚刚开始学习Google Cloud,但是我的知识真的很有限,如果有人可以逐步向我展示如何解决此问题,将不胜感激。谢谢!


解决方法

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

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

在那之后,LB 按其应该通过所有传入的连接并且错误消失了。

以下是有关各种 types of health checks and how to chose correct one 的更多信息。

,

您面临的错误消息是“ 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
    

检查正在运行的服务是否对Health Check探测响应200(确定),并验证您的后端服务timeout。后端服务超时与配置的运行状况检查值一起使用,以定义实例在被认为不正常之前必须响应的时间。

此外,您可以看到此troubleshooting guide来面对一些错误消息(包括此错误)。

,

那些在其他平台上使用过 Kubernetes 的人可能会对为什么他们的 Ingress 称他们的后端“不健康”感到困惑。 运行状况检查与就绪探针和活性探针不同。

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