全部产品
云市场

如何使用全链路灰度流量控制排查应用问题

更新时间:2019-09-11 15:30:37

当部署在 EDAS 中的 HSF 微服务应用出现问题时,可以通过全链路灰度流量控制排查链路中具体应用的实际问题,提升排查效率,保证整个微服务应用正常运行。本文将以一个示例介绍如何通过全链路灰度流量控制排查链路中的应用问题。

使用限制

使用灰度发布排查多应用问题有以下使用限制:

  • 集群类型必须是 ECS 集群或 Swarm 集群。
  • 应用运行环境必须是 EDAS Containter 类型,即主要为 HSF 应用。
  • 不支持通过镜像部署的应用。

示例场景说明

一个 HSF 微服务应用链路中包含 A、B、C、D 四个应用,分别部署了 A1、B1、C1、D1 版本。整个链路提供的服务出现了问题。初步定位为 B 和 D 两个应用存在问题,通过全链路灰度流量控制将指定的流量引入到 B、D 应用的灰度分组中进行排查。

排查流程

排查流程分为两个阶段,第一阶段排查应用 D,第二阶段排查应用 B。

排查流程1排查流程2

操作步骤

下文将基于排查流程详细介绍实际的操作步骤。

  1. 为应用 D 创建用于承接灰度流量的实例分组。详情请参见创建灰度分组

  2. 创建灰度环境,指定 Web 应用 A 为入口应用、配置流控规则,添加应用 D 的灰度分组并启用灰度环境。详情请参见创建灰度环境

    在 HTTP 入口上分出测试排查流量比较方便,也是常见做法,而本示例中的 HTTP 入口应用是 A,要排查的应用是 D,灰度流量的识别和处理在不同的应用上,所以需要全链路灰度能力。

    说明:当灰度分组还没有部署任何实例时,无法承接灰度流量,将触发“灰度降级”机制,由默认分组实例承接灰度流量。而当灰度分组添加实例后,“灰度降级”机制解除,灰度流量就会流向这些灰度分组中的实例。

  3. 在应用 D 的灰度分组中添加实例。详情请参见在灰度分组中添加实例

    添加实例过程中请使用默认分组中的版本部署。

  4. 验证流量分布是否基本符合预期,在应用 D 的灰度分组上排查问题。

    1. 在灰度分组上通过流量监控可查看流量的分布,判断灰度规则是否生效,以及流量的分布是否符合预期,详情请参见监控灰度流量

    2. 通过灰度流量,在应用 D 的灰度分组上排查问题。

      • 如果排查过程顺利,准备排查目标应用 B,为应用 B 创建灰度分组。

        应用 D 的灰度分组是在创建灰度环境、配置灰度规则之后创建的。实际上设置激活流控规则和部署应用灰度实例这两个动作的先后次序并没有限制,可以有多种策略,详情请参见灰度发布策略

      • 如果排查过程中发现配置不正确或需要更新版本,停用灰度环境,移除应用 D 的灰度分组中的实例。在新版本准备好或配置修正后,再启用灰度环境,重新部署应用进行验证。

  5. 为应用 B 创建用于承接灰度流量的实例分组。详情请参见创建灰度分组

  6. 在灰度环境中添加应用 B 的灰度分组。详情请参见在灰度环境中添加灰度分组

  7. 在应用 B 的灰度分组中添加实例。详情请参见在灰度分组中添加实例

  8. 查看流量分布是否基本符合预期,在应用 B、D 的灰度分组上排查问题。

    1. 在灰度分组上通过流量监控可查看流量的分布,判断灰度规则是否生效,以及流量的分布是否符合预期,详情请参见监控灰度流量

    2. 通过灰度流量,在应用 B 和 D 的灰度分组上排查问题。

      • 排查过程顺利完成,停用灰度环境,删除应用 B 和 D 的灰度分组,(删除)灰度环境。

      • 排查过程中发现配置不正确或需要更新版本,更新应用或配置,重新部署后再次验证。

        由于应用 D 还在持续排查,因此并未停掉灰度环境,只是移除了应用 B 的灰度分组实例。