nignx mirror模块
将生产环境流量同步一份到测试环境,同样的测试命令无法模拟不同访问量的情况下对服务器的影响大小
mirror模块可以做到这点 复制一份用户的真实请求,同时用该请求去访问测试环境的压力等,以便于运维人
员发现测试环境的问题
环境搭建
环境准备:
nginx 10.0.0.20 真实环境
nginx 10.0.0.21 测试环境
搭建 10.0.0.20 nginx 生产环境
安装nginx
#第一步: 下载nginx:
#http://nginx.org/en/download.html
#创建一个目录存放nginx安装包
mkdir -p /server/tools
#安装包下载:
cd /server/tools
wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar xf nginx-1.16.0.tar.gz
cd nginx-1.16.0
#第二步: 解决软件依赖关系
# openssl-devel -- SSL证书相关依赖包
# pcre-devel -- 正则相关依赖包
# gd-devel -- 图片处理相关依赖包
yum install -y pcre pcre-devel openssl openssl-devel gd-devel zlib-devel gcc
#第三步: 创建nginx进程相关用户
useradd -s /sbin/nologin -M www
#第四步:执行预编译
cd /server/tools/
./configure --prefix=/application/nginx-1.16 --user=www --group=www --with-http_image_filter_module --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module
# 第五步:make 编译
make
echo $? #这一步可做可不做,返回值为0代表正常 为其他数值为异常
#第六步: 编译安装
make install
#创建软连接,作用在升级新版本时只需要替换软连接,而不需要停止服务更换版本
ln -s /application/nginx-1.16 /application/nginx
#优化nginx启动命令
#添加环境变量:export PATH="$PATH:/application/nginx/sbin"
echo "export PATH="$PATH:/application/nginx/sbin"">>/etc/profile
source /etc/profile
#启动nginx
nginx
启动与关闭 nginx
nginx 启动nginx
nginx -s stop 停止nginx
nginx -s reload 重载nginx
搭建 10.0.0.21 nginx 测试环境
安装nginx
#第一步: 下载nginx:
#http://nginx.org/en/download.html
#创建一个目录存放nginx安装包
mkdir -p /server/tools
#安装包下载:
cd /server/tools
wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar xf nginx-1.16.0.tar.gz
cd nginx-1.16.0
#第二步: 解决软件依赖关系
# openssl-devel -- SSL证书相关依赖包
# pcre-devel -- 正则相关依赖包
# gd-devel -- 图片处理相关依赖包
yum install -y pcre pcre-devel openssl openssl-devel gd-devel zlib-devel gcc
#第三步: 创建nginx进程相关用户
useradd -s /sbin/nologin -M www
#第四步:执行预编译
cd /server/tools/
./configure --prefix=/application/nginx-1.16 --user=www --group=www --with-http_image_filter_module --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module
# 第五步:make 编译
make
echo $? #这一步可做可不做,返回值为0代表正常 为其他数值为异常
#第六步: 编译安装
make install
#创建软连接,作用在升级新版本时只需要替换软连接,而不需要停止服务更换版本
ln -s /application/nginx-1.16 /application/nginx
#优化nginx启动命令
#添加环境变量:export PATH="$PATH:/application/nginx/sbin"
echo "export PATH="$PATH:/application/nginx/sbin"">>/etc/profile
source /etc/profile
#启动nginx
nginx
启动与关闭 nginx
nginx 启动nginx
nginx -s stop 停止nginx
nginx -s reload 重载nginx
测试访问 检查两台服务器运行是否正常
10.0.0.20
10.0.0.21
生产环境server配置
10.0.0.20
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 10020;
location / {
return 200 'mirror xxxx';
}
}
因为用于测试 这里的 return 200 'mirror xxxx'; 仅用于测试 生产环境中 server该怎么配置就怎么配置
复制流量的server配置
10.0.0.21
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 8001;
location / {
mirror /mirror;
mirror_request_body off;
}
# 关键配置 用于将流量传递给测试环境
location = /mirror {
internal;
proxy_pass http://10.0.0.20:10020$request_uri;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
# 关键配置
}
}
访问测试流量复制是否成功
如果通过访问 10.0.0.21的生产环境nginx,而流量也会传递给测试环境的nginx则代表成功
两台机器同时监控 nginx的access_log文件,通过浏览器访问检查文件变化
访问前:
访问后:

最后修改:2020-03-06 22:13:54
© 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

发表评论