内容简介:微服务为我们带来了快速开发部署的优秀特性,而如何降低开发和变更的风险成为了一个问题。Istio的流量镜像,也称为影子流量,是将生产流量镜像拷贝到测试集群或者新的版本中,在引导实时流量之前进行测试,可以有效地降低版本变更风险。流量镜像有以下优点:1.当流量镜像到不同的服务时,会发生在请求的关键路径之外,这样流量镜像产生的任何问题都不会影响到生产;
微服务为我们带来了快速开发部署的优秀特性,而如何降低开发和变更的风险成为了一个问题。Istio的流量镜像,也称为影子流量,是将生产流量镜像拷贝到测试集群或者新的版本中,在引导实时流量之前进行测试,可以有效地降低版本变更风险。
流量镜像有以下优点:
1.当流量镜像到不同的服务时,会发生在请求的关键路径之外,这样流量镜像产生的任何问题都不会影响到生产;
2.忽略对任何镜像流量的响应; 流量被视为“即发即忘”,这样就不会干扰到正常的生产流量的响应;
3.当流量被镜像时,请求将通过其主机/授权报头发送到镜像服务附上 –shadow,用以区分流量从何处被镜像到何处;
4.利用实时生产用例和流量可以有更真实的测试服务环境,有效降低了部署的风险;
下面介绍几种典型的使用场景可以发挥流量镜像的优势:
1.用于测试:测试集群的测试可以使用生产实例真实流量,不会影响正常生产的关键路径。
2.用于新版本校验:可以实时对比生产流量和镜像流量的输出结果。
3.用于协作服务版本回退:当用到镜像流量的服务需要修改协作服务时,因为镜像模式添加了-shadow标记, 所以可以正常处理镜像请求,并在提交之前回滚。不会让镜像版本的更改影响生产版本。
4.隔离测试数据库:与数据处理相关的业务,可以使用空的数据存储并加载测试数据,针对该数据进行镜像流量操作,实现测试数据的隔离。
下面通过实例来演示一下,先让所有流量都到v1版本,然后使用规则将流量镜像到v2版本:
环境准备:需要httpbin和tutum/curl两个应用镜像
步骤一(配置并启动服务):
首先部署两个版本的httpbin服务:
httpbin-v1:
httpbin-v2:
部署sleep服务,为curl来提供负载:
当完成以上的配置文件后,就可以用kubectl create –f ./yourconfig.yaml来启动服务,用kubectl get pod 来查看服务的运行状态:
启动httpbin service:
先通过kubectl get svc 查看是否有httpbin service。如果已创建service, 需要用kubectl delete service httpbin 删除,并通过下图所示yaml 新建service:
步骤二(创建路由策略):
1.使用kubectl delete virtualservice httpbin,kubectl delete destinationrule httpbin删除已有httpbin策略,并通过下图yaml来创建新的路由策略,将全部的流量导入到v1版本:
通过kubectl create –f ./yourrules.yaml生效:
2.现在服务已经搭建好了,我们向服务发送一些流量:
3.分别查看httpbin的v1,v2的pod中的日志:
我们可以发现v1 pod中有刚才流量访问的记录,而v2的pod中日志为空,说明流量并没有进入到v2的pod中,这与我们全部流量导入到v1中的策略相匹配。
步骤三(镜像流量):
- 修改路由规则将流量镜像到v2服务:
删除之前部署的virtualservice规则,将上图的yaml用kubectl create –f 部署,其中mirror字段将流量镜像指定到v2服务。
2.发送流量:
通过指令
kubectl exec -it $SLEEP_POD -c sleep -- sh -c 'curl http://httpbin:8080/header s' | python -m json.tool 发送流量:
3.查看v1和v2的访问日志:
通过对比记录的时间戳我们可以发现在更改策略后,v1的流量被镜像到了v2。日志中的v2报文比v1大是流量被标记为影子流量所致。
步骤四(清除):
1.清除路由规则:
kubectl delete virtualservice httpbin
kubectl delete destinationrule httpbin
2.关闭httpbin/sleep服务:
kubectl delete deploy httpbin-v1 httpbin-v2 sleep
kubectl delete svc httpbin
通过以上步骤我们知道了如何设置路由规则来引入流量镜像。
以上所述就是小编给大家介绍的《idou老师教你学Istio12 : Istio 实现流量镜像》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 一种云环境网络流量镜像的通用解决方案
- Harbor v2.2 发布:镜像代理突破 Docker Hub 流量限制
- Kube-OVN 0.6.0 发布,支持 IPv6,流量镜像及更多功能
- MySQL-ProxySQL读写分离连接池负载均衡分库分表故障切换查询重写流量镜像SQL审计自动重连自动下线...
- 科普:什么是上行流量什么是下行流量
- KVM镜像制作及挂载镜像文件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Seasoned Schemer
Daniel P. Friedman、Matthias Felleisen / The MIT Press / 1995-12-21 / USD 38.00
drawings by Duane Bibbyforeword and afterword by Guy L. Steele Jr.The notion that "thinking about computing is one of the most exciting things the human mind can do" sets both The Little Schemer (form......一起来看看 《The Seasoned Schemer》 这本书的介绍吧!