由于开源社区版本的nginx负载均衡并不会实时检查某个节点是否挂掉,只会发生超时的情况下切换节点,如果挂掉的节点恢复了,nginx也不会去访问。我们就需要借助阿里的nginx_upstream_check_module。
1.环境说明
服务器操作系统版本:Centos 7 64位
Nginx源码版本:nginx-1.14.0.tar.gz(可以在https://download.csdn.net/download/lengyue2015/11961065下载)
nginx_upstream_check_module:master(可以在https://download.csdn.net/download/lengyue2015/11961065下载)
2.安装编译的依赖库
由于必须采用源码编码安装,我们需要安装相关的依赖库。
2.1 Gcc
检查服务器有没有gcc编译器,如果没有采用下面方式进行安装:
yum install gcc-c++
2.2 Perl
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来 解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库:
yum install -y pcre pcre-devel
2.3 Zlib
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
2.4 OpenSSL
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰 富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel
3.解压相关文件
3.1 解压nginx-4.0.tar.gz源码
tar –zxvf nginx-1.14.0.tar.gz
3.2 解压master
unzip master
3.3 打补丁
将nginx打上补丁,进入nginx源码目录。
cd nginx-1.14.0
执行:
patch -p1 < ../nginx_upstream_check_module-master/check_1.14.0+.patch
然后执行进行添加新模块:
./configure --prefix=/usr/local/nginx --add-module=../nginx_upstream_check_module-master
4.编译
执行如下命令:
make
5.安装
执行如下命令:
make install
安装完成之后就在/usr/local/nginx目录下面,现在就可以用阿里的nginx_upstream_check_module了
6.配置
找到nginx.conf文件,然后在upstream节点添加如下配置:
check interval=3000 rise=2 fall=3 timeout=1000 type=http;
在server中的location /nstatus中添加如下配置:
location /nstatus{
check_status;
access_log off;
},
整个配置如图所示:
重启nginx就可以看到健康检查状态了,如图所示: