www.icesr.com
IT运维工程师的摇篮

nginx后端节点健康状态检查之nginx打nginx_upstream_check_module-master补丁平滑升级

nginx后端节点健康状态检查之nginx打nginx_upstream_check_module-master补丁平滑升级

1、下载nginx-1.10.1.tar.gz和nginx_upstream_check_module-master.zip

wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip

2、解压nginx和nginx_upstream_check_module

unzip nginx_upstream_check_module-master.zip
unzip nginx-1.10.1.tar.gz

3、打补丁编译

cd /root/nginx-1.10.1
patch -p0 < ../nginx_upstream_check_module-master/check_1.9.2+.patch
./configure --prefix=/app/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/www/logs/nginx/error.log --pid-path=/app/nginx/nginx.pid --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --http-log-path=/www/logs/nginx/access.log --http-client-body-temp-path=/app/nginx/client --http-proxy-temp-path=/app/nginx/proxy --http-fastcgi-temp-path=/app/nginx/fcgi --with-http_stub_status_module --lock-path=/app/nginx/lock/nginx --with-stream --add-module=/root/nginx_upstream_check_module-master

#需要添加–add-module=/root/nginx_upstream_check_module-master 其他编译参数和之前保持一致,如不记得之前的编译参数,可使用 nginx -V 命令查看。
make

4、平滑升级nginx

mv /usr/sbin/nginx /usr/sbin/nginx.bak
mv ./objs/nginx /usr/sbin/
/usr/sbin/nginx -t -c /etc/nginx/nginx.conf

5、配置nginx检测后端节点健康情况
这里以operationApi为例,访问operationApi的方式为 http://na.szcq18.com/operationApi/

upstream  operationApi {
                        server   10.25.170.215:17011;
                        server   10.25.170.216:17011;
                        check interval=5000 rise=2 fall=2 timeout=3000 type=http;
                        check_http_send "GET /operationApi/login.jsp HTTP/1.0\r\n HOST na.szcq18.com\r\n\r\n";
                }

#注,指令参数的意义

    - interval:向后端发送的健康检查包的间隔ms。
    - fall(fall_count): 如果连续失败次数达到fall_count,服务器就被认为是down。
    - rise(rise_count): 如果连续成功次数达到rise_count,服务器就被认为是up。
    - timeout: 后端健康请求的超时时间。
    - default_down: 设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。
    - type:健康检查包的类型,现在支持以下多种类型
        - tcp:简单的tcp连接,如果连接成功,就说明后端正常。
        - ssl_hello:发送一个初始的SSL hello包并接受服务器的SSL hello包。
        - http:发送HTTP请求,通过后端的回复包的状态来判断后端是否存活。
        - mysql: 向mysql服务器连接,通过接收服务器的greeting包来判断后端是否存活。
        - ajp:向后端发送AJP协议的Cping包,通过接收Cpong包来判断后端是否存活。
    - port: 指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,比如后端提供的是443端口的应用,你可以去检查80端口的状态来判断后端健康状况。默认是0,表示跟后端server提供真实服务的端口一样。

①、主要定义好type。由于默认的type是tcp类型,因此假设你服务启动,不管是否初始化完毕,它的端口都会起来,所以此时前段负载均衡器为认为该服务已经可用,其实是不可用状态。
②、注意check_http_send值的设定。由于它的默认值是”GET / HTTP/1.0\r\n\r\n”。假设你的应用是通过http://ip/name访问的,那么这里你的check_http_send值就需要更改为”GET /name HTTP/1.0\r\n\r\n”才可以。
针对采用长连接进行检查的,这里增加keep-alive请求头,即”HEAD /name HTTP/1.1\r\nConnection: keep-alive\r\n\r\n”。
如果你后端的tomcat是基于域名的多虚拟机,此时你需要通过check_http_send定义host,不然每次访问都是失败,范例:check_http_send “GET /exchange/index.jsp HTTP/1.0\r\n HOST na.szcq18.com\r\n\r\n”;

6、配置实时健康状态展示

location /node_status {
                   check_status;
                   access_log off;
                   #allow IP;
                   #deny all;
				}

7、重启nginx即可

/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
service nginx restart

未经允许不得转载:冰点网络 » nginx后端节点健康状态检查之nginx打nginx_upstream_check_module-master补丁平滑升级

分享到:更多 ()

评论 抢沙发

评论前必须登录!