game module 停止运行_详解流量复制解决方案--NGINX的ngx_http_mirror_module模块实现
概述
因为我们的接口环境是在winserver上,而gor又刚好没对应版本(网上很多办法都试过了...哪位朋友测试过可以的话指点下),所以用了nginx的ngx_http_mirror_module模块来实现需求。
01
ngx_http_mirror_module模块
nginx官网公布了nginx1.13.4最新的ngx_http_mirror_module模块,利用mirror模块,业务可以将线上实时访问流量拷贝至其他环境,基于这些流量可以做版本发布前的预先验证,进行流量放大后的压测等等。
02
mirror模块配置
mirror模块配置分为两部分,源地址和镜像地址配置,配置位置可以为nginx配置文件的http, server, location上下文,配置示例为:
mirror模块配置说明#originallocation / { #location /指定了源uri为/ root html; index index.html index.htm; mirror /mirror; #lmirror /mirror指定镜像uri为/mirror mirror /mirror; #lmirror /mirror指定镜像uri为/mirror mirror_request_body on; # 指定是否镜像请求body部分,请求自动缓存;}#mirrorlocation /mirror { internal;internal #指定此location只能被“内部的”请求调用,外部的调用请求会返回”Not found” (404) proxy_set_header X-Original-URI $request_uri; proxy_set_header Host baidu-nginx-b.com; #proxy_set_header 设置镜像流量的头部 proxy_pass http://192.168.1.100$request_uri; #proxy_pass 指定将镜像数据发送给test server的地址}location /mirror2 { internal;internal #指定此location只能被“内部的”请求调用,外部的调用请求会返回”Not found” (404) proxy_set_header X-Original-URI $request_uri; proxy_set_header Host baidu-nginx-b.com; #proxy_set_header 设置镜像流量的头部 proxy_pass http://192.168.1.100$request_uri; #proxy_pass 指定将镜像数据发送给test server的地址}
1、original配置
- location /指定了源uri为/
- mirror /mirror指定镜像uri为/mirror
- mirror_request_body off | on 指定是否镜像请求body部分,此选项与proxy_request_buffering、fastcgi_request_buffering、scgi_request_buffering和 uwsgi_request_buffering冲突,一旦开启mirror_request_body为on,则请求自动缓存;
- proxy_pass 指定上游server的地址
2、mirror配置
- internal 指定此location只能被“内部的”请求调用,外部的调用请求会返回”Not found” (404)
- proxy_pass 指定上游server的地址
- proxy_set_header 设置镜像流量的头部
03
流量复制--实验测试
1、下载nginx,解压缩,运行cmd,使用命令进行操作,不要直接双击nginx.exe,不要直接双击nginx.exe,不要直接双击nginx.exe
一定要在dos窗口启动,不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程,再启动才可以。
2、启动nginx服务,启动时会一闪而过是正常的
start nginx
3、查看任务进程是否存在,dos或打开任务管理器都行
tasklist /fi "imagename eq nginx.exe"
4、如果程序没启动就直接start nginx启动,如果已经启动了就使用以下命令重新加载配置文件并重启
nginx -s reload
之后就打开浏览器访问刚才的域名及端口http://localhost:80,出现欢迎页就说明部署成功了
5、启动web服务
这里偷个懒,用之前gor的一些半成品模拟两个server
d:goreplaygor file-server :8000gor file-server :8001
6、配置NGINX
upstream zs { server 127.0.0.1:8000; } upstream cs { server 127.0.0.1:8001; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location /{ #access_log D:ginxaccess.log accesslog; mirror /mirror; mirror_request_body on; proxy_pass http://zs; } # 镜像站点配置 location /mirror { internal; # 内部配置 proxy_pass http://cs$request_uri; proxy_pass_request_body on; # Indicates whether the original request body is passed to the proxied server. default value is on proxy_set_header X-Original-URI $request_uri; } }}
7、访问地址:http://localhost/goreplay-1.0.0/
可以看到两边都有对应的请求。
这个办法也是一个解决方案,对线上压力也比较小,不过用户访问生产服务器请求被nginx复制发送给测试服务器时,mirror不会输出http返回内容,这里就需要另外配置了。
另外一点就是不会保存流量下来,无法做到随时随地重放,只能说折中吧,还得继续研究。
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
game module 停止运行_详解流量复制解决方案--NGINX的ngx_http_mirror_module模块实现相关推荐
- 指定module_详解流量复制解决方案--NGINX的ngx_http_mirror_module模块实现
概述 因为我们的接口环境是在winserver上,而gor又刚好没对应版本(网上很多办法都试过了...哪位朋友测试过可以的话指点下),所以用了nginx的ngx_http_mirror_module模 ...
- 大脑构造图与功能解析_大脑的结构和功能分区_详解人脑构造与功能
大脑的结构和功能分区 _ 详解人脑构造与功能 学习,可以开阔人的大脑 ; 学习,可以使人的大脑拥有更多的知识,人的大脑和肢 体一样,多用则灵,不用则废.那么下面学习啦小编给大家分享一些大脑的结构和功 ...
- mtk手机芯片资料详解和问题解决方案
MTK手机芯片详细总纲 前联发科技已开发出MT6205.MT6217.MT6218.MT6219.MT6226.MT6227.MT6228等系列平台,其中MT6205.MT6217.MT6218.MT ...
- 流量复制_详解Linux系统流量复制--gor、tcpcopy、nginx模块流量复制等
概述 对于一些有并发要求的业务,特别是对接外部流量时,产品上线前一定要做的就是压力测试,但是常规的压力测试并不能覆盖所有情况.以gemeter.ab,.webbench.http_load为例,这些通 ...
- python中有那几种赋值_详解Python列表赋值复制深拷贝及5种浅拷贝
概述 在列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值.复制.浅拷贝.深拷贝等绕口的名词到底有什么区别和作用呢? 列表赋值 # 定义一个新 ...
- linux 查看网络流量来源_详解Linux查看实时网卡流量的几种方式
在工作中,我们经常需要查看服务器的实时网卡流量.通常,我们会通过这几种方式查看Linux服务器的实时网卡流量. 1. sar -n DEV 1 2 sar命令包含在sysstat工具包中,提供系统的众 ...
- 一点就分享系列(实践篇6——上篇)【迟到补发_详解yolov8】Yolo-high_level系列融入YOLOv8 旨在研究和兼容使用【3月份开始持续补更】
一点就分享系列(实践篇5-补更篇)[迟到补发]-Yolo系列算法开源项目融入V8旨在研究和兼容使用[持续更新] 题外话 [最近一直在研究开放多模态泛化模型的应用事情,所以这部分内容会更新慢一些,文章和 ...
- python列表拆包_详解python 拆包可迭代数据如tuple, list
详解python 拆包可迭代数据如tuple, list 拆包是指将一个结构中的数据拆分为多个单独变量中. 以元组为例: >>> a = ('windows', 10, 25.1, ...
- dumpbin发现没有入口函数_详解VS2019 dumpbin查看DLL的导出函数
之前有人问过ViewDLL这些软件在哪下载.实际上使用VS就可以查看DLL的导出接口. 1.先打开VS内部的Power Shell 2.打开以后应该如下图所示,首先输入dumpbin查看下用法: 3. ...
最新文章
- Halcon:(3)铝板检测与角点坐标计算
- Python基于MASK信息抽取ROI子图实战:原始影像和mask文件都是二维的情况
- 无生命的AI算不上「智能」
- OVS数据库操作(四十七)
- mysql order 关键字_PHP数据库MySQL Order By 关键词 - PHP教程
- 《剑指Offer》 矩形覆盖
- 小书匠编辑器使用手册
- VS2015 error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型
- vue中如何实现pdf文件预览?
- WPF 程序加载PGIS性能问题
- 行测测评——矩阵、圆形、环形三角图形数列推理解题技巧
- android psd预览图软件,来自psd的Android Vector drawable具有空预览
- 录像机人机界面蓝屏怎么处理
- python属于什么类型的选修课_河北大学python选修课00次作业
- 基于Matlab的机器人学建模学习资料大整理
- 大数据应用“情感趋同现象”伦理风险问题刍议
- 如何利用Web of Science进行科学研究
- 第二章练习题(2):计算圆柱面积和体积
- qq登录 适用于 laravel
- 手把手教你用手机轻松制作精美封面,封面不够吸引人?
热门文章
- 基于JAVA+SpringMVC+Mybatis+MYSQL的闲置物品交易平台
- python date2num_坚持mdates.date2num
- JAVA 类加载机制学习笔记
- kubernetes下的Nginx加Tomcat三部曲之一:极速体验
- Python对象引用和del删除引用
- 动态修改attr里的多个属性
- 使用CCDirector的notificationNode来创建独立的信息提示层
- c# 修饰词public, protected, private,internal的区别
- linux内核驱动ldd3_走进linux 驱动开发 之 内核模块
- 五大领域总目标指南_每日干货 | 五大领域 学前社会教育1