
我有一項註冊了兩個目標組的服務:alb
和wwwalb
。
目標alb
群組用於內部請求,wwwalb
目標群組用於外部請求。
當我部署服務時,它會按預期啟動並開始接受請求。查看訪問日誌,我可以看到alb
和wwwalb
探測服務。由於該服務在 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 會嘗試驗證運行狀況檢查,並且只有在運行狀況檢查成功時才應切換到健康狀態。
您確定您的應用程式沒有成功回复,然後失敗了足夠長的時間,以至於再次變得不健康嗎?或者真的是啟動時間太長而始終無法脫離「初始」狀態?