【问题标题】:GCP Load Balancer: 502 Server Error, "failed_to_connect_to_backend"GCP 负载均衡器:502 服务器错误,“failed_to_connect_to_backend”
【发布时间】:2018-12-30 16:15:41
【问题描述】:

我有一个在两个 GCP 实例上运行的 dockerized Go 应用程序,将它们与各自的外部 IP 一起使用时一切正常,但是当通过负载均衡器时,它们要么响应缓慢,要么响应 502 服务器错误。健康检查好像没问题,所以我真的不明白。

在日志中,抛出的错误是

failed_to_connect_to_backend

我已经看到了关于这个问题的其他答案,但似乎没有一个可以为我的案例提供答案。我无法修改应用程序的服务方式,所以它似乎不是超时的事情。

【问题讨论】:

    标签: docker go google-cloud-platform load-balancing google-kubernetes-engine


    【解决方案1】:

    解决由于“failed_to_connect_to_backend”引起的负载均衡器的 502 响应。我会检查以下内容:

    1) 通常,“failed_to_connect_to_backend”错误消息表明负载均衡器无法连接到后端,调查 URL 映射规则也是一个很好的起点。我还建议检查您的负载均衡器的 URL 映射,以确保正确定义主机规则、路径匹配器和路径规则并符合 this article 中的描述。

    2) 还要检查后端实例是否正在耗尽它们的资源,如果后端服务器不堪重负,它将拒绝传入的请求,可能导致负载均衡器放弃它并返回您遇到的特定 502 错误。对于 Apache,您可以使用 this link 和 nginx this link。此外,使用 'netstat' 和 watch command 检查任何时候存在多少已建立连接的输出。

    3) 我还建议使用直接对实例的 HTTP(S) 请求再次测试,请求与报告 502 相同的 URL。您可以在 VPC 网络中的另一个 VM 实例中执行此测试。

    【讨论】:

      【解决方案2】:

      检查你的后端是否屏蔽了google的cloud cdn ip地址。这些地址可以在这里找到:https://cloud.google.com/compute/docs/faq#find_ip_range

      【讨论】:

        【解决方案3】:

        这不止一次发生在我身上,我在我的服务器中使用 apache,问题不是 CPU 问题,而是配置问题,

        我将 apache mpm_eventphp-fpm 结合使用,并且有许多设置会限制您希望 apache 和 fpm 允许的最大请求数。

        在我的例子中,我将 Apache MPM 配置 MaxRequestWorkers 从默认的 150 增加到 600,在 PHP FPM 配置中将 pm.max_children 增加到 80(我不记得这里的默认值是什么)

        这按预期工作,希望这有助于您推断自己的堆栈。

        【讨论】:

          【解决方案4】:

          我自己在访问在我的 GKE 标准集群上运行的 Prometheus pod 时遇到了 502 错误(通过 IAP 公开)。

          问题是配置的外部 HTTP/S 负载均衡器的运行状况检查返回不正常。尽管 Prometheus pod 按预期运行。在深入研究问题后,我发现 GCP 自动生成的健康检查有问题,它检查的是 URL / 而不是 /-/ready。当我删除 Prometheus k8s Ingress 资源(它会自动生成 GCP LB 和运行状况检查)并重新创建它时 - 问题得到了解决(经过几分钟的资源传播)。

          【讨论】:

            猜你喜欢
            • 2020-10-28
            • 1970-01-01
            • 2018-10-05
            • 1970-01-01
            • 2022-01-19
            • 2021-10-14
            • 2018-04-14
            • 2021-08-31
            • 2021-09-18
            相关资源
            最近更新 更多