簡體   English   中英

AWS Fargate - 應用程序負載均衡器 (ELB) 顯示不健康的目標,錯誤“健康檢查失敗,這些代碼:[502]”

[英]AWS Fargate - Application load balancer(ELB) shows unhealthy targets with error “Health checks failed with these codes: [502]”

My app is running on port 3000 and web context is /app, so " http://host:3000/app/index.html " successfully returns index.html page running the app locally.

負載均衡器(公共)偵聽端口 80 並將流量轉發到端口 3000 上的目標。

AWS Fargate - 任務定義將主機和容器端口映射到端口 3000。 - 任務顯示為 RUNNING 和狀態 HEALTHY 但最終由於 ELB 運行狀況檢查失敗而停止。 而且我可以在雲手表中看到我的應用程序啟動日志(任務-> 日志)。 - 集群服務的安全組在自定義 tcp 端口 3000 上接收入站流量。

我嘗試通過更新 TargetGroup 運行狀況檢查以使用路徑作為“/”、“/app”和“/app/index.html”,但這也不起作用。

首先驗證:

  • 您的應用程序在容器中的錯誤中啟動。
  • 您的安全配置允許 ECS 和 ELB 之間的流量。
  • 您的健康檢查指向正確的道路。

是時候看看 ELB 日志了,您可以按照本教程啟用它們。

使用 ECS 服務日志、ECS 任務日志和 ELB 日志,您可以確定應用程序啟動和運行所需的時間,一旦您知道,將 ECS 服務寬限期配置為該值。

一旦您的寬限期足夠大以允許前面解釋的情況發生,您的應用程序將通過健康檢查。

例如,在我們的案例中,Spring 引導應用程序在 EC2 實例中啟動大約需要 20 秒,在 ECS Fargate 服務上可能需要超過 3 分鍾才能到達,因此我們將寬限期設置為 240 秒,從而解決了問題。

您需要將 TargetGroup 健康檢查配置為使用 3000 端口,因為在您的應用程序正在偵聽 3000 端口並且 ALB 將請求發送到在該端口中運行的任務,您可以轉到 TargetGroup 健康檢查選項卡並在選項端口 select 覆蓋。 如果您創建了 ECS 服務,請驗證健康檢查寬限期,在某些情況下,該任務可能需要很長時間才能正確啟動。

暫無
暫無

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

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