问题描述
当我将谷歌云平衡器与CDN一起使用时出现错误502,事实是,我很确定我在设置负载平衡器时一定做错了,因为当我删除负载平衡器时,我的网站只运行了很好。
- 我应该使用HTTP还是HTTPS健康检查,因为设置HTTPS时 运行状况检查,我的网站出现了点故障,然后又下降了
- 我已经检查了这个link,他们似乎也遇到了同样的问题,但对我不起作用。
- 我已遵循openlitespeed论坛的教程,在服务器管理面板中设置Keep-Alive Timeout(secs)= 60s,并将实例配置为接受long-lived connections,但仍然对我不起作用。
- 我在此Google Cloud链接之后添加了这2条防火墙规则,以允许Google运行状况检查IP,但仍然无法正常工作: https://cloud.google.com/load-balancing/docs/health-checks#fw-netlb https://cloud.google.com/load-balancing/docs/https/ext-http-lb-simple#firewall
当检查负载平衡器日志消息时,它显示一条错误消息,内容为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