全部产品
云市场

如何通过灰度发布升级单个应用

更新时间:2019-09-12 09:33:27

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

示例场景说明

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

灰度发布流程

单应用灰度发布流程

  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 流控

    流量控制

  3. 流量控制对话框中设置流控参数,勾选启用下面的配置来控制进入当前应用分组的 HTTP 请求流量,然后单击保存

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

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

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

    入口流量规则-HTTP

    流量控制参数说明:

    • 条件模式:选择满足下列所有条件
    • 条件列表:包含 Cookie、Header 和 Parameter 3 种方式,本文以 Parameter 为例说明。
      • 参数类型:选择 Parameter
      • 参数:输入 version
      • 条件:选择 =
      • :输入 1

    注意:参数设置完成后,需要勾选启用下面的配置来控制进入当前应用分组的 HTTP 请求流量,流控规则才会生效。

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

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

  1. 更换实例到灰度分组。

    1. 返回实例部署信息页面,在默认分组中选定实例的操作列单击更换分组

    2. 更换分组对话框中单击目标分组右侧的下拉框,在下拉列表中选择灰度分组,然后单击确定

      实例更换分组后,将会默认使用当前部署的版本 V1。

  2. 部署新版本

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

    1. 在应用详情页右上角单击部署应用

    2. 部署应用对话框中设置部署参数,然后单击部署

      说明:本文的示例应用 V1 版本为 WAR 包部署,所以再次部署时,必须通过 WAR 包部署。如果您的应用此前使用了 JAR 包部署,选择 JAR 包相关选项即可。

      部署应用

      • 应用部署方式:选择 WAR 包部署
      • 文件上传方式:选择上传 WAR 包,单击选择文件,在弹框中选择应用本地的 V2 版本 WAR 包。
      • 版本:填写 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. 返回实例部署信息页面,在灰度分组区域右上角单击删除分组