错误:服务器错误 服务器遇到临时错误,无法完成您的请求。请在 30 秒后重试。(GCP)

Posted

技术标签:

【中文标题】错误:服务器错误 服务器遇到临时错误,无法完成您的请求。请在 30 秒后重试。(GCP)【英文标题】:Error: Server Error The server encountered a temporary error and could not complete your request. Please try again in 30 seconds.(GCP) 【发布时间】:2020-10-25 22:01:36 【问题描述】:

我已经按照https://cloud.google.com/compute/docs/load-balancing/http/ 上的文档配置了一个 HTTP(S) 负载均衡器

当我尝试通过与负载均衡器关联的公共 IP 地址访问该站点时。我收到一条 502 响应消息:

错误:服务器错误

服务器遇到临时错误,无法完成您的请求。

请在 30 秒后重试。

我相信这是来自负载平衡器。

任何人都对可能发生的事情有任何见解,我还应该看什么?

【问题讨论】:

【参考方案1】:

难道负载均衡器依赖于您使用的是 URL 而不是 IP 地址?

可能有几个原因。

    URL 指向负载均衡器,负载均衡器有一个服务于该 URL 的服务器 IP 地址列表;然后它选择一个服务器并转发请求。为此,它必须接收原始 URL,因为负载平衡器可能正在为多组服务器提供服务。 如果 IP 地址指向负载均衡器,它将不知道从哪组服务器中选择。如果 IP 地址指向服务器,则会绕过负载平衡器。

我能想到的就这么多了…… 果酱

【讨论】:

【参考方案2】:

查看文档Troubleshooting HTTP(S) Load BalancingUnexplained 502 errors 部分:

如果 502 错误在您完成后持续超过几分钟 负载均衡器配置,很可能

没有firewall rule configured to allow health checks。 后端的软件没有运行。

要验证运行状况检查流量是否到达您的后端虚拟机,enable health check logging 并搜索成功的日志条目。

要创建允许来自 Google Cloud 运行状况检查系统(130.211.0.0/2235.191.0.0/16)的流量的入口规则,您可以使用 Cloud Console 或以下命令:

gcloud compute firewall-rules create fw-allow-health-check \
    --network=default \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp

在此命令中target tag allow-health-check 用于识别虚拟机。

【讨论】:

【参考方案3】:

我遇到了同样的问题。经过一天的搜索,这是一个health checker 的问题。健康测试是在TCP上,我改成HTTP,问题就解决了。

【讨论】:

以上是关于错误:服务器错误 服务器遇到临时错误,无法完成您的请求。请在 30 秒后重试。(GCP)的主要内容,如果未能解决你的问题,请参考以下文章

TFS 构建步骤 - 遇到错误 TF400893:无法联系服务器。请检查您的网络连接,然后重试

无法创建临时文件夹错误5拒绝访问

HTTP常见的状态码——面试题常考

内部服务器错误 - htaccess

Jenkins配置SSH服务器及遇到的问题

Laravel 5部署导致内部服务器错误