使用容器運作狀態檢查來判斷 Amazon ECS任務運作狀態 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用容器運作狀態檢查來判斷 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判斷任務運作狀態

任務定義中必要且具有運作狀態檢查命令的容器,是唯一可視為決定任務運作狀態的容器。

下列規則會依序評估:

  1. 如果一個必要容器的狀態為 UNHEALTHY,則任務狀態為 UNHEALTHY

  2. 如果一個必要容器的狀態為 UNKNOWN,則任務狀態為 UNKNOWN

  3. 如果所有必要容器的狀態為 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之前被考慮過,則該狀態會保留到代理程式重新連線並再次進行運作狀態檢查為止。沒有對容器運作狀態檢查的狀態做出任何假設。