本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行運算環境的藍/綠更新
藍/綠更新是一種更新策略,可透過與現有的運算環境 (藍色) 一起建立新的運算環境 (綠色) 來減少停機時間和風險。此方法可讓您逐步將工作負載轉換至新環境,同時保持現有環境的運作。藍/綠更新提供最安全的更新路徑,並使用任何服務角色類型或配置策略。
概觀
藍/綠更新提供多種優點,使其非常適合生產環境。它們透過在更新過程中持續執行工作負載,提供零停機時間。此方法可讓您輕鬆復原功能,讓您可以在發生問題時快速還原至原始環境。您可以實作逐步轉換策略,在完全切換生產工作負載之前驗證新環境的效能。此方法也提供絕佳的風險緩解能力,因為原始環境會保持不變並正常運作,直到您選擇將其移除為止。
需要藍/綠更新時
在下列情況下,您必須使用藍/綠更新:
建議藍/綠更新時
藍/綠更新特別建議用於生產環境,其中零停機時間對您的工作負載至關重要。當您在轉換生產工作負載之前需要測試新組態時,此方法可正常運作,確保變更符合您的效能和可靠性需求。當快速復原功能對您的操作很重要時,請選擇藍/綠更新,尤其是當您更新具有重大變更AMIs 時。當您想要在完全承諾變更之前驗證效能特性和行為,以提供更新程序的信心時,此方法也很理想。
先決條件
在執行藍/綠更新之前,請確定您有:
建立新環境之前,您需要記錄現有運算環境的組態。您可以使用 AWS Management Console 或 來執行此操作 AWS CLI。
下列程序詳細說明如何執行只變更 AMI 的藍/綠更新。您可以更新新環境的其他設定。
當您移除舊 (藍色) 運算環境時,這些執行個體上目前執行的任何任務都會失敗,因為執行個體將會終止。在任務定義中設定任務重試策略,以自動處理這些失敗。如需詳細資訊,請參閱自動化任務重試。
對新環境有信心之後:
-
編輯任務佇列以移除舊的運算環境。
-
等待舊環境中任何執行中的任務完成。
-
刪除舊的運算環境。
- Performing blue/green updates using the AWS Management Console
-
-
複製您目前的運算環境
-
在 https://https://console.aws.amazon.com/batch/ 開啟 AWS Batch 主控台。
-
選取您現有的運算環境。
-
選擇動作,然後選擇複製。
-
在名稱中,輸入新運算環境的唯一名稱。
選擇下一步。
-
在執行個體組態區段中,更新 AMI 設定:
-
展開 Additional configuration (其他組態)。
-
對於 EC2 組態,請在映像類型中指定新的 AMI 類型,並在映像 ID 覆寫欄位中指定 AMI ID。
選擇下一步。
針對網路組態,選擇下一步。
-
檢閱從現有環境自動複製的其他設定。
-
選擇建立運算環境。
-
等待新的運算環境狀態變成 VALID。
-
變更任務佇列順序
-
在導覽窗格中,選擇任務佇列。
-
選取與現有運算環境相關聯的任務佇列。
-
選擇編輯。
-
在連線運算環境中,新增新的運算環境:
-
選擇更新任務佇列。
-
清除
-
在新環境中監控任務執行,以確保一切如預期般運作。
-
對新環境有信心之後:
-
編輯任務佇列以移除舊的運算環境。
-
等待舊環境中任何執行中的任務完成。
-
刪除舊的運算環境。
- Performing blue/green updates using the AWS CLI
-
若要使用 取得組態 AWS CLI,請使用下列命令:
aws batch describe-compute-environments \
--compute-environments your-compute-environment-name
建立新環境時,請儲存輸出以供參考。
使用現有環境的組態建立新的運算環境,但使用新的 AMI。以下是範例命令結構:
將範例值取代為上一個步驟的實際組態:
cat <<EOF > ./blue-green-compute-environment.json
{
"computeEnvironmentName": "your-new-compute-environment-name",
"type": "MANAGED",
"state": "ENABLED",
"computeResources": {
"instanceRole": "arn:aws:iam::012345678901:instance-profile/ecsInstanceRole",
"type": "EC2",
"minvCpus": 2,
"desiredvCpus": 2,
"maxvCpus": 256,
"instanceTypes": [
"optimal"
],
"allocationStrategy": "BEST_FIT_PROGRESSIVE",
"ec2Configuration": [
{
"imageType": "ECS_AL2023",
"imageIdOverride": "ami-0abcdef1234567890"
}
],
"subnets": [,
"subnet-0abcdef1234567890"
],
"securityGroupIds": [
"sg-0abcdef1234567890"
]
}
}
EOF
$ aws batch create-compute-environment --cli-input-json file://./blue-green-compute-environment.json
等待新的環境變成可用:
aws batch describe-compute-environments \
--compute-environments your-new-compute-environment-name \
--query 'computeEnvironments[].status'
將新的運算環境新增至您的任務佇列:
aws batch update-job-queue \
--job-queue your-job-queue \
--compute-environment-order order=1,computeEnvironment=your-existing-environment \
order=2,computeEnvironment=your-new-compute-environment-name
驗證後,請再次更新,讓新的環境成為主要環境:
aws batch update-job-queue \
--job-queue your-job-queue \
--compute-environment-order order=1,computeEnvironment=your-new-compute-environment-name
在舊環境中完成所有任務之後,請停用 ,然後刪除它:
aws batch update-compute-environment \
--compute-environment your-existing-environment \
--state DISABLED
aws batch delete-compute-environment \
--compute-environment your-existing-environment