本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用容器運作狀態檢查來判斷 Amazon ECS任務運作狀態
建立任務定義時,您可以設定容器的運作狀態檢查。運作狀態檢查是可在容器上執行的命令,可驗證應用程式運作狀態和可用性。
Amazon ECS容器代理程式只會監控和報告任務定義中指定的運作狀態檢查。Amazon ECS不會監控內嵌在容器映像中的 Docker 運作狀態檢查,但未在容器定義中指定。容器定義中指定的運作狀態檢查參數,會覆寫任何存在於容器影像中的 Docker 運作狀態檢查。
在任務定義中定義運作狀態檢查時,容器會在容器內執行運作狀態檢查程序,然後評估結束程式碼以判斷應用程式運作狀態。
運作狀態檢查包含下列參數:
-
命令 – 容器執行的命令,用於判斷是否運作良好。此字串陣列的開頭可以是
CMD
,如此能直接執行命令引數;或是CMD-SHELL
,藉以使用容器預設的 shell 來執行命令。 -
間隔 – 每次運作狀態檢查之間的時間 (秒)。
-
逾時 – 在被視為失敗之前等待運作狀態檢查成功的期間 (以秒為單位)。
-
重試 – 在容器被視為運作狀態不佳之前重試失敗運作狀態檢查的次數。
-
開始期間 – 在運作狀態檢查失敗之前,提供容器開機時間的選用寬限期會計入重試次數上限。
如需有關如何在任務定義中指定運作狀態檢查的資訊,請參閱 運作狀態檢查。
下列說明容器的可能運作狀態值:
-
HEALTHY
- 容器運作狀態檢查已成功通過。 -
UNHEALTHY
- 容器運作狀態檢查失敗。 -
UNKNOWN
–正在評估容器運作狀態檢查、未定義容器運作狀態檢查,或 Amazon ECS沒有容器的運作狀態。
在容器上執行的運作狀態檢查命令。因此,您必須在容器映像中包含命令。
運作狀態檢查會透過容器的回送介面 localhost
或 連線至應用程式127.0.0.1
。的結束碼0
表示成功,非零結束碼表示失敗。
使用容器運作狀態檢查時,請考慮下列事項:
-
容器運作狀態檢查需要 Amazon ECS容器代理程式的 1.17.0 版或更高版本。
-
如果您使用的是 Linux 平台版本 或更新版本
1.1.0
,或是 Windows 平台版本1.1.0
或更新版本,則 Fargate 任務支援容器運作狀態檢查
Amazon 如何ECS判斷任務運作狀態
任務定義中必要且具有運作狀態檢查命令的容器,是唯一可視為決定任務運作狀態的容器。
下列規則會依序評估:
-
如果一個必要容器的狀態為
UNHEALTHY
,則任務狀態為UNHEALTHY
。 -
如果一個必要容器的狀態為
UNKNOWN
,則任務狀態為UNKNOWN
。 -
如果所有必要容器的狀態為
HEALTHY
,則任務狀態為HEALTHY
。
請考慮下列任務運作狀態範例,其中包含 2 個必要容器。
容器 1 運作狀態 | 容器 2 運作狀態 | 任務運作狀態 |
---|---|---|
UNHEALTHY |
UNKNOWN |
UNHEALTHY |
UNHEALTHY |
HEALTHY |
UNHEALTHY |
HEALTHY |
UNKNOWN |
UNKNOWN |
HEALTHY |
HEALTHY |
HEALTHY |
請考慮以下具有 3 個容器的任務運作狀態範例。
容器 1 運作狀態 | 容器 2 運作狀態 | 容器 3 運作狀態 | 任務運作狀態 |
---|---|---|---|
UNHEALTHY |
UNKNOWN |
UNKNOWN |
UNHEALTHY |
UNHEALTHY |
UNKNOWN |
HEALTHY |
UNHEALTHY |
UNHEALTHY |
HEALTHY |
HEALTHY |
UNHEALTHY |
HEALTHY |
UNKNOWN |
HEALTHY |
UNKNOWN |
HEALTHY |
UNKNOWN |
UNKNOWN |
UNKNOWN |
HEALTHY |
HEALTHY |
HEALTHY |
HEALTHY |
客服人員中斷連線對運作狀態檢查的影響
如果 Amazon ECS容器代理程式與 Amazon ECS服務中斷連線,這不會導致容器轉換為 UNHEALTHY
狀態。這是根據設計,以確保容器在代理程式重新啟動或暫時無法使用期間持續執行。運作狀態檢查狀態是來自 Amazon ECS代理程式的「上次接聽」回應,因此,如果容器在中斷連線HEALTHY
之前被考慮過,則該狀態會保留到代理程式重新連線並再次進行運作狀態檢查為止。沒有對容器運作狀態檢查的狀態做出任何假設。