在现有的nginx版本的基础上, 添加新模块 nginx_upstream_check_module 步骤如下
nginx_upstream_check_module
:简介: 是由 淘宝技术团队开发的一个 Tengine(nginx 的分支) 的模块,Tengine 自带这个模块, nginx的单独安装模块。
作用: 用于提供主动式后端服务器健康检查。通过它可以检测后端 realserver 的健康状态,如果后端 realserver 不可用,则所有的请求就不会转发到该节点上
环境:
contos:6.7
nginx:1.63
步骤如下:
- 查看当前 nginx 版本, path-nginx/sbin/nginx -V
- 下载新模块 nginx_upstream_check_module && 解压
- 进入当前nginx 的源文件, 用 patch 方式打补丁
- 编译 ./configure
- make
- 新生成的nginx执行文件 替换现有版本的nginx执行文件
- 检查是否正常, 搞定
- 配置 nginx 健康检查
- 客户端查看
详细步骤:
1. ## 我所有的软件源文件都在这个目录下
cd /home/oldboy/tools/
/application/nginx/sbin/nginx -V
2. ## 下载新模块, 解压
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
unzip nginx_upstream_check_module-master.zip
3. ## 进入 nginx 目录, 并用 patch 命令 对源文件打补丁
cd nginx-1.6.3
patch -p1 < ../nginx_upstream_check_module-master/check_1.5.12+.patch
4. ## 编译 红色是现有模块 蓝色是添加模块
./configure --user=nginx --group=nginx --prefix=/application/nginx-1.6.3/ --with- http_stub_status_module --with-http_ssl_module --add-module=/home/oldboy/tools/nginx-upstream-fair-master --add-module=/home/oldboy/tools/nginx_upstream_hash-master --add-module=../nginx_upstream_check_module-master/
5. ##
make
6. ## 新生成的nginx执行文件 替换现有版本的nginx执行文件
mv /application/nginx/sbin/nginx{,.ori}
cp ./objs/nginx /application/nginx/sbin/
7. ## 检查配置是否正常, 查看nginx现在的模块
/application/nginx/sbin/nginx -t
/application/nginx/sbin/nginx -V
8. ### nginx 配置 健康检查
节点服务器: 2台
对 www_server_pools 这个负载均衡条目下的所有节点(2个) ,
每隔3秒检测一次,
请求3次正常则标记 realserver 状态为 up,
如果检测 5 次都失败, 则标记 realserver 状态为 down,
超时时间为 1 秒,
检查的协议为 http
upstream www_server_pools {
#fair;
#least_conn;
#hash $request_uri;
server 192.168.190.131:80 weight=1;
server 192.168.190.132:80 weight=1;
check interval=3000 rise=3 fall=5 timeout=1000 type=http;
}
#blog
server {
listen 80;
server_name www.blog.com;
location / {
proxy_pass http://www_server_pools;
include proxy.conf;
}
location /status {
check_status;
access_log off;
}
}
我是重点: 配置完成, nginx 必须重启, 不能重新加载
path/sbin/nginx -s stop
path/sbiun/nginx
9. ### 客户端查看
1> 配置2个服务都正常
2> 第一个 down 掉, 5次失败后,标记为down,不在往这台服务器转发
3> 重启第一个 节点服务器后, 3次检测通过后的截图
具体命令:
cd /home/oldboy/tools/
/application/nginx/sbin/nginx -V
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
unzip nginx_upstream_check_module-master.zip
cd nginx-1.6.3
patch -p1 < ../nginx_upstream_check_module-master/check_1.5.12+.patch
./configure --user=nginx --group=nginx --prefix=/application/nginx-1.6.3/ --with-http_stub_status_module --with-http_ssl_module --add-module=/home/oldboy/tools/nginx-upstream-fair-master --add-module=/home/oldboy/tools/nginx_upstream_hash-master --add-module=../nginx_upstream_check_module-master/
make
mv /application/nginx/sbin/nginx{,.ori}
cp ./objs/nginx /application/nginx/sbin/
/application/nginx/sbin/nginx -t
/application/nginx/sbin/nginx -V
ps: