流量镜像

流量镜像功能测试 #

一、开发环境流量镜像 #

1.1 场景描述 #

ServiceA 调用ServiceB服务,ServiceB服务新增版本v2,v2开发阶段在开发容器测试服务健壮性;此时v2有公网访问地址http://ws-serviceB-gwxxx.oneitfarm.com,此时通过配置host直接把线上流量镜像到开发容器

image-20210506161321782

1.2 配置示例 #

1.2.1 json配置参考 #
{
  "to_unique_id":"sal2000189a2f457210330eaeomi002t", # 正式环境serviceB服务uniqueID
  "last_update_time": 1600000123123,
  "routers": [
    {
      "match":{
        "prefix":"*"
      },
      "routes": [
        {
          "weight": 100,
          "metadata": {
            "version": "0.2.17"
          }
        }
      ],
      "mirror":[
        {
          "host":"http://123.56.247.84:39210", # 公网接收流量地址
          "percent":100 # 百分百镜像流量
        }
      ]
    }
  ]
}
1.2.2 平台界面配置 #

image-20210513171555640

1.2.3 感应配置日志 #

image-20210513150650822

1.2.4 请求日志 #
  • 左侧为目标服务正常接收流量,每次接收到请求后打印请求数据及头部标识
  • 右侧为镜像服务地址http://123.56.247.84:39210 ,每次接收到请求打印请求数据及头部标识

观察可发现,正常服务请求标识中无x-request-type:shadow标识,镜像流量携带标识,业务侧可根据请求头判断流量属性做相应处理

image-20210513151951976

二、蓝绿发布流量镜像测试 #

2.1 场景描述 #

ServiceA 调用ServiceB服务,ServiceB服务新增版本v2,v2版本上线到正式环境先不接收真实流量;通过镜像配置接收流量查看服务是否正常,有无错误日志,是否符合预期;做正式上线前的最后一步测试。

image-20210506162428598

2.2 配置示例 #

首先在部署v2版本前先配置流量规则全部流量走v1版本,防止v2上线后自动加入负载均衡;并增加镜像配置

2.2.1 json配置参考 #
{
  "to_unique_id":"sal2000189a2f457210330eaeomi002t",
  "last_update_time": 1600000123123,
  "routers": [
    {
      "match":{
        "prefix":"*"
      },
      "routes": [
        {
          "weight": 100,
          "metadata": {
            "version": "0.2.17"
          }
        }
      ],
      "mirror":[
        {
          "metadata": {
            "version": "3.4.5" # 镜像到同一个uniqueID下的3.4.5版本
          },
          "percent":70 # 百分70流量镜像
        }
      ]
    }
  ]
}
2.2.2 平台界面配置 #

image-20210513172235875

2.2.3 感应配置日志 #

sidecar接收到配置后,根据metadata属性匹配到目标服务(同一个目标uniqueID下的)的host地址,如果匹配到多个地址则只会选择首次匹配到的host镜像

image-20210513162842951

2.2.4 请求流量展示 #

目标服务流量走势

image-20210513162705391

2.2.5 流量牵引和流量镜像区别 #
  • 流量牵引按照权重负载到各个版本,当增大其中一个版本权重时流量曲线上升,其他版本流量比例相对下降曲线成下降趋势,总体比例相加为100%,例:

image-20210426174935858

  • 流量镜像

正常版本流量保持不变,每次请求时复制一份流量发送到镜像服务,当镜像流量比例配置为100%时,总发送流量相加为200%,参考上图。

三、流量镜像其他功能说明 #

  • 流量镜像除以上两种使用方式外,还可以作为辅助排查线上问题的方式使用:当线上服务出现异常日志无法定位到问题时,可配置流量镜像把特征流量镜像到一个公网的测试地址,通过在测试地址打印请求日志;查看发送到该服务的接口请求数据、header头部等等定位具体问题,定位问题结束后删除镜像配置,期间不会对线上流量有任何影响。

配置方式同开发环境流量镜像配置