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

限制说明

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

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

示例场景说明

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

排查流程

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

edas-AppDeploy-canaryRelease_multiApp-stage1.pngedas-AppDeploy-canaryRelease_multiApp-stage2.png

操作步骤

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

  1. 为应用D创建用于承接流量控制流量的实例分组。详情请参见管理部署在 ECS 集群中的应用的实例分组
  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的灰度分组实例。