全部产品
Search
文档中心

Serverless 应用引擎:灰度发布应用

更新时间:Sep 03, 2024

如果您的应用有多个应用实例且需要升级,那么您可以按需通过灰度或分批发布方式升级应用实例版本。本文介绍什么是灰度发布,以及如何为应用配置灰度发布与回滚功能。

前提条件

应用实例数大于1。

背景信息

灰度发布又名金丝雀发布,在原有部署版本可用的情况下,同时部署新版本应用作为金丝雀,测试新版本的性能,在保证整体系统稳定的情况下,帮助您尽早发现问题和修复问题。

应用进行灰度发布时,为了保证应用稳定性,您可以自定义实例数,但是灰度发布的实例数不能超过应用实例总数的50%,剩余的应用实例按照指定的批次分批发布。第一批应用实例发布后,您可以手动控制来选择是否继续下一批。同时,您可以利用这段时间间隙,收集业务侧的反馈并决定是否继续发布。

灰度发布有以下两种类型。
  • 按照流量比例灰度:例如,配置20%流量进入新版本,80%流量进入老版本。
  • 按照请求内容灰度:例如,请求中带着特定用户ID的流量进入新版本,其他流量进入老版本。

与分批发布相比,灰度发布控制流量粒度更细。关于分批发布的更多信息,请参见分批发布应用

场景示例

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

操作步骤

警告

重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。

  1. 登录SAE控制台

  2. 在左侧导航栏,单击应用列表,在顶部菜单栏选择地域,然后单击具体应用名称。

  3. 基本信息页面右上角,单击部署应用

  4. 配置部署参数。

    说明

    部署方式由应用首次部署方式决定,请根据所需的部署方式设置参数。

    • WAR包部署:重新上传WAR包或者输入新部署WAR包的地址,并完成相关环境和参数设置。

    • JAR包部署:重新上传JAR包或者输入新部署JAR包的地址,并完成相关环境和参数设置。

    • ZIP包部署:重新上传ZIP包或者输入新部署ZIP包的地址,并完成相关环境和参数设置。

    • 镜像:在配置镜像区域,单击修改镜像,在修改镜像面板,重新选择镜像仓库或镜像版本。

  5. 发布策略设置区域,配置灰度发布。
    灰度发策略
    配置项 说明
    发布策略选择灰度发布
    灰度数量设置首先需要进行灰度发布的应用实例数量。
    灰度后剩余批次灰度发布后,剩余的应用实例按照设定的批次完成发布。
    分批间处理方式当剩余批次大于1时需要配置。选择自动手动
    分批间隔时间分批间处理方式选择自动时需要配置。单位为分钟,取值范围为[0,30]。
    批次内部署间隔每一批内,如果应用实例数大于1,应用实例间的部署时间间隔。单位为秒。
    最小存活实例数

    每次滚动升级最小存活的实例数。

    • 按个数:输入最小存活实例数。您也可以选中使用系统推荐值,即取现有实例数的25%。

    • 按比例:输入百分比。

    说明
    • 每次滚动部署最小存活的实例数建议≥1,保证业务不中断。如果设置为0,应用在升级过程中将会中断业务。

    • 以百分比计算时需向上取整。例如设置为25%,如果当前为5个实例,则最小存活实例数为2。

    启用微服务灰度规则您为Spring Cloud或Dubbo应用创建的灰度规则。
  6. 可选:按需设置以下高级选项。

    Java

    高级设置

    参考文档

    启动命令设置

    设置启动命令

    Java Tomcat设置

    设置Java Tomcat参数

    说明

    只有应用部署方式WAR包部署时才能设置Tomcat。

    环境变量设置

    设置环境变量

    服务注册发现

    Hosts绑定设置

    设置Hosts绑定

    应用健康检查设置

    设置健康检查

    应用出/入公网访问设置

    应用生命周期管理设置

    设置应用生命周期管理

    日志收集服务

    持久化存储

    设置NAS存储

    配置管理

    注入配置信息

    微服务无损上下线

    说明

    当您选择WAR包部署JAR包部署时,如果应用运行环境选择EDAS-Container-XXX,不支持配置微服务无损上下线。

    PHP

    高级设置

    参考文档

    php.ini配置文件修改

    设置PHP应用配置文件

    启动命令设置

    设置启动命令

    环境变量设置

    设置环境变量

    服务注册发现

    Hosts绑定设置

    设置Hosts绑定

    应用健康检查设置

    设置健康检查

    应用出/入公网访问设置

    应用生命周期管理设置

    设置应用生命周期管理

    日志收集服务

    持久化存储

    设置NAS存储

    配置管理

    注入配置信息

    Python

    多语言

  7. 配置完成后,单击确认
  8. 通过以下方式验证配置是否生效。
    • 方式一:在应用的变更记录页面,查看应用变更详情与发布状态。如果所有批次都执行成功,则说明应用更新成功。
    • 方式二:在应用基本信息页面的实例部署信息页签,查看实例的运行状态。如果执行状态显示为Running,且实例的版本已变为Ver.2,表示应用部署成功。

应用回滚

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

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

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

SAE上进行应用升级耗时约为30分钟,超出该时间后SAE将上报超时异常并暂停变更流程,请在变更详情页面,手动终止发布流程并回滚应用。

更多信息

SAE部署应用完成后,您可以对应用进行如下操作。

操作

相关文档

更新、扩缩容、启停、删除应用等生命周期管理的操作

管理应用生命周期

自动弹性伸缩、CLB绑定和批量启停等提升应用性能的操作

日志管理、监控管理、应用事件查看和变更记录查看等聚焦应用运行状态的操作