Amazon ECS 服務參數最佳實務 - Amazon Elastic Container Service

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

Amazon ECS 服務參數最佳實務

為確保應用程式零停機時間,部署程序如下:

  1. 啟動新的應用程式容器,同時讓現有容器保持執行狀態。

  2. 檢查新容器是否正常運作。

  3. 停止舊容器。

根據部署組態與叢集中可用、未預留的空間量,可能需要多次重複此程序才能完成以新任務取代所有舊任務的工作。

可以使用下列兩種服務組態選項來修改任務數量:

  • minimumHealthyPercent:100% (預設)

    服務在部署期間必須保持在 RUNNING 狀態的任務數量下限。此值是無條件進位到最接近整數的 desiredCount 的百分比。此參數可讓您不使用額外的叢集容量進行部署。

  • maximumPercent:200% (預設)

    服務在部署期間允許保持在 RUNNINGPENDING 狀態的任務數量上限。此值是無條件捨去到最接近整數的 desiredCount 的百分比。

範例:預設組態選項

假設下列服務具有六項任務,部署在總共可容納八項任務的叢集中。預設服務組態選項不允許部署低於六個所需任務的 100%。

部署程序如下:

  1. 目標是取代六項任務。

  2. 排程器會啟動兩項新任務,因為預設設定要求必須有六項執行中任務。

    現在有六項現有任務與兩項新任務。

  3. 排程器會停止兩項現有任務。

    現在有四項現有任務與兩項新任務。

  4. 排程器會再啟動兩項新任務。

    現在有四項現有任務與四項新任務。

  5. 排程器會關閉兩項現有任務。

    現在有兩項現有任務與四項新任務。

  6. 排程器會再啟動兩項新任務。

    現在有兩項現有任務與六項新任務

  7. 排程器會關閉最後兩項現有任務。

    現在有六項新任務。

在上述範例中,如果使用選項的預設值,則需要等待 2.5 分鐘,才能啟動每項新任務。此外,負載平衡器可能必須等待 5 分鐘,舊任務才能停止。

範例:修改 minimumHealthyPercent

您可以將 minimumHealthyPercent 值設定為 50%,以加速部署。

假設下列服務具有六項任務,部署在總共可容納八項任務的叢集中。部署程序如下:

  1. 目標是取代六項任務。

  2. 排程器會停止三項現有任務。

    仍有三項現有任務在執行中,符合 minimumHealthyPercent 值。

  3. 排程器會啟動五項新任務。

    現在有三項現有任務與五項新任務。

  4. 排程器會停止剩餘的三項現有任務。

    現在有五項新任務

  5. 排程器會啟動最後一項新任務。

    現在有六項新任務。

範例:修改叢集可用空間

您也可以新增額外的可用空間,以便執行更多任務。

假設下列服務具有六項任務,部署在總共可容納十項任務的叢集中。部署程序如下:

  1. 目標是取代現有任務。

  2. 排程器會停止三項現有任務,

    現在有三項現有任務。

  3. 排程器會啟動六項新任務。

    現在有三項現有任務與六項新任務

  4. 排程器會停止三項現有任務。

    現在有六項新任務。

建議

如果任務閒置一段時間且使用率不高,請針對服務組態選項使用下列值。

  • minimumHealthyPercent:50%

  • maximumPercent:200%