跳到主要内容
版本:3.19.0

实施流量镜像

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

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

前置条件​

  • 安装 Docker。
  • 安装 cURL 以向服务发送请求进行验证。
  • 按照 快速入门教程 在 Docker 或 Kubernetes 中启动一个新的 APISIX 实例。
  • 如果使用 Admin API 示例且启用了身份验证,请将管理员角色的密钥导出为 ADMIN_API_KEY。请在 deployment.admin.admin_key 下配置该密钥。Docker 快速入门为了便于本地评估而禁用了身份验证;生产环境中请保持启用。

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

启动一个示例 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 \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-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 插件还支持镜像部分流量和自定义镜像超时值。有关更多信息,请参阅 插件文档。