nginx做负载均衡,如果后端服务器有故障的话,nginx是不能把这台realserver从upstream池中移除的,所以还会有请求转发到后端的这台realserver上面去,虽然nginx可以在localtion中启用proxy_next_upstream来判断后端如果有故障就转发到其他可用后端服务器,但这个还是会把请求转发给这台服务器的,然后再转发给别的服务器,这样就浪费了一次转发。可通过第三方模块nginx_upstream_check_module来解决这个问题,此模块检测后方realserver的健康状态,如果后端服务器不可用,则所以的请求不转发到这台服务器。安装步骤如下:
安装git
# yum -y install git
下载源码
# git clone https://github.com/yaoweibin/nginx_upstream_check_module.git
打补丁
进入nginx目录
# cd nginx-1.12.x # patch -p1 < ../nginx_upstream_check_module/check_1.11.5+.patch
注:因nginx版本更新,1.12以上版本的nginx,补丁为check_1.11.5+.patch
编译
# ./configure --prefix=/usr/local/nginx \ --user=nginx --group=nginx \ --with-http_ssl_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-http_sub_module \ --with-pcre \ --add-module=../nginx_upstream_check_module
使用方法请看官方文档