全部產品
Search
文件中心

Auto Scaling:使用阿里雲CLI執行滾動升級任務

更新時間:Dec 11, 2024

阿里雲CLI是基於阿里雲OpenAPI建立的管理工具,您可以通過阿里雲CLI調用OpenAPI來管理阿里雲產品,靈活性高且易於擴充。本教程介紹如何使用阿里雲CLI執行滾動升級任務。

前提條件

  • 已安裝阿里雲CLI。具體操作,請參見阿里雲CLI文檔中的安裝指南部分。

  • 已建立伸縮組並添加ECS執行個體。

  • 如果為伸縮組內ECS執行個體更新鏡像,伸縮組的組內執行個體配置來源必須是伸縮配置。

  • 如果為伸縮組內ECS執行個體安裝OOS軟體包,必須提前在OOS中建立軟體包。具體操作,請參見批量管理我的軟體

背景資訊

滾動升級是指通過任務形式批次更新ECS執行個體配置。更多資訊,請參見滾動升級

操作步驟

本教程介紹如何使用阿里雲CLI更新伸縮組內ECS執行個體的鏡像、在ECS執行個體中執行指令碼以及為ECS執行個體安裝OOS軟體包。步驟如下:

步驟一:建立RAM使用者並添加許可權

  1. 登入RAM控制台

  2. 建立RAM使用者。

    本步驟中以建立名為clitest的RAM使用者為例。更多資訊,請參見建立RAM使用者

    1. 在左側導覽列,選擇身份管理 > 使用者

    2. 單擊建立使用者

    3. 建立使用者頁面,指定使用者配置,然後單擊確定

      樣本配置如下表所示。

      配置項

      樣本配置

      登入名稱稱

      example@sample.com

      顯示名稱

      example

      訪問方式

      選中使用永久 AccessKey 訪問

      自動為RAM使用者產生存取金鑰(AccessKey),支援通過API或其他開發工具訪問阿里雲。

    4. 使用者資訊頁面,單擊下載CSV檔案

      說明

      AccessKeySecret只在建立時顯示,不提供查詢,請妥善保管。如果AccessKey泄露或丟失,則需要建立新的AccessKey。

  3. 為RAM使用者添加操作資源的許可權。

    1. 在左側導覽列,選擇身份管理 > 使用者

    2. 找到已建立的RAM使用者clitest,在操作列,單擊添加許可權

    3. 在添加許可權頁面,選擇執行滾動升級任務所需的許可權,然後單擊確認新增授權

      樣本配置如下表所示。

      配置項

      樣本配置

      資源範圍

      保持預設帳號層級

      授權主體

      保持預設example@sample.com。

      權限原則

      選擇以下系統許可權:

      • AliyunECSFullAccess:操作ECS資源的許可權,包括ECS執行個體等資源。

      • AliyunESSFullAccess:操作Auto Scaling資源的許可權,包括伸縮組等資源。

      • AliyunOOSFullAccess:操作CloudOps Orchestration Service資源的許可權,包括執行等資源。

      • AliyunOSSFullAccess:操作Object Storage Service資源的許可權,包括bucket等資源。

步驟二:配置並驗證阿里雲CLI

更多配置項的說明,請參見阿里雲CLI文檔中的配置阿里雲CLI部分。

  1. 在您的本地電腦中開啟命令列工具。

  2. 配置阿里雲CLI。

    1. 運行以下命令開啟設定檔。

      aliyun configure
    2. 按提示輸入AccessKeyID、AccessKeySecret等資訊。

      cli-config

  3. 運行以下命令驗證阿里雲CLI是否可用。

    aliyun ecs DescribeRegions

    該命令用於查詢支援的地區資訊,返回地區資訊表示命令執行成功,樣本如下圖所示。cli-example

步驟三:通過阿里雲CLI執行滾動升級任務

本步驟提供樣本命令,示範更新伸縮組內ECS執行個體的鏡像、在ECS執行個體中執行指令碼以及為ECS執行個體安裝OOS軟體包。

  1. 輸入阿里雲CLI命令執行滾動升級任務。

    範例程式碼中涉及的OOS模板參數說明,請參見模板參數說明

    • 鏡像更新樣本命令如下,實現將伸縮組內ECS執行個體的鏡像更新為Alibaba Cloud Linux 2.1903 LTS 64位。

      aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup --Parameters "{
              \"invokeType\": \"invoke\",
              \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
              \"scalingConfigurationId\": \"asc-bp1bx8mzur534edp****\",
              \"imageId\": \"aliyun_2_1903_x64_20G_alibase_20200529.vhd\",
              \"sourceImageId\": \"centos_7_8_x64_20G_alibase_20200717.vhd\",
              \"OOSAssumeRole\": \"\",
              \"enterProcess\": [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"exitProcess\":  [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"batchNumber\": 2,
              \"batchPauseOption\": \"Automatic\"
            }"
    • 指令碼執行樣本命令如下,實現在伸縮組內ECS執行個體中執行Shell命令df -hifconfig查看執行個體的磁碟和網路設定資訊。

      aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByRunCommandInScalingGroup --Parameters "{
              \"invokeType\": \"invoke\",
              \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
              \"commandType\": \"RunShellScript\",
              \"invokeScript\": \"df -h\nifconfig\",
              \"rollbackScript\": \"df -h\nifconfig\",
              \"OOSAssumeRole\": \"\",
              \"exitProcess\": [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"enterProcess\": [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"batchNumber\": 2,
              \"batchPauseOption\": \"Automatic\"
            }"
    • 安裝OOS軟體包樣本命令如下,實現為伸縮組內的ECS執行個體統一安裝OOS中已建立的WordPress軟體包。

      aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByConfigureOOSPackage --Parameters "{
              \"invokeType\": \"invoke\",
              \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
              \"packageName\": \"wordpress\",
              \"packageVersion\": \"v4\",
              \"action\": \"install\",
              \"OOSAssumeRole\": \"\",
              \"enterProcess\": [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"exitProcess\": [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"batchNumber\": 2,
              \"batchPauseOption\": \"Automatic\"
            }"
  2. 查看執行詳情。

    執行滾動升級任務的CLI命令時,會自動在OOS中建立執行。您可以通過返回的執行ID查看執行的詳情,包括執行結果、輸出等資訊。下面以查看指令碼執行的輸出為例,介紹如何擷取執行ID並查看執行詳情。

    1. 在命令的返回資訊中找到滾動升級任務的執行ID。

      執行ID樣本如下圖所示。exec-id

    2. 運行以下阿里雲CLI命令查看執行詳情。

      aliyun oos ListExecutions --ExecutionId exec-40e2e17ef7e04****

      執行詳情樣本如下圖所示。exec-outputs

執行復原任務:滾動升級異常時的處理

如果滾動升級過程中出現異常,或者滾動升級後又需要使用歷史配置,您可以執行復原任務為伸縮組內ECS執行個體恢複配置。本步驟提供樣本命令,示範如何復原已經執行的滾動升級任務。

  1. 在命令的返回資訊中找到滾動升級任務的執行ID。

    執行ID樣本如下圖所示。exec-id

  2. 輸入阿里雲CLI命令執行復原任務。

    範例程式碼中涉及的OOS模板參數說明,請參見模板參數說明

    說明

    執行復原任務時,OOS會根據滾動升級任務自動進行過濾待復原的ECS執行個體、暫停和恢複伸縮組流程等操作,因此您可以跳過指定部分參數。

    • 復原鏡像更新樣本命令如下,實現將ECS執行個體的鏡像復原為CentOS 7.8 64位。

      aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup --Parameters "{
              \"invokeType\": \"rollback\",
              \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
              \"scalingConfigurationId\": \"asc-bp1bx8mzur534edp****\",
              \"sourceImageId\": \"centos_7_8_x64_20G_alibase_20200717.vhd\",
              \"sourceExecutionId\": \"exec-83dba59be77d430****\",
              \"OOSAssumeRole\": \"\",
              \"batchNumber\": 2,
              \"batchPauseOption\": \"Automatic\"
            }"
    • 復原指令碼執行樣本命令如下,實現在ECS執行個體中執行復原用的指令碼。此處仍然以Shell命令df -hifconfig為例,您可以按需要更換指令碼。

      aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByRunCommandInScalingGroup --Parameters "{
              \"invokeType\": \"rollback\",
              \"commandType\": \"RunShellScript\",
              \"rollbackScript\": \"df -h\nifconfig\",
              \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
              \"sourceExecutionId\": \"exec-40e2e17ef7e046****\",
              \"OOSAssumeRole\": \"\",
              \"batchNumber\": 2,
              \"batchPauseOption\": \"Automatic\"
            }"
    • 復原安裝OOS軟體包樣本命令如下,實現ECS執行個體統一安裝OOS中已建立的WordPress軟體包歷史版本。

      aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByConfigureOOSPackage --Parameters "{
              \"invokeType\": \"rollback\",
              \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
              \"packageVersion\": \"v3\",
              \"packageName\": \"wordpress\",
              \"sourceExecutionId\": \"exec-f4e61f2f21fe490****\",
              \"OOSAssumeRole\": \"\",
              \"batchNumber\": 2,
              \"batchPauseOption\": \"Automatic\"
            }"
  3. 查看執行詳情。

    執行復原任務的CLI命令時,同樣會自動在OOS中建立執行。您也可以通過步驟三中的方法查看執行的詳情,包括執行結果、輸出等資訊。

模板參數說明

本節列出樣本中使用的公用模板的參數。

表 1. ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup參數說明

參數

說明

invokeType

任務類型。取值範圍:

  • invoke:滾動升級任務。

  • rollback:復原任務。

scalingGroupId

待執行任務的伸縮組的ID。

scalingConfigurationId

伸縮組生效中的伸縮配置的ID。

imageId

替換當前鏡像時使用的鏡像的ID。

sourceImageId

復原操作時使用的鏡像的ID。

OOSAssumeRole

執行任務時使用的RAM角色,預設為OOSServiceRole。

enterProcess

開始執行任務時暫停伸縮組流程。

exitProcess

結束任務時需要恢複的伸縮組流程。

batchNumber

執行任務時,將伸縮組內ECS執行個體分成幾個批次,每批次至少包括一台ECS執行個體。

batchPauseOption

執行任務時的暫停設定。取值範圍:

  • Automatic:不暫停,一次性執行完成。

  • FirstBatchPause:第一批次執行完成後,暫停執行任務。

  • EveryBatchPause:每批次執行完成後,都暫停執行任務。

sourceExecutionId

執行復原任務時,源滾動升級任務的執行ID。

說明

您也可以在OOS控制台查看更多參數說明,以華東1(杭州)地區為例,請參見ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup

表 2. ACS-ESS-RollingUpdateByRunCommandInScalingGroup參數說明

參數

說明

invokeType

任務類型。取值範圍:

  • invoke:滾動升級任務。

  • rollback:復原任務。

scalingGroupId

待執行任務的伸縮組的ID。

commandType

待執行的指令碼類型,取值RunShellScript代表Shell指令碼。

invokeScript

執行滾動升級任務時,在ECS執行個體中執行的指令碼。

rollbackScript

執行復原任務時,在ECS執行個體中執行的指令碼。

OOSAssumeRole

執行任務時使用的RAM角色,預設為OOSServiceRole。

enterProcess

開始執行任務時暫停伸縮組流程。

exitProcess

結束任務時需要恢複的伸縮組流程。

batchNumber

執行任務時,將伸縮組內ECS執行個體分成幾個批次,每批次至少包括一台ECS執行個體。

batchPauseOption

執行任務時的暫停設定。取值範圍:

  • Automatic:不暫停,一次性執行完成。

  • FirstBatchPause:第一批次執行完成後,暫停執行任務。

  • EveryBatchPause:每批次執行完成後,都暫停執行任務。

sourceExecutionId

執行復原任務時,源滾動升級任務的執行ID。

說明

您也可以在OOS控制台查看更多參數說明,以華東1(杭州)地區為例,請參見ACS-ESS-RollingUpdateByRunCommandInScalingGroup

表 3. ACS-ESS-RollingUpdateByConfigureOOSPackage參數說明

參數

說明

invokeType

任務類型。取值範圍:

  • invoke:滾動升級任務。

  • rollback:復原任務。

scalingGroupId

待執行任務的伸縮組的ID。

packageName

軟體包的名稱。

packageVersion

軟體包的版本。

action

配置軟體包的方式。取值範圍:

  • install:安裝軟體包。

  • uninstall:卸載軟體包。

預設值:install。

OOSAssumeRole

執行任務時使用的RAM角色,預設為OOSServiceRole。

enterProcess

開始執行任務時暫停伸縮組流程。

exitProcess

結束任務時需要恢複的伸縮組流程。

batchNumber

執行任務時,將伸縮組內ECS執行個體分成幾個批次,每批次至少包括一台ECS執行個體。

batchPauseOption

執行任務時的暫停設定。取值範圍:

  • Automatic:不暫停,一次性執行完成。

  • FirstBatchPause:第一批次執行完成後,暫停執行任務。

  • EveryBatchPause:每批次執行完成後,都暫停執行任務。

sourceExecutionId

執行復原任務時,源滾動升級任務的執行ID。

說明

您也可以在OOS控制台查看更多參數說明,以華東1(杭州)地區為例,請參見ACS-ESS-RollingUpdateByConfigureOOSPackage