簡體   English   中英

(GCP):服務器錯誤 服務器遇到臨時錯誤,無法完成您的請求。 請在 30 秒后重試

[英](GCP) : Server Error The server encountered a temporary error and could not complete your request. Please try again in 30 seconds

我在 Google Cloud 中創建了一個“負載均衡器”並將 2 個虛擬機連接到它。 當我向“負載均衡器”發送一些請求時,有時它會傳遞給連接到負載均衡器的虛擬機,有時即使運行狀況檢查當時 100% OK,它也會引發以下錯誤。

錯誤:服務器錯誤 服務器遇到臨時錯誤,無法完成您的請求。
請在 30 秒后重試。 在此處輸入圖像描述

創建此答案是為了根據 OP 提供的有限信息和上面寫的評論來支持社區。

當您嘗試確定 HTTP 負載均衡器問題的根本原因時,最准確的決定是查看日志條目。

根據谷歌官方文檔 HTTP(S) 負載平衡日志條目包含對監控和調試 HTTP(S) 流量有用的信息。

日志條目包含以下類型的信息:

  • 一般信息,例如嚴重性、項目 ID、項目編號和時間戳。
  • HttpRequest 日志字段 但是,不會為 HTTP(S) 負載平衡 Cloud Logging 日志填充HttpRequest.protocol
  • structPayload 中的 statusDetails 字段 該字段包含一個字符串,用於解釋負載均衡器返回它所做的 HTTP 狀態的原因。 下表包含對這些日志字符串的進一步說明。 statusDetails 字段不適用於區域外部 HTTP(S) 負載平衡器。
  • 不會記錄從負載平衡器發出的重定向(HTTP 響應狀態代碼 302 Found) 記錄從后端實例發出的重定向。

要在 HTTP 負載均衡器中啟用日志條目,請遵循本指南

消息“錯誤:服務器錯誤服務器遇到臨時錯誤,無法完成您的請求。” 可能由多種原因引起,包括:

  • 沒有配置防火牆規則以允許運行狀況檢查。
  • 后端的軟件沒有運行。

在此頁面中,您可以找到執行與一般連接問題相關的完整故障排除的詳細指南。

我發現這些帖子與 HTTP 負載平衡器和 502 響應相關,您可以在這些帖子中找到有用的信息。

在我的情況下,問題是運行狀況檢查未返回 200。它在調用默認 / 時返回 302(找到)並重定向到其他 url 200(負載平衡器檢查忽略)並將該節點視為“不健康”,而不是路由傳入的 http /s 對損壞節點的請求將其從輪換中移除並將該 502 錯誤消息返回給客戶端。

錯誤:服務器錯誤 服務器遇到臨時錯誤,無法完成您的請求。 請在 30 秒后重試。

在我的 LoadBalancer 下是 GKE 集群,它帶有 gke ingress->service-> pod 並且沒有配置顯式的 liveness/readiness 探針,因此默認情況下運行狀況檢查命中 / 並帶有 302/Found/redirect。

在將這些探測器添加到部署清單並將它們指向返回 OK/200 的端點之后(/-/healthy,/-/ready 在我的 prometheus 在 pod 內運行的情況下)問題得到修復。

不幸的是,gke ingress 僅在注釋中提供了非信息性消息 UNHEALTY,因此我花了一段時間才了解導致該問題的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM