執行運算環境的藍/綠更新 - AWS Batch

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

執行運算環境的藍/綠更新

藍/綠更新是一種更新策略,可透過與現有的運算環境 (藍色) 一起建立新的運算環境 (綠色) 來減少停機時間和風險。此方法可讓您逐步將工作負載轉換至新環境,同時保持現有環境的運作。藍/綠更新提供最安全的更新路徑,並使用任何服務角色類型或配置策略。

概觀

藍/綠更新提供多種優點,使其非常適合生產環境。它們透過在更新過程中持續執行工作負載,提供零停機時間。此方法可讓您輕鬆復原功能,讓您可以在發生問題時快速還原至原始環境。您可以實作逐步轉換策略,在完全切換生產工作負載之前驗證新環境的效能。此方法也提供絕佳的風險緩解能力,因為原始環境會保持不變並正常運作,直到您選擇將其移除為止。

需要藍/綠更新時

在下列情況下,您必須使用藍/綠更新:

  • 當您的運算環境使用BEST_FIT配置策略時 (不支援基礎設施更新)

  • 當您的運算環境不使用 AWSServiceRoleForBatch 服務連結角色時

  • 當您需要在不同的服務角色類型之間轉換時

藍/綠更新特別建議用於生產環境,其中零停機時間對您的工作負載至關重要。當您在轉換生產工作負載之前需要測試新組態時,此方法可正常運作,確保變更符合您的效能和可靠性需求。當快速復原功能對您的操作很重要時,請選擇藍/綠更新,尤其是當您更新具有重大變更AMIs 時。當您想要在完全承諾變更之前驗證效能特性和行為,以提供更新程序的信心時,此方法也很理想。

先決條件

在執行藍/綠更新之前,請確定您有:

  • 建立和管理運算環境的適當 IAM 許可

  • 檢視和修改任務佇列設定的存取權

  • 為您的任務定義設定的任務重試策略,以處理轉換期間的潛在失敗。如需詳細資訊,請參閱自動化任務重試

  • 新運算環境的 AMI ID。這可以是:

    • Amazon ECS 最佳化 AMI 的最新核准版本 (預設為使用)

    • 符合 Amazon ECS 容器執行個體 AMI 規格的自訂 AMI。使用自訂 AMI 時,您可以透過下列其中一種方式指定它:

      • 在 EC2 組態中使用映像 ID 覆寫欄位

      • 在啟動範本中指定它

      如需建立自訂 AMIs的詳細資訊,請參閱 教學課程:建立運算資源 AMI

建立新環境之前,您需要記錄現有運算環境的組態。您可以使用 AWS Management Console 或 來執行此操作 AWS CLI。

注意

下列程序詳細說明如何執行只變更 AMI 的藍/綠更新。您可以更新新環境的其他設定。

重要

當您移除舊 (藍色) 運算環境時,這些執行個體上目前執行的任何任務都會失敗,因為執行個體將會終止。在任務定義中設定任務重試策略,以自動處理這些失敗。如需詳細資訊,請參閱自動化任務重試

對新環境有信心之後:

  1. 編輯任務佇列以移除舊的運算環境。

  2. 等待舊環境中任何執行中的任務完成。

  3. 刪除舊的運算環境。

Performing blue/green updates using the AWS Management Console
  1. 複製您目前的運算環境

    1. 在 https://https://console.aws.amazon.com/batch/ 開啟 AWS Batch 主控台。

    2. 選取您現有的運算環境。

    3. 選擇動作,然後選擇複製

    4. 名稱中,輸入新運算環境的唯一名稱。

    5. 選擇下一步

    6. 執行個體組態區段中,更新 AMI 設定:

      1. 展開 Additional configuration (其他組態)

      2. 對於 EC2 組態,請在映像類型中指定新的 AMI 類型,並在映像 ID 覆寫欄位中指定 AMI ID

    7. 選擇下一步

    8. 針對網路組態,選擇下一步

    9. 檢閱從現有環境自動複製的其他設定。

    10. 選擇建立運算環境

    11. 等待新的運算環境狀態變成 VALID

  2. 變更任務佇列順序

    1. 在導覽窗格中,選擇任務佇列

    2. 選取與現有運算環境相關聯的任務佇列。

    3. 選擇編輯

    4. 連線運算環境中,新增新的運算環境:

      • 新增訂單編號高於現有環境的新運算環境,以轉換工作負載。

      • 驗證新環境是否正常運作後,您可以提供較低的訂單號碼,使其成為主要環境。

    5. 選擇更新任務佇列

  3. 清除

    1. 在新環境中監控任務執行,以確保一切如預期般運作。

    2. 對新環境有信心之後:

      1. 編輯任務佇列以移除舊的運算環境。

      2. 等待舊環境中任何執行中的任務完成。

      3. 刪除舊的運算環境。

Performing blue/green updates using the AWS CLI
  1. 若要使用 取得組態 AWS CLI,請使用下列命令:

    aws batch describe-compute-environments \ --compute-environments your-compute-environment-name

    建立新環境時,請儲存輸出以供參考。

  2. 使用現有環境的組態建立新的運算環境,但使用新的 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
  3. 等待新的環境變成可用:

    aws batch describe-compute-environments \ --compute-environments your-new-compute-environment-name \ --query 'computeEnvironments[].status'
  4. 將新的運算環境新增至您的任務佇列:

    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
  5. 驗證後,請再次更新,讓新的環境成為主要環境:

    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