跳到主要内容

实施流量镜像

流量镜像是一种机制,它复制流经 API 网关的流量并将复制的流量转发到指定的上游,而不会中断常规服务。该机制有利于多种用例,包括故障排除、安全检查、分析等。

本指南将引导你完成使用 proxy-mirror 插件在 APISIX 中实施流量镜像的过程。

前置条件

  • 安装 Docker
  • 安装 cURL 以向服务发送请求进行验证。
  • 按照 快速入门教程 在 Docker 或 Kubernetes 中启动一个新的 APISIX 实例。

启动示例服务以接收镜像流量

启动一个示例 NGINX 服务器用于接收镜像流量:

docker run -p 8081:80 --name nginx nginx

你应该在终端会话中看到 NGINX 访问日志和错误日志。

配置 APISIX

使用 proxy-mirror 插件创建一个路由,并配置镜像流量的地址。相应地更新地址。

curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -d '
{
"id": "traffic-mirror-route",
"uri": "/get",
"plugins": {
"proxy-mirror": {
"host": "http://192.168.42.145:8081"
}
},
"upstream": {
"nodes": {
"httpbin.org": 1
},
"type": "roundrobin"
}
}'

验证镜像

向路由发送请求:

curl -i "http://127.0.0.1:9080/get"

你应该收到 HTTP/1.1 200 OK 响应。

要进行验证,请返回 NGINX 终端会话(如果在 Docker 中运行)或检查 NGINX pod 日志(如果在 Kubernetes 上运行);你应该看到相应的访问日志条目:

172.17.0.1 - - [29/Jan/2024:23:11:01 +0000] "GET /get HTTP/1.1" 404 153 "-" "curl/7.64.1" "-"

HTTP 响应状态为 404 且符合预期,因为示例 NGINX 服务器未实施该路由。这验证了 APISIX 已将请求镜像到 NGINX 服务器。

下一步

你现在已经了解了如何将所有入口流量镜像到不同的上游。proxy-mirror 插件还支持镜像部分流量和自定义镜像超时值。有关更多信息,请参阅 插件文档