当我将谷歌云平衡器与CDN一起使用时,我遇到了一个错误502,问题是,我很确定我在设置负载平衡器时一定做错了什么,因为当我删除负载平衡器时,我的网站运行得很好。
这就是我配置负载均衡器的方式此处
- 我应该使用HTTP还是HTTPS健康检查,因为当我设置HTTPS时健康检查,我的网站上有一段时间,然后又坏了
- 我已经检查了这个链接,他们似乎有同样的问题,但它对我不起作用
- 我遵循了openlitespeed论坛的教程,在服务器管理面板中设置Keep Alive Timeout(secs(=60s,并将实例配置为接受长期连接,但对我来说仍然不起作用
- 我在这个谷歌云链接之后添加了这2条防火墙规则,以允许谷歌健康检查ip,但仍然不起作用:https://cloud.google.com/load-balancing/docs/health-checks#fw-净磅https://cloud.google.com/load-balancing/docs/https/ext-http-lb-simple#firewall
检查负载平衡器日志消息时,会显示一个错误,表示failed_to_pick_backend。我尝试过重新配置负载均衡器,但没有帮助。
我刚开始学习谷歌云,我的知识非常有限,如果有人能一步一步地向我展示如何解决这个问题,我将不胜感激。非常感谢。
根据OP的发现发布答案,以改善用户体验。
error 502 - failed_to_pick_backend
的解决方案是将负载平衡器从HTTP更改为TCP协议,同时也将运行状况检查从HTTP更改成TCP。
在那之后,LB按照它应该的方式通过所有传入连接,并且错误消失了。
以下是关于各种类型的健康检查以及如何选择正确的健康检查的更多信息。
您面临的错误消息是"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(,并验证后端服务超时。后端服务超时与配置的运行状况检查值一起工作,以定义实例在被认为不正常之前必须响应的时间量。
此外,您可以看到本故障排除指南来面对一些错误消息(包括此(。
那些从其他平台体验过Kubernetes的人可能会困惑于为什么他们的Ingress会调用他们的后端"不健康";。健康检查与Readiness Probes和Liveness Probes不同。
运行状况检查是GCP的负载均衡器使用的一个独立实用程序,执行完全相同的功能,但在其他地方有定义。此处的失败将导致502个错误。https://console.cloud.google.com/compute/healthChecks