我的 AWS Fargate 上的 Amazon Elastic Container Service (Amazon ECS) 任務運作狀態檢查失敗。
解決方法
對最常見的負載平衡器錯誤進行疑難排解
如果您收到下列任一錯誤:
- (service AWS-service) (port 8080) is unhealthy in (target-grouparn:uxyztargetgroup/aws-targetgroup/123456789) due to (reason Health checks failed with these codes: [502]) or [request timeout]
- (service AWS-Service) (port 8080) is unhealthy in target-group tf-20190411170 due to (reason Health checks failed)
請嘗試以下疑難排解步驟:
- 如果您的容器映射至連接埠 80,請確認您的容器安全群組允許負載平衡器在連接埠 80 上進行傳入流量。
- 確認負載平衡器運作狀態的 ping 連接埠值已正確設定。如果此連接埠未正確設定,負載平衡器可能會自行取消註冊容器。
- 定義運作狀態檢查寬限期下限。這會指示服務排程器在具現化任務之後,忽略預先定義時段內的 Elastic Load Balancing 運作狀態檢查。
- 監控服務的 CPU 和記憶體指標。例如,高度佔用 CPU 可能使您的應用程式沒有回應,並導致 502 錯誤。
- 檢查應用程式日誌中是否有應用程式錯誤。
- 檢查 ping 連接埠和運作狀態檢查路徑是否均已正確設定。
- 確定您的後端資料庫已成功連接。這假設您的應用程式是在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上由 Amazon Elastic Container Service (Amazon ECS) 啟動的一組任務。它還假設您的應用程式無法與 Amazon Relational Database Service (Amazon RDS) 資料庫通訊。
對 504 錯誤進行疑難排解
由於下列任何原因,您可能會收到 504 錯誤:
- 您的負載平衡器無法在連線逾時到期 (10 秒) 之前建立與目標的連線。
- 您的負載平衡器已建立目標的連線,但目標在閒置逾時期間結束前並無回應。
- 子網路的網路存取控制清單不允許目標流量傳輸至暫時性連接埠 (1,024-65,535) 的負載平衡器節點
如果您收到 504 錯誤,如下所示:
- (service AWS-Service) (port 8080) is unhealthy in target-group due to (reason Health checks failed with these codes:[504]
請嘗試以下疑難排解步驟:
- 確認後端立即成功回應。
- 正確設定回應逾時值。
**注意:**回應逾時是指容器必須將回應傳回運作狀態檢查 ping 的時間量。如果此值低於回應所需的時間量,運作狀態檢查會失敗。
- 檢查負載平衡器的存取日誌,以取得有關錯誤的詳細資訊。
對失敗的容器運作狀態檢查進行疑難排解
如果您收到下列錯誤,表示您的服務未與負載平衡器整合,但任務中的容器正在使用您的服務無法通過的運作狀態檢查:
- (service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks
請嘗試下列疑難排解步驟:
- 確認您傳遞至容器的命令正確,且語法正確。
- 如果任務已執行一段時間,請檢查您的應用程式日誌和 Amazon CloudWatch 日誌。
**注意:**您無法存取基礎主機,因為 Fargate 由 AWS 管理。如需進一步疑難排解,請在 Amazon EC2 中啟動 Amazon ECS 任務。然後,使用 SSH 連接至 EC2 執行個體。
相關資訊
服務定義參數
進階容器定義參數
啟用存取記錄
對 Application Load Balancer 進行疑難排解