首页 > 其他分享 >Envoy 流量镜像

Envoy 流量镜像

时间:2022-09-05 16:58:53浏览次数:67  
标签:name Envoy 流量 集群 address 镜像 runtime

流量镜像

  • 流量镜像,也称为流量复制或影子镜像

  • 流量镜像功能通常用于在生产环境进行测试,通过将生产流量镜像拷贝到测试集群或者新版本集群,实现新版本接近真实环境的测试,旨在有效地降低新版本上线的风险;
  • 将流量转发至一个集群(主集群)的同时再转发到另一个集群(影子集群)

    • 无须等待影子集群返回响应

    • 支持收集影子集群的常规统计信息,常用于测试

    • 默认情况下,路由器会镜像所有请求;也可使用如下参数配置转发的流量比例

      • runtime_key:运行时键,用于明确定义向影子集群转发的流量的百分比,取值范围为0-10000,每个数字表示0.01%的请求比例;定义了此键却未指定其值时,默认为0;

流量镜像使用场景

  • 验证新版本:实时对比镜像流量与生产流量的输出结果,完成新版本目标验证

  • 测试:用生产实例的真实流量进行模拟测试

  • 隔离测试数据库:与数据处理相关的业务,可使用空的数据存储并加载测试数据,针对该数据进行镜像流量操作,实现测试数据的隔离

流量镜像配置格式

--
  route:
    cluster|weighted_clusters:
    ...
    request_mirror_policies: []
    - cluster": "..."
      runtime_fraction": "{...}"
        default_value: # 运行时键值不可用时,则使用此默认值;
          numerator: # 指定分子,默认为0;
          denominator: # 指定分母,小于分子时,最终百分比为1;分母可固定使用HUNDRED(默认)、TEN_THOUSAND和MILLION;
        runtime_key: routing.request_mirror.KEY # 指定要使用的运行时键,其值需要用户自定义;
      trace_sampled: {…} # 是否对trace span进行采样,默认true

流量镜像配置示例

admin:
  profile_path: /tmp/envoy.prof
  access_log_path: /tmp/admin_access.log
  address:
    socket_address:
       address: 0.0.0.0
       port_value: 9901

layered_runtime:
  layers:
  - name: admin
    admin_layer: {}
       
static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 80 }
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          codec_type: AUTO
          route_config:
            name: local_route
            virtual_hosts:
            - name: demoapp
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: demoappv10
                  request_mirror_policies:
                  - cluster: demoappv11
                    runtime_fraction:
                      default_value:
                        numerator: 20  # 默认只镜像demoappv10集群上20%的流量到该集群
                        denominator: HUNDRED
                      runtime_key: routing.request_mirror.demoapp
          http_filters:
          - name: envoy.filters.http.router
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router

  clusters:
  - name: demoappv10
    connect_timeout: 0.25s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: demoappv10
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: demoappv10
                port_value: 80

  - name: demoappv11
    connect_timeout: 0.25s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: demoappv11
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: demoappv11
                port_value: 80

动态调整镜像流量的比例

# 我们可以通过runtime_layer中的routing.request_mirror.demoapp键来调整镜像的流量的比例,例如,将其调整到100%,即镜像所有流量的方法如下;
 curl -XPOST 'http://envoy_ip:9901/runtime_modify?routing.request_mirror.demoapp=100'

 

标签:name,Envoy,流量,集群,address,镜像,runtime
From: https://www.cnblogs.com/wangguishe/p/16658736.html

相关文章

  • pip安装更换镜像
    原文链接使用pip来安装python包有时候安装起来会非常慢,因此需要换成国内的源来加速下载:1单次修改源以Torch为例,常规下载方式为:pipinstalltorch修改为阿里源:pipi......
  • 设置Windows的pip镜像配置文件 pip.ini
    1.前言首先来看看有什么pip镜像地址清华https://pypi.tuna.tsinghua.edu.cn/simple豆瓣http://pypi.douban.com/simple/阿里http://mirrors.aliyun.com/pypi/simple......
  • Homebrew更换阿里云镜像源或还原官方镜像站
    还原官方镜像站更换阿里云镜像站cd"$(brew--repo)"gitremoteset-urloriginhttps://mirrors.aliyun.com/homebrew/brew.gitcd"$(brew--repo)/Library/Taps/hom......
  • HomeBrew配置阿里云镜像
    HomeBrew配置阿里云镜像 你可能有过这样糟糕的经历,当敲下brewinstall应用名称,静静的等待安装结果时,Homebrew在Updating的地方卡死了。Homebrew是一款MacOS......
  • npm太慢, 淘宝npm镜像使用方法
    淘宝npm地址:http://npm.taobao.org/如何使用有很多方法来配置npm的registry地址,下面根据不同情境列出几种比较常用的方法。以淘宝npm镜像举例:1.临时使用npm--reg......
  • docker下kali镜像中安装AWVS
    docker下通过kali最小镜像安装awvs1.kali基本环境配置拉去kali镜像dockerpullkalilinux/kali-rolling拉取成功后,查看镜像对应iddockerimagesREPOSITORY......
  • pip 使用国内镜像源
    pip使用国内镜像源  查看镜像地址:$pip3configlistglobal.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'install.trusted-host='https://pypi.tun......
  • u盘制作pe、镜像
    如下:===============================================================u盘制作pehttp://jingyan.baidu.com/article/636f38bb3d3587d6b846100......
  • 06第六章:本地镜像发布到私有库
    一、本地镜像发布到私有库流程二、DockerRegistry是什么(1)官方DockerHub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。(2)Dock......
  • 05第五章:本地镜像发布到阿里云
    一、本地镜像发布到阿里云流程二、镜像的生成方法基于当前容器创建一个新的镜像,新功能增强docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]OPTIONS说明:-a :提......