如需升级部署在ECS集群中的Spring Cloud或Dubbo微服务应用,为确保升级操作的安全性,可以使用金丝雀发布(即灰度发布)进行小规模验证,验证通过后再全量升级。本文介绍如何在EDAS控制台灰度发布ECS集群中的应用。
前提条件
请确保应用中至少包含两个实例分组,且至少两个分组下包含实例,才能进行金丝雀发布。创建实例分组及为分组添加ECS实例的操作步骤,请参见使用控制台管理ECS集群中的应用实例分组。
使用限制
- HSF应用:不支持金丝雀发布。 
- Dubbo应用:无使用限制。 
- Spring Cloud应用:如果应用依赖Deployment.Metadata.Name或Deployment.Metadata.Uid的功能与配置,请勿使用金丝雀发布,否则该原生功能将出现异常。 
- 入口类型应用:如果当前应用为入口类型应用,流量从SLB直接转发到当前应用,那么SLB流量转发策略不会遵循此金丝雀发布策略。 说明- 若您想体验金丝雀灰度发布,可以使用示例Demo:先创建一个客户端应用,再创建多副本的服务端应用,对服务端应用进行灰度发布,并为客户端应用绑定SLB,通过SLB访问服务。 
操作步骤
- 登录EDAS控制台。 
- 在左侧导航栏,单击,在顶部菜单栏选择地域,并在页面上方选择微服务空间,然后在应用列表页面单击具体的应用名称。 
- 在基本信息页面右上角,单击部署应用,在部署模式选择页面金丝雀发布(灰度)区域右上角,单击开始部署。 
- 在灰度发布页面完成相关配置后,单击确定。 - 上传新版本应用的部署包。  
- 在发布策略区域配置发布策略参数。  - 在发布策略配置信息区域会根据配置显示灰度发布流程。 - 配置项 - 描述 - 灰度分组 - 进行灰度发布的实例分组。 - 灰度后每组批次 - 灰度分组发布后,其他分组中的应用实例按照设定的批次完成分批发布。 - 当所选分组为所有分组时,会对应用下每一个分组都进行所选批次数的分批发布,若分组实例数小于所选批次数,则以实例数为准进行分批。 
- 当所选分组为指定分组时,会对应用下指定分组进行所选批次数的分批发布。 
 - 灰度后分批方式 - 灰度后每组批次设置为2批或2批以上时需要设置,包括自动和手动两种方式。 - 自动:根据分批时间间隔自动分批发布。自动分批方式还需要设置分批等待时间。 - 分批等待时间包含不等待和1~5分钟。 
- 手动:手动触发下一个批次的发布。 
 - Java环境 - 该应用的运行环境,根据实际需求选择。 
- 设置灰度规则。目前支持按内容灰度和按比例灰度两种方式的灰度规则。 - 按内容灰度:单击添加策略,在添加内容灰度策略面板,单击+创建流量规则设置入口流量规则。 说明- 您可以创建多个入口流量规则。  - 配置项 - 描述 - 协议类型 - 包含Spring Cloud和Dubbo,按应用实际情况选择。 - Spring Cloud:需要设置path。 
- Dubbo:需要选择服务和方法。 
 - 条件模式 - 包含同时满足下列条件和满足下列任一条件。 - 条件列表 - Spring Cloud和Dubbo协议的条件有所不同。 - Spring Cloud:包含Cookie、Header和Parameter 3种方式,根据实际需求设置。 
- Dubbo:根据应用实际的参数、参数值获取表达式设置。 
 
- 按比例灰度:设置流量比例,流量会按配置的比例被转发到当前的灰度分组。 
 
 - 灰度发布启动后,先在指定的灰度分组中部署新版本应用。您可在变更记录页面查看部署进度和状态。 
- 监控灰度流量是否符合预期。相关内容,请参见监控灰度流量。 
- 灰度流量验证完成后,在变更记录页面单击开始下一批,完成后续分批发布。 - 如果在验证过程中,发现新版本应用有问题,可以在变更记录页面右上角单击终止变更。终止变更后,基本信息页面提示应用处于金丝雀发布状态,并且该变更已经被终止。请首先回滚应用,然后再进行其他操作。 
结果验证
灰度发布后,在基本信息页面查看部署包是否为新部署的应用版本。在实例部署信息页面查看应用实例的运行状态是否为运行正常。