全部产品
Search
文档中心

弹性伸缩:滚动升级

更新时间:Dec 28, 2023

滚动升级是指通过任务形式批量更新ECS实例或ECI实例配置。通过弹性伸缩的滚动升级功能,您可以为伸缩组内处于服务中状态的ECS实例或ECI实例批量更新镜像、执行脚本或者安装OOS软件包。

前提条件

  • 如果您需要为伸缩组内ECS实例或ECI实例更新镜像,已准备更新用的镜像。

  • 如果您需要为伸缩组内ECS实例或ECI实例执行脚本,已准备执行用的脚本。

  • 如果您需要为伸缩组内ECS实例或ECI实例安装OOS软件包,已提前在OOS中创建软件包,具体操作,请参见批量管理我的软件

滚动升级支持的任务类型

任务类型

说明

镜像更新

适合为伸缩组内处于服务中状态的ECS实例或ECI实例统一更新操作系统。

更新镜像时,对组内实例配置信息来源的影响如下所示:

  • 如果伸缩组的组内实例配置信息来源为伸缩配置,会自动更新当前生效的伸缩配置中的镜像,但不会更新其他失效的伸缩配置中的镜像。

  • 如果伸缩组的组内实例配置信息来源为启动模板,不会更新启动模板的镜像,您需要自行更新启动模板中的镜像。

说明

根据实际场景需要,您可以选择使用滚动升级方式还是自动更新伸缩配置中镜像的方式更新镜像。更多信息,请参见与自动更新伸缩配置中镜像的区别

脚本执行

适合执行单项或多项运维操作。例如:

  • 查看和更新部分系统配置,例如查看磁盘使用空间。

  • 安装常用软件,例如安装Apache。

  • 部署业务代码。

安装OOS软件包

适合批量安装和卸载软件。

与自动更新伸缩配置中镜像的区别

  • 自动更新伸缩配置中的镜像:适用于频繁发布应用的场景,并且仅适用于ECS类型的伸缩组,您只需在弹性伸缩控制台创建更新任务,执行任务时系统会自动为原ECS实例创建自定义镜像,可以实现伸缩组中新创建的ECS实例都具有新版本镜像。具体操作,请参见自动更新伸缩配置中的镜像

  • 滚动升级:适用于批量更新ECS实例或ECI实例配置的应用场景,并且仅适用于所在地域支持系统运维管理 OOS(CloudOps Orchestration Service)的伸缩组,可以实现将伸缩组内处于服务中状态的已有的ECS实例或ECI实例镜像逐步升级到新版本。

创建并执行滚动升级任务

创建并执行滚动升级任务前,您需要注意以下事项:

  • 仅适用于所在地域支持系统运维管理 OOS(CloudOps Orchestration Service)的伸缩组,否则伸缩组无法使用滚动升级功能。

  • 伸缩组中不允许存在执行中的伸缩活动。

  • 同一时间仅允许执行一个滚动升级任务。

  1. 登录弹性伸缩控制台
  2. 在左侧导航栏中,单击伸缩组管理
  3. 在顶部菜单栏处,选择地域。
  4. 找到待操作的伸缩组,选择任一种方式打开伸缩组详情页面。
    • 伸缩组名称/ID列,单击伸缩组ID。
    • 操作列,单击查看详情
  5. 在页面上方,单击滚动升级页签。
  6. 单击创建执行任务

  7. 创建执行任务对话框,完成滚动升级任务的配置,然后单击创建任务

    需要配置的信息如下表所示。

    配置项

    说明

    任务描述

    填写任务的说明,以便日后追溯。

    任务类型

    • 更新镜像:用于替换ECS实例或ECI实例的当前镜像,支持选择公共镜像、自定义镜像、共享镜像和镜像市场中的镜像。替换过程中会重启ECS实例或ECI实例。请继续指定以下信息:

      • 用于更新的镜像:在执行更新任务时使用的镜像。

      • 用于回滚的镜像:在执行回滚任务时默认使用的镜像。

        说明

        创建回滚任务时默认选择该镜像,但支持选择其他镜像。

    • 脚本执行:通过云助手执行脚本,执行过程中ECS实例或ECI实例不会停机。请继续指定以下信息:

      • 脚本类型,支持以下三种脚本:

        • Linux Shell:例如显示主机名命令hostname、回显hello命令echo hello

        • Windows Bat:例如显示目录文件命令dir c:\

        • Windows PowerShell:例如显示服务命令Get-Services

      • 用于执行的脚本:在执行更新任务时使用的脚本。

      • 用于回滚的脚本:在执行回滚任务时默认使用的脚本。

        说明

        创建回滚任务时默认填入该脚本,但支持编辑自动输入的脚本。

    • 安装OOS软件包:选择OOS软件包名称和版本。

    执行批次

    完成本次任务批次数。伸缩组执行任务时,将ECS实例或ECI实例分成几个批次,每批次至少包括一台ECS实例或ECI实例。例如,伸缩组内有10台服务中的ECS实例,执行批次为2,则5台ECS实例为一批,分2批执行任务。

    暂停策略

    • 不暂停:一次性执行完成。

    • 第一批暂停:第一批次执行完成后,伸缩组暂停执行任务,您需要手动继续。第一批次之后的批次不会暂停。

    • 每批暂停:每批次执行完成后,伸缩组暂停执行任务,您每次都需要手动继续。

    高级选项

    可选项。如果任务类型选择为更新镜像方式,您可以设置最大错误次数,即滚动升级任务在停止前的最大错误次数。不填写则默认为0,表示存在一个错误时整个滚动升级任务就会失败。

  8. 阅读滚动升级任务的影响,如无疑问,单击确定

    确定后滚动升级任务会自动执行。开始执行后,对伸缩组和ECS实例或ECI实例有以下影响:

    • 伸缩组暂停扩缩容等流程,在滚动升级过程中不响应伸缩活动,并在执行完毕后恢复扩缩容等流程。如果在执行前扩缩容流程已被手动暂停,则保持暂停,保证执行前后的伸缩组内流程状态一致。

    • 分批将ECS实例或ECI实例转为备用中状态,并在执行完毕后恢复服务中状态。

      重要

      如果伸缩组关联了负载均衡实例,ECS实例或ECI实例处于备用中状态时负载均衡权重会被置零,不接收业务流量。

  9. 根据滚动升级任务的执行情况,完成相关操作。

    任务

    描述

    操作步骤

    继续执行滚动升级任务

    如果暂停策略为第一批暂停每批暂停,会进入一次或多次等待中(批次暂停)状态。如果确认已执行完成的ECS实例或ECI实例符合预期时,请继续执行本次滚动升级任务。

    1. 操作区域,单击继续

    2. 继续执行任务对话框,单击确定

    完成滚动升级任务

    如果滚动升级任务执行失败时,会进入等待中(失败暂停)状态,如果需要完成本次滚动升级任务时,请按照需要选择合适的升级操作。

    1. 操作区域,单击详情

    2. 找到执行状态为失败的ECS实例或ECI实例,在操作区域,单击重试跳过取消

      • 单击重试,再次尝试为该ECS实例或ECI实例执行滚动升级操作。

      • 单击跳过,为下一台ECS实例或ECI实例执行滚动升级操作,且当前ECS实例或ECI实例的执行状态显示为成功

        重要

        您需要手动将跳过执行的ECS实例或ECI实例移出备用中状态。

      • 单击取消,为下一台ECS实例或ECI实例执行滚动升级操作,但当前ECS实例或ECI实例的执行状态显示为失败

    取消滚动升级任务

    如果本次滚动升级任务不满足业务需求,您可以取消本次滚动升级任务。

    操作区域,选择Dingtalk_20231212165532.jpg > 取消

    重要

    取消任务后,您需要手动恢复被暂停的伸缩组流程,并将当前批次任务执行中和执行失败的ECS实例或ECI实例移出备用中状态。

    回滚滚动升级任务

    如果需要回滚本次滚动升级任务,您可以回滚等待中的(包括批次暂停和失败暂停)或者最近一次执行的滚动升级任务。

    具体操作,请参见回滚已滚动升级的任务

回滚已滚动升级的任务

您可以回滚等待中的(包括批次暂停和失败暂停)或者最近一次执行的滚动升级任务,以便在出现异常时恢复ECS实例或ECI实例配置。如果滚动升级任务处于等待中状态,执行回滚任务前会自动取消滚动升级任务,然后回滚已经完成更新的实例。

重要

回滚只支持对滚动升级任务进行回滚操作,不支持对回滚任务进行回滚操作。

  1. 在执行任务列表页面,找到待操作的任务,在操作区域,单击回滚

  2. 创建回滚任务对话框,完成回滚任务的配置。

    需要配置的信息如下表所示。

    区域

    说明

    任务描述

    填写回滚任务的说明,以便日后追溯。

    任务类型

    和原任务的任务类型一致,不可编辑。

    • 如果为镜像更新,自动选择您创建滚动升级任务时输入的回滚用镜像,支持重新选择其他镜像。

    • 如果为脚本执行,自动输入您创建滚动升级任务时输入的回滚用脚本,支持编辑自动输入的脚本。

    • 如果为安装OOS软件包,自动选择您创建滚动升级任务时选择OOS软件包版本,支持重新选择版本,但不支持选择其他软件包。

    执行批次

    完成本次任务批次数。伸缩组执行任务时,将ECS实例或ECI实例分成几个批次,每批次至少包括一台ECS实例或ECI实例。例如,伸缩组内有10台服务中的ECS实例,执行批次为2,则5台ECS实例为一批,分2批执行任务。

    暂停策略

    • 不暂停:一次性执行完成。

    • 第一批暂停:第一批次执行完成后,伸缩组暂停执行任务,您需要手动继续。

    • 每批暂停:每批次执行完成后,伸缩组暂停执行任务,您每次都需要手动继续。

    高级选项

    可选项。如果任务类型选择为更新镜像方式,您可以设置最大错误次数,即滚动升级任务在停止前的最大错误次数。

  3. 单击创建任务

  4. 阅读回滚任务的影响,如无疑问,单击确定

    确定后回滚任务会自动执行。

查看滚动升级任务详情

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

  1. 在执行任务列表页面,找到待操作的任务,在操作区域,单击详情

  2. 查看任务基本信息。

    任务基本信息包括任务状态、任务类型等信息。如果任务类型为脚本执行,单击脚本详情可以查看脚本的内容。

  3. 查看执行实例列表。

    执行实例列表显示处于各个执行状态的实例。

    • 如果一台ECS实例或ECI实例尚未执行完成,支持跳过或取消。

    • 如果一台ECS实例或ECI实例执行失败,在操作区域,支持重试、跳过或取消。

    • 如果任务类型为脚本执行,在结果输出区域,单击查看可以查看执行脚本的输出结果。

    重试、跳过和取消的区别如下:

    • 单击重试,再次尝试为该ECS实例或ECI实例执行滚动升级操作。

    • 单击跳过,为下一台ECS实例或ECI实例执行滚动升级操作,且当前ECS实例或ECI实例的执行状态显示为成功

      重要

      您需要手动将跳过执行的ECS实例或ECI实例移出备用中状态。

    • 单击取消,为下一台ECS实例或ECI实例执行滚动升级操作,但当前ECS实例或ECI实例的执行状态显示为失败

配置滚动升级的监控告警

您可以根据不同伸缩组的滚动升级需求,配置独立的滚动升级任务的监控告警,通过查看报警详情及时处理滚动升级问题。

  1. 登录云监控控制台

  2. 在左侧导航栏,选择事件中心 > 系统事件

  3. 系统事件页面,设置筛选条件后单击搜索,查询指定伸缩组的滚动升级失败事件。

    例如,筛选条件选择事件级别为严重,输入如下关键词:

    (ACS-ESS-RollingUpdateByConfigureOOSPackage or ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup or ACS-ESS-RollingUpdateByRunCommandInScalingGroup or ACS-ESS-RollingUpdateByUpdateContainerGroup) and ${your_scaling_group_id}
    说明

    其中{your_scaling_group_id}替换为您实际的伸缩组ID(如asg-bp180y8dj5eku2j4****)。

    资源告警.png

  4. 单击另存为告警

  5. 创建/修改事件报警面板,配置以下参数信息,单击确定

    gundong.png

  6. 在左侧导航栏,选择报警服务 > 报警历史

    在报警历史列表页,查看具体的报警详情。2023-12-12_18-34-22.png