灰度发布(又名金丝雀发布),在原有部署版本可用的情况下,同时部署新版本应用作为“金丝雀”(金丝雀对瓦斯极敏感,矿井工人携带金丝雀,以便及时应对危险),测试新版本的性能和表现,在保证整体系统稳定的情况下,能尽早发现和修复问题。

背景信息

分批发布是批次进行应用部署,每次仅对应用的一部分实例进行升级。分批发布过程中如果出现故障,则终止回退,待问题修复后重新发布。

SAE 中当应用进行分批发布时,应用内的实例数平均分配到每个批次进行部署。如果无法平均分配则靠前的批次分配到的示例数少,靠后的批次分配到的示例数少。

当应用进行灰度发布时,为了保证应用稳定性,灰度发布的应用实例数不能超过应用实例总数的50%,剩余的应用实例按照指定的批次分批发布。

场景示意

某应用包含 10 个应用实例,每个应用实例的部署版本为 Ver.1 版本,现需将每个应用实例升级为Ver.2 版本。
  • 灰度发布:假设选择 2 台应用实例进行灰度发布,剩下的 8 个应用实例分 3 批进行分批发布,根据分批发布策略,发布流程如下图所示:
    灰度发布流程
  • 分批发布:假设将所有应用实例分 3 批进行部署,根据分批发布策略,该发布流程如下图所示:
    分批发布流程

灰度发布

  1. 登录 SAE 控制台
  2. 在左侧导航栏中选择应用列表,在应用列表页面中单击需要进行灰度发布的应用名称。
  3. 在应用详情页右上角单击部署应用
  4. 配置部署参数。
    说明 部署方式由应用首次次部署方式决定,请根据所需的部署方式进行部署参数设置。
    • War 包部署:重新上传 War 包或者输入新的部署 War 包的地址,并完成相关环境和参数设置。
      应用部署_配置war包
    • Jar 包部署:重新上传 Jar 包或者输入新部署 Jar 包的地址,并完成相关环境和参数设置。
      配置jar包
    • 镜像:重新选择镜像。
      配置镜像
  5. 发布策略设置区域内配置灰度发布策略。
    图 1. 灰度发布策略设置

    灰度发策略
    图 2. 分批发布策略设置

    分批发布策略
    配置 说明
    发布策略 选择灰度发布
    灰度数量 设置需要首先进行灰度发布的应用实例数量。
    灰度后剩余批次 灰度发布后,剩余的应用实例按照设定的批次完成发布。
    批次内部署间隔 每一批内,如果应用实例数大于 1,应用实例间的部署时间间隔。
    最小存活实例数 每次滚动升级最小存活的实例数。
  6. 根据实际配置需求,重新配置启动命令环境变量Hosts 绑定设置健康检查日志收集等高级设置选项。
  7. 单击确认完成灰度发布设置。

分批发布

参见灰度发布的过程,设置步骤 5中的配置策略分批发布,并依据步骤 5中的参数配置表进行设置,单击确认进行分批发布。

结果验证

在应用变更记录中查看应用变更详情,查看灰度和分批发布的状态,待所有批次都执行成功则说明应用更新成功。成功后您可以在应用详情页查看实例部署信息,当实例的版本已变为 Ver.2 并且所有实例运行状态均为 Running 时,则说明发布成功。

回滚应用

采用灰度发布或者分批发布方式进行应用升级时,如果应用实例中存在未完成升级的实例,则当前应用升级状态处于进行中

在实时跟踪升级时,如果首批应用实例升级突发异常停止响应,为了保证业务不受影响,请在变更详情页面单击立即回滚,将已升级的实例回退至升级前版本并将配置还原为升级前原有配置。

在应用变更过程可能出现如遇到部署包不可用、健康检查失败等变更流程异常情况,导致应用升级失败,SAE 将当前应用停止并进行回退。

SAE 应用升级耗时最大为 30 分,超出后系统上报超时异常并暂停变更流程,请在变更详情页面手动终止发布流程并回退。