在应用的迭代过程中,可以通过全链路流控对新版本进行小规模灰度验证,在验证通过后,再将应用全量升级到新版本。

场景概述

Web应用A,包含2个应用实例,通过WAR包在ECS集群中部署了V1版本。V2版本开发完成后,需要先在一个实例进行验证,验证通过后,再将另一个实例从V1版本升级到V2,从而完成应用A的升级。

灰度发布流程

edas-AppDeploy-canary-singleApp.png
  1. 创建灰度分组。
  2. 在灰度分组中配置并启用流量控制规则。
  3. 在灰度分组中部署新版本(V2),并验证指定流量是否分发到灰度分组的实例中。
  4. 通过分发到灰度分组中的流量验证新版本。
  5. 验证通过后,将默认分组中的应用版本升级为V2。

    如果验证发现问题,停用灰度分组的流控规则,将灰度分组中的实例更换回默认分组。待V2版本更新完成后,再次启用灰度分组的流控规则,并在灰度分组中进行部署、验证。

  6. 关闭灰度分组的流量控制规则,删除灰度分组。

步骤一:创建灰度分组

在ECS集群中,不同应用版本是基于实例分组部署的,而且流控规则也是基于实例分组配置的,所以需要先创建灰度分组。

  1. 登录EDAS控制台
  2. 在左侧导航栏,单击应用管理 > 应用列表,在顶部菜单栏选择地域,并在页面上方选择微服务空间,然后在应用列表页面单击具体的应用名称。
  3. 在应用详情页面单击实例部署信息页签,然后在页面右上方单击创建新分组
  4. 创建分组对话框将分组名设置为灰度分组,然后单击创建
    分组成功创建后,页面上方会出现创建分组成功的提示。

步骤二:配置并启用流量控制规则

流量控制包含HSF和HTTP两种类型。

  • 如果设置HTTP流控,需要在应用基本信息页面开启流量管理
  • 如果设置HSF流控,不需要开启流量管理,但需要保证应用的容器EDAS Container为3.5.3及以上版本。

下文以HTTP流控为例进行说明。

  1. 基本信息页签应用设置区域流量管理右侧单击开启
  2. 实例部署信息页签灰度分组区域右上角单击流量控制,在下拉列表中选择HTTP流控edas-AppDeploy-canary-singleApp-trafficControl.png
  3. 流量控制对话框中设置流控参数,选中启用下面的配置来控制进入当前应用分组的HTTP请求流量,然后单击保存

    目前支持按内容灰度按比例灰度两种方式设置入口流量灰度规则。

    • 按内容灰度:将符合设置的灰度规则的流量分发到灰度实例上。
    • 按比例灰度:将流量按比例随机分发到灰度实例上。

    按比例灰度操作简单,本文介绍如何按内容设置灰度流控规则。

    流量控制

    流量控制参数说明:

    • 条件模式:选择满足下列所有条件
    • 条件列表:包含Cookie、Header和Parameter 3种方式,本文以Parameter为例说明。
      • 参数类型:选择Parameter
      • 参数:输入version
      • 条件:选择=
      • :输入1
    重要 参数设置完成后,需要选中启用下面的配置来控制进入当前应用分组的HTTP请求流量,流控规则才会生效。

    灰度规则生效后,如果灰度分组没有实例来承接灰度流量,会自动由默认分组处理。

步骤三:部署新版本并验证流量控制

  1. 更换实例到灰度分组。
    1. 返回实例部署信息页面,在默认分组中选定实例的操作列单击更换分组
    2. 更换分组对话框中单击目标分组右侧的下拉列表,在下拉列表中选择灰度分组,然后单击确定
    实例更换分组后,将会默认使用当前部署的版本V1。
  2. 部署新版本。

    您可以通过控制台和工具等多种方式部署,本示例以控制台部署为例。如果您想使用其他部署方式,请参见应用创建和部署概述(ECS)

    1. 在应用详情页右上角单击部署应用
    2. 部署模式选择页面常规发布(单批/多批)模式右侧单击开始部署
      说明 本文的示例应用V1版本为WAR包部署,所以再次部署时,必须通过WAR包部署。如果您的应用此前使用了JAR包部署,选择JAR包相关选项即可。
    3. 在部署应用中设置部署参数。应用部署
      • 应用部署方式:选择JAR包部署
      • 文件上传方式:选择上传JAR包,单击选择文件,在弹框中选择应用本地的V2版本JAR包。
      • 版本:填写V2
      • 分组:选择您所设置的灰度分组。
      • 批次:选择1批
      • 分批方式:选择自动

      部署完成后,控制台会自动跳转到变更详情页面。您可以查看此次部署的进度。待执行状态显示为执行成功后,说明部署成功。如果部署失败,变更详情中会有相关的日志信息,您可以根据日志排查。

      返回应用详情页面,单击实例部署信息页签,可以看到灰度分组中的部署包版本更新为V2,且运行状态运行正常

  3. 验证流量控制。
    1. 在浏览器的地址栏中输入http://<默认分组中实例的 IP>:<服务端口>并回车。
      进入应用V1版本的Web页面。
    2. 在浏览器的地址栏中输入http://<默认分组中实例的 IP>:<服务端口>?version=1并回车。
      进入应用V2版本的Web页面。
    至此说明流量控制规则生效,制定的流量会被分发到灰度分组的实例中。

步骤四:验证新版本

您可以根据实际业务验证新版本。

如果验证发现问题,停用灰度分组的流控规则,将灰度分组中的实例更换回默认分组。待V2版本更新完成后,再次启用灰度分组的流控规则,并在灰度分组中进行部署、验证。

步骤五:升级默认分组的应用版本

在新版本V2验证通过后,将默认分组的应用升级到V2版本。

升级应用即再一次部署应用,具体操作,请参见步骤三:部署新版本并验证流量控制

步骤六:禁用流控规则并释放灰度分组

在两个分组下的两个实例都升级到V2版本后,需要禁用流控规则,并释放灰度分组。

  1. 实例部署信息页面灰度分组区域右上角单击流量控制,在下拉列表中单击HTTP流控
  2. 流量控制对话框中取消勾选启用下面的配置来控制进入当前应用分组的HTTP请求流量,然后单击保存
  3. 返回实例部署信息页面,在灰度分组中实例的操作列单击更换分组
  4. 更换分组对话框中单击目标分组右侧的下拉列表,在下拉列表中选择默认分组,然后单击确定
  5. 返回实例部署信息页面,在灰度分组区域右上角单击删除分组