nginx 健康檢查模塊 nginx_upstream_check_module

淘寶技術團隊開發的nginx模快nginx_upstream_check_module能夠檢測後方realserver的健康狀態,若是後端服務器不可用,則因此的請求不轉發到這臺服務器。mysql

[root@localhost src]# cd nginx-1.8.0/
[root@localhost nginx-1.8.0]# patch -p1 < /usr/local/src/nginx_upstream_check_module/check_1.7.2+.patch
patching file src/http/modules/ngx_http_upstream_ip_hash_module.c
patching file src/http/modules/ngx_http_upstream_least_conn_module.c
從新編譯nginx

添加 –add-module=/usr/local/src/nginx_upstream_check_module/
[root@localhost nginx-1.8.0]# ./configure \
 --prefix=/usr/local/nginx \
 --user=www \
 --group=www \
 --with-http_ssl_module \
 --with-http_stub_status_module \
 --with-file-aio \
 --with-http_dav_module \
 --with-pcre=/usr/local/src/pcre-8.37 \
 --add-module=/usr/local/src/nginx_upstream_check_module/
[root@localhost nginx-1.8.0]# make  #只Make不進行make install 
4.配置健康檢查
1 upstream resinserver_web{
2         ip_hash;
3         server 127.0.0.1:8095;
4         server 127.0.0.1:8080;
5         check interval=3000 rise=2 fall=5 timeout=1000 type=http;
6         check_http_send "GET / HTTP/1.0\r\n\r\n";  #發送GET請求
7         check_http_expect_alive http_2xx http_3xx;  #返回碼是2xx,3xx表示UP
8 }

說明:

interval:向後端發送的健康檢查包的間隔,3000爲3s。

fall(fall_count): 若是連續失敗次數達到fall_count,服務器就被認爲是down。

rise(rise_count): 若是連續成功次數達到rise_count,服務器就被認爲是up。

timeout: 後端健康請求的超時時間,1000爲1s。

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: 指定後端服務器的檢查端口。

check_http_send 指令

該指令能夠讓負載均衡器模擬向後端realserver發送,監控檢測的http包,模擬LVS的檢測。

check_http_expect_alive 指令

check_http_expect_alive [ http_2xx | http_3xx | http_4xx | http_5xx ]

返回指定HTTP code,符合預期就算檢測成功

5.配置狀態查看
51     location /nstatus {
52          check_status;
53          access_log off;
54          allow 182.xx.xx.xx;
55          deny all;
56        }

從新reload下nginx而後查看頁面就能看到後端服務器的狀態
相關文章
相關標籤/搜索