滚动升级是指通过任务形式批量更新ECS实例配置。通过滚动升级,您可以为伸缩组内处于服务中状态的ECS实例批量更新镜像或批量执行脚本。

前提条件

  • 伸缩组所在地域支持运维编排服务OOS。
    说明 目前华北1(青岛)、华北6(乌兰察布)、华南2(河源)、美国(硅谷)和阿联酋(迪拜)地域不支持运维编排服务OOS,因此不能使用滚动升级功能。
  • 伸缩组中不存在执行中的伸缩活动。
  • 准备需要执行的脚本或使用的新镜像。
  • 如果批量更新镜像,请确保使用自定义镜像。其他镜像不支持。

背景信息

更新镜像和执行脚本都能够更新ECS实例配置。两者使用场景如下:
  • 更新镜像更加全面,适合为伸缩组内ECS实例统一更新操作系统。
  • 脚本执行更加灵活,适合执行单项或多项运维操作,适用于以下几个场景。
    • 查看和更新部分系统配置,例如查看磁盘使用空间。
    • 安装常用软件,例如安装Apache。
    • 部署业务代码。

使用限制

  • 只能对状态为服务中的ECS实例更新镜像或执行脚本。
  • 同一时间只能执行一个滚动升级任务。

创建并执行滚动升级任务

  1. 登录弹性伸缩控制台
  2. 在顶部菜单栏处,选择地域。
  3. 在左侧导航栏中,单击伸缩组管理
  4. 找到待操作的伸缩组,选择一种方式打开伸缩组详情页面。
    • 伸缩组名称/ID区域,单击伸缩组ID。
    • 操作区域,单击管理
  5. 在左侧导航栏,单击滚动升级
  6. 在页面左上角,单击创建执行任务
  7. 创建执行任务对话框,完成滚动升级任务的配置,然后单击创建任务
    需要配置的信息如下表所示。
    区域 说明
    任务描述 填写任务的说明,以便日后追溯。
    任务类型
    • 镜像更新

      用于替换ECS实例的当前镜像,过程中会重启ECS实例。请继续指定以下信息:

      • 用于更新的镜像:仅支持选择自定义镜像,会同步更新当前生效的伸缩配置中的镜像。
      • 用于回滚的镜像:回滚任务时使用的镜像,支持选择公共镜像、自定义镜像、共享镜像和镜像市场镜像。
        说明 创建回滚任务时默认选择该镜像,但支持选择其它镜像。
    • 脚本执行

      通过云助手执行脚本,过程中ECS实例不会停机,更多说明请参见云助手概述。请继续指定以下信息:

      • 脚本类型,支持以下三种脚本:
        • Linux Shell:例如显示主机名命令hostname、回显hello命令echo hello
        • Windows Bat:例如显示目录文件命令dir c:\
        • Windows PowerShell:例如显示服务命令Get-Services
      • 用于执行的脚本:为ECS实例执行的脚本。
      • 用于回滚的脚本:回滚任务时使用的脚本。
        说明 创建回滚任务时默认填入该脚本,但支持编辑自动输入的脚本。
    执行批次 完成本次任务批次数。伸缩组执行任务时,将ECS实例分成几个批次,每批次至少包括一台ECS实例。例如伸缩组内有10台服务中的ECS实例,执行批次为2,则5台ECS实例为一批,分2批执行任务。
    暂停策略
    • 不暂停:一次性执行完成。
    • 第一批暂停:第一批次执行完成后,伸缩组暂停执行任务,您需要手动继续。第一批次之后的批次不会暂停。
    • 每批暂停:每批次执行完成后,伸缩组暂停执行任务,您每次都需要手动继续。
  8. 阅读滚动升级任务的影响,如无疑问,单击确定
    确定后滚动升级任务会自动执行。
  9. 根据滚动升级任务的执行情况,完成相关操作。
    • 如果暂停策略为第一批暂停每批暂停,会进入一次或多次等待中(批次暂停)状态。此时请确认已执行完成的ECS实例是否符合预期。如无疑问,请按以下步骤操作:
      1. 操作区域,单击继续
      2. 继续执行任务对话框,单击确定
    • 滚动升级任务执行失败时会进入等待中(失败暂停)状态,如果需要完成本次滚动升级任务,请按以下步骤操作:
      1. 操作区域,单击详情
      2. 找到执行状态为失败的ECS实例,在操作区域,单击重试跳过取消
        • 单击重试,再次尝试为该实例执行。
        • 单击跳过,为下一台ECS实例执行操作,且当前ECS实例的执行状态显示为成功
          注意 您需要手动将跳过执行的ECS实例移出备用中状态。
        • 单击取消,为下一台ECS实例执行操作,但当前ECS实例的执行状态显示为失败
    • 如果需要取消本次滚动升级任务,在操作区域,单击取消
      注意 取消任务后,您需要手动恢复被暂停的伸缩组流程,并将当前批次执行中和失败的ECS实例移出备用中状态。
    • 如果需要回滚本次滚动升级任务,请参见回滚已滚动升级的任务

回滚已滚动升级的任务

您可以回滚等待中的(包括批次暂停和失败暂停)或者最近一次执行的滚动升级任务,以便在出现异常时恢复ECS实例配置。不支持对回滚任务进行回滚操作。
说明 如果滚动升级任务处于等待中状态,执行回滚任务前会取消滚动升级任务,然后回滚已经完成任务的实例。
  1. 在执行任务列表页面,找到待操作的任务,在操作区域,单击回滚
  2. 创建回滚任务页面,完成回滚任务的配置。
    需要配置的信息如下表所示。
    区域 说明
    任务描述 填写回滚任务的说明,以便日后追溯。
    任务类型 和源任务的任务类型一致,不可编辑。
    • 如果为镜像更新,自动选择您创建滚动升级任务时输入的回滚用镜像,支持重新选择其它镜像。
    • 如果为脚本执行,自动输入您创建滚动升级任务时输入的回滚用脚本,支持编辑自动输入的脚本。
    执行批次 完成本次任务批次数。伸缩组执行任务时,将ECS实例分成几个批次,每批次至少包括一台ECS实例。例如,伸缩组内有10台服务中的ECS实例,执行批次为2,则5台ECS实例为一批,分2批执行任务。
    暂停策略
    • 不暂停:一次性执行完成。
    • 第一批暂停:第一批次执行完成后,伸缩组暂停执行任务,您需要手动继续。
    • 每批暂停:每批次执行完成后,伸缩组暂停执行任务,您每次都需要手动继续。
  3. 单击创建任务
  4. 阅读回滚任务的影响,如无疑问,单击确定
    确定后回滚任务会自动执行。

查看滚动升级任务详情

您可以查看滚动升级任务的信息,并单独为某台ECS实例执行重试、跳过等操作。

  1. 在执行任务列表页面,找到待操作的任务,在操作区域,单击详情
  2. 查看任务基本信息。
    任务基本信息包括任务状态、任务类型等信息。如果任务类型为脚本执行,单击脚本详情可以查看脚本的内容。
  3. 查看执行实例列表。
    执行实例列表显示处于各个执行状态的实例。
    • 如果一台ECS实例尚未执行完成,支持跳过或取消。
    • 如果一台ECS实例执行失败,在操作区域,支持重试、跳过或取消。
    • 如果任务类型为脚本执行,在结果输出区域,单击查看可以查看执行脚本的输出结果。
    重试、跳过和取消的区别如下:
    • 单击重试,再次尝试为该实例执行。
    • 单击跳过,为下一台ECS实例执行操作,且当前ECS实例的执行状态显示为成功
      注意 您需要手动将跳过执行的ECS实例移出备用中状态。
    • 单击取消,为下一台ECS实例执行操作,但当前ECS实例的执行状态显示为失败

滚动升级任务示例

假设一个伸缩组现状如下:
  • 生效的伸缩配置中使用公共镜像CentOS 6.4 64位。
  • 伸缩组中存在10台ECS实例,全部基于生效的伸缩配置扩容,并且处于服务中状态。

本示例演示如何通过滚动升级将伸缩组内ECS实例的镜像更新为阿里云原生的Aliyun Linux 2镜像,并在更新镜像后安装Apache。

  1. 创建一台ECS实例,镜像选择Aliyun Linux 2.1903 LTS 64位。
    本示例中ECS实例名称为Instance-ForCustomImage,请按需要完成其它配置,具体操作请参见使用向导创建实例
  2. 为Instance-ForCustomImage创建自定义镜像。
    本示例中自定义镜像名称为Image-AliyunLinux,请按需要完成其它配置,具体操作请参见使用实例创建自定义镜像
  3. 可选:选择一台伸缩组内的ECS创建自定义镜像,用于回滚。如果不需要保存当前实例中的配置或数据,跳过本步骤。
    本示例中自定义镜像名称为Image-CentOSBck,请按需要完成其它配置。
  4. 创建并执行一个镜像更新任务。
    任务信息如下表所示。
    区域 示例
    任务描述 将镜像从CentOS 6.4 64位批量更新为Aliyun Linux 2.1903 LTS 64位。
    任务类型 镜像更新
    用于更新的镜像 Image-AliyunLinux
    用于回滚的镜像 Image-CentOSBck
    执行批次 2
    暂停策略 不暂停
    镜像更新任务执行完成后,伸缩组内10台ECS实例的镜像更新为Aliyun Linux 2.1903 LTS 64位。
  5. 创建并执行一个执行脚本任务。
    任务信息如下表所示。
    区域 示例
    任务描述 安装Apache服务并查看Apache服务状态。
    任务类型 执行脚本
    用于执行的脚本
    # 安装Apache服务。
    yum install -y httpd
    # 启动Apache服务。
    systemctl start httpd
    # 设置Apache服务开机启动。
    systemctl enable httpd
    # 查看Apache服务状态。
    systemctl status httpd
    用于回滚的脚本
    # 查看Apache服务状态。
    systemctl status httpd
    执行批次 2
    暂停策略 不暂停
    执行脚本任务完成后,伸缩组内的10台ECS实例安装了Apache服务,且Apache服务状态为active。查看Apache服务状态