當我在 Amazon Elastic Container Service (ECS) 上更新應用程式時,我想在不停機或中斷執行中服務的情況下部署新任務。
解決方法
若要在不停機的情況下啟動新任務,請執行下列動作。
將部署參數設定為使用滾動式更新部署類型
針對 Amazon ECS 中的零停機時間部署,最佳實務是將「運作狀態百分比下限」設為 100%,並將「百分比上限」設為 200%。如需有關運作狀態百分比下限和百分比上限參數的詳細資訊,請參閱部署組態。
若要設定部署參數,請完成下列步驟:
- 開啟 Amazon ECS 主控台。
- 選擇「叢集」。
- 在「Clusters details」(叢集詳細資料) 頁面的「服務」下,選取您要更新的服務。然後,選擇「更新」。
- 在「部署組態」下設定「執行中的任務下限百分比」和 「執行中的任務上限百分比」值。
- 選擇「更新服務」。
**重要:**Amazon ECS 會管理容器部署流程,但不處理流量路由。如果您使用負載平衡器,請設定負載平衡器以將流量路由至您的 Amazon ECS 任務。如果您搭配使用 AWS CodeDeploy 與藍/綠部署,請檢查流量管理組態。
在工作定義中設定容器執行個體的 stopTimeout 參數
設定 stopTimeout 參數,以確保您的應用程式在部署期間有足夠的緩衝時間來完成任務請求。更新 Amazon ECS 工作定義,然後在「建立新的任務定義修訂」中的「Container timeouts - optional」(容器逾時 - 選用) 下,設定「停止逾時」值。
設定 ELB 目標群組設定
若要設定 Elastic Load Balancing (ELB) 目標群組設定,請完成下列步驟:
- 開啟 Amazon EC2 主控台。
- 選擇「目標群組」,然後選取與您的 Amazon ECS 服務相關聯的目標群組。
- 選擇「群組詳細資訊」索引標籤。然後,使用您的值設定「運作狀態檢查路徑」、「運作狀態檢查通訊協定」、「運作狀態檢查連接埠」、「運作良好閾值」和「狀態不良閾值」。
- 選擇「屬性」索引標籤,然後設定「取消註冊延遲」值以滿足應用程式的需求。
**注意:**最佳實務是將取消註冊延遲屬性設定為應用程式回應時間的兩倍左右。
- (選用) 為負載平衡器設定黏性會話,以便讓進行中的應用程式請求工作階段完成現有任務。
如需進階部署策略,請使用 CodeDeploy
在部署之前使用 CodeDeploy 驗證 Amazon ECS 服務的狀態。
注意:****全部同時進行的藍/綠部署流量轉移可能會導致服務中斷。
設定 Spot 執行個體的自動排空功能
為容器執行個體開啟 Spot 執行個體排空功能,以自動排空執行個體。