> HTTP流量镜像指的是将流量转发到原目标服务的同时将流量给另外一个目标服务,请求正常的关注原始服务,而等待不用镜像的流量返回。
#### 什么场景需要用的流量镜像
例如上线了新的版本,但对于可靠性不是很有信心,可以将请求的流量将传入当前使用的版本镜像到新的版本来测试,对当前使用的版本不会产生影响,同时也可以测试到新版本的性能等方面。
#### 通过例子来理解
目前是使用的v1版本的api,由于业务需求新增v2版本的api,但v2没有经过完整的测试,SRE团队对于上线后不是很有信心去确保可靠性。所以采取了流量镜像针对v1版本的流量镜像到v2版本来进行可靠性验证。
apiVersion apps/v1 kind Deployment metadata labels app nginx name nginx-v1-deployment spec replicas1 selector matchLabels app nginx version1 strategy rollingUpdate maxSurge 25% maxUnavailable 25% type RollingUpdate template metadata labels app nginx version1 spec containersimage'nginx:latest' name nginx-deployment ---apiVersion apps/v1 kind Deployment metadata labels app nginx name nginx-v2-deployment spec replicas1 selector matchLabels app nginx version2 strategy rollingUpdate maxSurge 25% maxUnavailable 25% type RollingUpdate template metadata labels app nginx version2 spec containersimage'nginx:latest' name nginx-deployment ---apiVersion v1 kind Service metadata name nginx-service spec portsport80 protocol TCP targetPort80 selector app nginx type ClusterIP ---apiVersion networking.istio.io/v1alpha3 kind DestinationRule metadata name nginx-dr spec host nginx-service subsetsname v1 labels version1name v2 labels version2---apiVersion networking.istio.io/v1alpha3 kind VirtualService metadata name nginx-vs spec hosts"*" httproutedestination host nginx-service subset v1 mirror host nginx-service subset v2