方案選擇大體以下: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故障的狀況下