- 文档首页
容器服务
容器服务 VKE
用户指南
网络
路由(Ingress)
Nginx Ingress
Nginx Ingress 配置流量复制
Nginx Ingress
Nginx Ingress 配置流量复制
Nginx Ingress 配置流量复制
Nginx Ingress 支持通过流量复制,将集群中的流量复制到其他集群中,常用于仿真测试或压力测试。本文为您介绍如何使用 Nginx Ingress 配置流量复制。
背景信息
Nginx Ingress 的流量复制功能,也被称作请求复制或流量镜像,是一种将集群中的请求流量复制到多个目标集群的能力。支持多种应用场景,包括:
- 压力测试:当用户应用发布新版本时,可以将生产集群中的流量复制到测试集群,使用实际的流量对新版本应用进行压测。这种场景下,能够在不影响生产环境的情况下测试新版本应用的可用性和性能。
- 故障排查:当生产环境出现故障时,为了不影响生产环境的正常运行,可以将生产环境的流量复制到测试环境进行故障排查和处理。
前提条件
- 已创建 2 个集群,本例中为方便描述,定义为集群 A 和集群 B。
- 已安装 ingress-nginx 组件,并升级至最新版本。
在集群中部署业务
在集群 A 中部署业务
在集群 A 中部署旧版本的应用和服务。操作步骤如下:
- 使用如下 YAML 配置,创建旧版本应用和服务。
image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v2.0
- 使用如下 YAML 配置,创建 Nginx Ingress,并指向旧版本服务。
apiVersion: networking.k8s.io/v1
ingressClassName: nginx
- 执行以下命令,验证是否可以访问到旧版本服务。其中,<EXTERNAL_IP>为 Nginx Ingress 对外暴露的 IP 地址。
curl -H "Host: example.com" http://<EXTERNAL_IP>
This is the old version of nginx
在集群 B 中部署业务
在集群 B 中部署新版本的应用和服务。操作步骤如下:
- 使用如下 YAML 配置,创建新版本的应用和服务。
image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v3.0
- 使用如下 YAML 配置,创建 Nginx Ingress,并指向新版本服务。
apiVersion: networking.k8s.io/v1
ingressClassName: nginx
- 执行以下命令,验证是否可以访问到新版本服务。其中,<EXTERNAL_IP>为 Nginx Ingress 对外暴露的 IP 地址。
curl -H "Host: example1.com" http://<EXTERNAL_IP>
This is the new version of nginx
配置流量复制
说明
- 流量由集群 A 复制到集群 B 后,客户端仅能接收到集群 A 客户端的请求响应。集群 B 的客户端请求响应会被丢弃。
为了将集群 A(生产集群)上访问旧应用的流量,全部复制到集群 B(测试集群)上,需要在集群 A 上配置流量复制功能。操作步骤如下:
- 执行以下命令,编辑 Nginx-Ingress。
kubectl edit ingress ingress-old
- 在 Nginx Ingress 配置中添加流量复制功能的 Annotation。
apiVersion: networking.k8s.io/v1
nginx.ingress.kubernetes.io/mirror-host: example1.com
nginx.ingress.kubernetes.io/mirror-target: http://14.xxx.xxx.xxx
说明
Nginx Ingress 流量复制功能的更多配置详情,请参见 官方文档。 结果验证
- 查看集群 B 中,新版本应用的 ingress-nginx-controller 日志,可以看到转发 IP 是集群 A 的 IP 地址。
-
- 查询新版本应用的日志request: "GET /_mirror-30b2558b-5eab-42eb-8ffc-9c128a703479 HTTP/1.1。
-
-
-
最近更新时间:2026.05.20 10:54:36