使用nginx_upstream_check_module对后端服务进行健康检测

nginx可以方便快捷的配置负载均衡,并且可以配置失效策略,负载均衡算法等。如下,是一个简单的配置。

如上,配置了两台后端服务,一个81端口,一个82端口,81的权重为1,82的权重为2。每10s内如果失效次数到达2次,则任务后端服务不可用,判定为不可用,会将其从后端列表中摘除,10s再次加入后端服务器列表。

nginx默认的健康监测机制为被动检测,没有主动进行心跳检测。还好,有nginx_upstream_check_module模块,配置了nginx_upstream_check_module模块,就可以主动进行心跳检测了。

配置模块

1)首先,停止nginx。进入nginx安装包,如我的路径是/root/lnmp1.5/src/nginx-1.14.1

cd /root/lnmp1.5/src/nginx-1.14.1

2)为了统一管理第三方模块,新建了一个modules目录,并进入modules目录

mkdir modules;
cd modules;

3)下载nginx_upstream_check_module模块

wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master;
unzip master;
patch -p1 < /root/lnmp1.5/src/nginx-1.14.1/modules/nginx_upstream_check_module-master/check_1.14.0+.patch

4)查看nginx原本的配置参数

nginx -V

我的结果是:

5)重新编译,要使用上面输出的配置参数

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module --with-openssl=/root/lnmp1.5/src/openssl-1.0.2o --add-module=/root/lnmp1.5/src/nginx-1.14.1/modules/nginx_upstream_check_module-master;
make;

最后的add-module就是加载了nginx_upstream_check_module模块。

然后使用make编译。注意,不要make install。

6)将生成的nginx替换原来的nginx

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak;
cp ./objs/nginx /usr/local/nginx/sbin/;

7)开启nginx服务。

service nginx start;

ok,至此,nginx_upstream_check_module模块安装完毕。

配置心跳检测

upstream backend {
            #ip_hash;
            server 127.0.0.1:81 max_fails=2 fail_timeout=10s weight=1;
            server 127.0.0.1:82 max_fails=2 fail_timeout=10s weight=2;

            check interval=5000 rise=2 fall=3 timeout=3000 type=http;
            check_http_send "HEAD / HTTP/1.0\r\n\r\n";
            check_http_expect_alive http_2xx http_3xx;
        }

上述心跳检测的规则是:每5s检测一次,失败3次则标识后端服务为不存活,成功两次标识为存活,超时时间为3s,检测方式为http。

心跳检测的方式有http和tcp两种方式。如果只是tcp方式,则下面的check_http_send和check_http_expect_alive不需要。

配置check_status,通过网页查看后端服务器状态

location /backend_status {
            check_status;
            access_log off;
            #allow 172.1.1.1;
            #deny all;
        }

可以通过访问http://服务器ip/backend_status查看后端服务状态,如下:

使用nginx_upstream_check_module对后端服务进行健康检测_第1张图片

你可能感兴趣的:(nginx)