如何找出 AWS ELB 認為我的服務失敗的原因?

如何找出 AWS ELB 認為我的服務失敗的原因?

我有一項註冊了兩個目標組的服務:albwwwalb

目標alb群組用於內部請求,wwwalb目標群組用於外部請求。

當我部署服務時,它會按預期啟動並開始接受請求。查看訪問日誌,我可以看到albwwwalb探測服務。由於該服務在 3 個區域中運行,因此我看到每個區域有 3 個請求,總共 6 個。

 - - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
 - - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
 - - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
 - - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
 - - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
 - - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -

儘管如此,該服務最終還是被取消,因為目標群體認為該服務不健康。事實上,它似乎從來不認為這項服務是健康的。

在此輸入影像描述

檢查目標群組的 API 呼叫告訴我以下資訊:

{
    "TargetHealthDescriptions": [
        {
            "Target": {
                "Id": "10.1.143.94",
                "Port": 8182,
                "AvailabilityZone": "eu-north-1b"
            },
            "HealthCheckPort": "8182",
            "TargetHealth": {
                "State": "unhealthy",
                "Reason": "Target.FailedHealthChecks",
                "Description": "Health checks failed"
            }
        }
    ]
}

我一直在研究目標組指標、負載平衡器配置,但我根本找不到任何可以解釋這種行為的設定。健康檢查設定對我來說似乎也很好:

在此輸入影像描述

我最近剛剛添加了wwwalb,所以我認為以某種方式在兩個目標組中提供此服務會導致此問題。不過,AWS 支持並解釋了在兩個目標組中提供服務的情況。

有沒有辦法從 AWS 獲取有關導致此問題的真正原因的更多詳細資訊?有什麼方法可以調查 AWS 認為該服務失敗的原因嗎?

答案1

我通常將不健康閾值設定為高於健康閾值。就像間隔 10 秒的 2 個成功呼叫是健康的一樣,間隔 10 秒的 6 個不成功的呼叫是不健康的。

也就是說,這並不重要,您的設定應該有效。當目標註冊時,會出現“初始”狀態。在此期間,AWS 會嘗試驗證運行狀況檢查,並且只有在運行狀況檢查成功時才應切換到健康狀態。

完成註冊程序並開始運行狀況檢查可能需要幾分鐘的時間。

您確定您的應用程式沒有成功回复,然後失敗了足夠長的時間,以至於再次變得不健康嗎?或者真的是啟動時間太長而始終無法脫離「初始」狀態?

相關內容