Nginx主動檢測方案---Tengine

方案選擇大體以下:mysql

 

一、用Tengine來代替Nginx,   http://tengine.taobao.org/linux

     Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了不少高級功能和特性。nginx

其中一個就有upstream_check_module ,它是用於nginx主動對後端服務檢測。web

 

二、升級Nginx,並打上upstream check modulesql

 

 

選擇第一種,能夠在不影響生產環境下進行測試,而且能夠擇期切換,而且切換方便。後端

選擇第二種,須要短暫暫停業務,時間在20分鐘之內。服務器

 

 

建議使用第一種方案。tcp

 

 

實施方案以下:測試

第一種方案,Tengine代替Nginx網站

一、下載Tengine,最新版本爲2.0.3

wget http://tengine.taobao.org/download/tengine-2.0.3.tar.gz

二、安裝tengine

tar -xvf tengine-2.0.3.tar.gz

cd tengine-2.0.3

./configure --prefix=/usr/local/tengine2.0.3

make

make install

三、配置tengine

……………………省略………………………..

upstream jieru {

    server apn.mlot.cn:8080;

    server 172.16.23.21:8080;

    server 172.16.23.61:8080;

 

    check interval=3000 rise=1 fall=2 timeout=100 type=http;

    check_http_send "POST /Inceptor/news.uz HTTP/1.0\r\n\r\n";

    check_http_expect_alive http_2xx http_3xx;

}

……………………省略………………………..

 

 

check 指令能夠打開後端服務器的健康檢查功能

指令後面的參數意義是:

l  interval:向後端發送的健康檢查包的間隔。

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

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

l  timeout: 後端健康請求的超時時間。

l  default_down: 設定初始時服務器的狀態,若是是true,就說明默認是down的,若是是false,就是up的。默認值是true,也就是一開始服務器認爲是不可用,要等健康檢查包達到必定成功次數之後纔會被認爲是健康的。

l  type:健康檢查包的類型,如今支持如下多種類型

l  tcp:簡單的tcp鏈接,若是鏈接成功,就說明後端正常。

l  ssl_hello:發送一個初始的SSL hello包並接受服務器的SSL hello包。

l  http:發送HTTP請求,經過後端的回覆包的狀態來判斷後端是否存活。

l  mysql: 向mysql服務器鏈接,經過接收服務器的greeting包來判斷後端是否存活。

l  ajp:向後端發送AJP協議的Cping包,經過接收Cpong包來判斷後端是否存活。

l  port: 指定後端服務器的檢查端口。你能夠指定不一樣於真實服務的後端服務器的端口,好比後端提供的是443端口的應用,你能夠去檢查80端口的狀態來判斷後端健康情況。默認是0,表示跟後端server提供真實服務的端口同樣

 

以後在nginx.conf配置文件裏面的upstream加入健康檢查,以下:

upstream linuxyan {

server 192.168.0.21:80;

server 192.168.0.22:80;

check interval=3000 rise=2 fall=5 timeout=1000;

}

這裏下面加的這句話我解釋下,interval檢測間隔時間,單位爲毫秒,rsie請求2次正常的話,標記此realserver的狀態爲up,fall表示請求5次都失敗的狀況下,標記此realserver的狀態爲down,timeout爲超時時間,單位爲毫秒。

在server段裏面能夠加入查看realserver狀態的頁面

location /nstatus {

check_status; access_log off;

#allow SOME.IP.ADD.RESS;

#deny all;

}

這個時候打開nstatus這個頁面就能夠看到當前realserver的狀態了,

以下圖:

1.2臺realserver都正常的狀況下  

2.一臺realserver故障的狀況下

相關文章
相關標籤/搜索