当前位置: 首页 > 知识库问答 >
问题:

Google云负载平衡器导致错误502-未能选择后端

漆雕修德
2023-03-14

当我将google云平衡器与CDN一起使用时,我遇到了一个错误502,问题是,我很确定我在设置负载平衡器时一定做错了什么,因为当我删除负载平衡器时,我的网站运行得很好。

这就是我在这里配置负载平衡器的方式

  • 我应该使用HTTP或HTTPS healthcheck吗?因为当我设置HTTPS healthcheck时,我的网站先运行了一段时间,然后又关闭了
  • 我已经检查了这个链接,他们似乎有同样的问题,但它不适合我
  • 我遵循了openlitespeed论坛的教程,在服务器管理面板中设置Keep-Alive Timeout(secs)=60秒,并将实例配置为接受长期连接,但对我来说仍然不起作用
  • 我在google云链接后添加了以下两条防火墙规则,以允许google health check ip,但仍然不起作用:https://cloud.google.com/load-balancing/docs/health-checks#fw-网络LBhttps://cloud.google.com/load-balancing/docs/https/ext-http-lb-simple#firewall

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

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

共有3个答案

柯立果
2023-03-14

那些从其他平台使用库伯内特斯的经验丰富的人可能会感到困惑,为什么他们的Ingresses称他们的后端为“不健康”。健康检查与就绪探针和活跃探针不是一回事。

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

陆绪
2023-03-14

您面临的错误消息是“failed\u to\u pick\u backend”。此错误消息表示,当GFE无法建立到后端实例的连接或无法识别要连接的可行后端实例时,会生成HTTP响应代码

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

>

后端实例上的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)响应健康检查探测并验证您的后端服务超时。后端服务超时与配置的健康检查值一起工作,以定义实例在被视为不健康之前必须响应的时间量。

此外,您可以查看此故障排除指南,以面对一些错误消息(包括此)。

裴威
2023-03-14

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

错误502的解决方案是将负载平衡器从HTTP更改为TCP协议,同时将运行状况检查从HTTP更改为TCP。

之后,LB应通过所有传入连接,错误消失。

以下是有关各种健康检查以及如何选择正确健康检查的更多信息。

 类似资料:
  • 有人知道谷歌的HTTPS负载平衡器是否正常工作吗?我当时正在建立一个NGINX入口服务,但我注意到谷歌负载平衡器是由Kubernetes自动设置的。我得到了两个外部IP,而不是一个。因此,我决定使用谷歌服务,而不是设置NGINX负载平衡器。我删除了我的容器集群,创建了一个全新的集群。我在端口80上启动了HTTP pod和HTTP服务。然后,我创建了入口服务和L7控制器吊舱。现在,我在查看负载平衡器

  • 我目前有一个HTTPS负载均衡器设置,该设置使用443前端、后端和健康检查,为单个主机nginx实例提供服务。 通过浏览器直接导航到主机时,页面会正确加载有效的SSL证书。 当尝试通过负载平衡器IP访问站点时,我收到一条502服务器错误消息。我检查了Google日志,发现负载平衡器出现了“failed\u to\u pick\u backend”错误。我还注意到它没有通过健康检查。 通过深入研究,

  • 我是微服务的新手。(学习阶段)。我有一个问题。我们在云中部署微服务。(例如 AWS)。云已经提供了负载平衡和日志。我们还在Spring Boot中实现了负载平衡(功能区)和日志(Rabbit MQ和Zipkin)。这两种实现有什么区别?我们两者都需要吗?有些人可以回答这些问题吗? 提前感谢。

  • 我遵循了GKE教程,使用beta Inrit类型创建HTTP负载均衡器,并且在使用nginx映像时工作正常。我的问题是为什么Inrit是必要的。 我可以创建一个容器引擎集群,然后创建一个使用库伯内特斯创建的实例组作为服务后端的HTTP负载均衡器,并且一切似乎都运行良好。当仅在部分流程中使用库伯内特斯似乎运行良好时,为什么我要经历使用Inete的所有麻烦?

  • 我有一个非常简单的Spring Boot应用程序,具有社交单点登录功能。 看起来是这样的: 它在应用程序中有必需的条目。yml: 它在我的本地机器上运行得很好,并且只启动了一个实例。 当有多个实例隐藏在负载平衡器后面时,就会出现问题。 即使用户在第一个请求中进行身份验证,向负载均衡器发出的后续请求也会因401而被阻止。 与第一个应用程序实例相比,请求被路由到不同的应用程序实例。 我正在试图弄清楚,

  • 我想在Google容器引擎上运行docker映像的集群前面放置一个HTTP负载平衡器,这样我就可以使用HTTPS,而无需应用程序支持它。 我使用以下命令创建了一个容器集群: 然后,我创建了一个复制控制器,在集群上运行一个映像,该映像基本上是nginx,其中复制了静态文件。 如果我为此创建一个网络负载平衡器,一切都会正常工作。我可以转到我的负载平衡器IP地址并查看网站。但是,如果创建HTTP负载平衡