很多人都知道nginx可以做负载均衡和反向代理,但是nginx的健康检查也是必不可少的一个环节,实现Nginx健康检查可以实现以下几个场景:
当负载的节点宕机的时候nginx会将其移出负载池
当宕机的节点恢复的时候nginx会将其加入负载池
在负载机器没有全部宕机的时候,保证服务是可用的,不会出现404等情况
相关软件或源码下载在/usr/local/src/,并解压。
wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz -O openssl-1.0.1g.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
wget http://nginx.org/download/nginx-1.8.0.tar.gz
wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/1.2.6.tar.gz
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
解压 unzip master.zip
cd nginx- 1.8.0
patch -p1 < /usr/local/src/nginx_upstream_check_module-master/ check_1.9.2+.patch
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=/usr/local/src/openssl-1.0.1g --with-pcre=/usr/local/src/pcre-8.38 --add-module=/usr/local/src/nginx_upstream_check_module-master/ --with-http_stub_status_module --with-http_realip_module --add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d/
make
make install
以上步骤确保编译无报错。(我在编译过程中花了很长时间来效验版本[1.9.2+],网上没找到相应资料,是个教训)
注意点:
1. -with-pcre=/usr/local/src/pcre-8.38 pcre的源码所在,不是安装目录
2. --with-openssl =/usr/local/src/openssl-1.0.1g openssl的源码所在,不是安装目录
3. --add-module=/usr/local/src/nginx_upstream_check_module-master/
源码所在,不是安装目录
这些源码通过文档头部的地址下载到/usr/local/src目录下,要确保源码路径存在。不然configure以及后续编译不通过。
编译通过后就可以使用带nginx_upstream_check_module模块的nginx进行健康检查了。
编译通过后配置nginx ,弄个负载均衡然后启动nginx ,通过手动宕机或恢复后端节点来验证即可。