本篇內(nèi)容主要講解“Nginx后端健康檢查的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Nginx后端健康檢查的方法是什么”吧!
10年積累的做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計制作后付款的網(wǎng)站建設(shè)流程,更有四川免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
嚴(yán)格說Nginx并沒有自帶針對負(fù)載均衡后端節(jié)點的健康檢查功能,但是可以通過默認(rèn)自帶的ngx_http_proxy_module 模塊和ngx_http_upstream_module模塊中的相關(guān)指令來完成當(dāng)后端節(jié)點出現(xiàn)故障時,自動切換到健康節(jié)點。
0x01:ngx_http_proxy_module模塊
proxy_connect_timeout 指令
語 法: proxy_connect_timeout time;
默認(rèn)值: proxy_connect_timeout 60s;
上下文: http, server, location
該指令的功能是設(shè)置與后端服務(wù)器建立連接的超時時間。應(yīng)該注意超時一般不可能大于75秒。
proxy_read_timeout指令
語 法: proxy_read_timeout time;
默認(rèn)值: proxy_read_timeout 60s;
上下文: http, server, location
定義從后端服務(wù)器讀取響應(yīng)的超時時間。該超時是指相鄰兩次讀操作之間的最長時間間隔,而不是整個響應(yīng)傳輸完成的最長時間。如果后端服務(wù)器在超時時間段內(nèi)沒有傳輸任何數(shù)據(jù),則連接將被關(guān)閉。
proxy_next_upstream指令
語 法: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 |http_404 | off ...;
默認(rèn)值: proxy_next_upstream error timeout;
上下文: http, server, location
指定在何種情況下一個失敗的請求應(yīng)該被發(fā)送到下一臺后端服務(wù)器節(jié)點。
error:Nginx與后端服務(wù)器建立連接時;或者向后端服務(wù)器發(fā)送請求時;或者從后端服務(wù)器接收響應(yīng)頭時,出現(xiàn)錯誤
timeout:和后端服務(wù)器建立連接時;或者向后端服務(wù)器發(fā)送請求時;或者從后端服務(wù)器接收響應(yīng)頭時,出現(xiàn)超時
invalid_header:后端服務(wù)器返回空響應(yīng)或者非法響應(yīng)頭
http_500:后端服務(wù)器返回的響應(yīng)狀態(tài)碼為500
http_502:后端服務(wù)器返回的響應(yīng)狀態(tài)碼為502
http_503:后端服務(wù)器返回的響應(yīng)狀態(tài)碼為503
http_504:后端服務(wù)器返回的響應(yīng)狀態(tài)碼為504
http_404 :后端服務(wù)器返回的響應(yīng)狀態(tài)碼為404
off :停止將請求發(fā)送給下一臺后端服務(wù)器
需要理解一點的是,只有在沒有向客戶端發(fā)送任何數(shù)據(jù)之前,將請求轉(zhuǎn)給下一臺后端服務(wù)器才是可行的。也就是說,如果在傳輸響應(yīng)到客戶端時出現(xiàn)錯誤或者超時,這類錯誤是不可能恢復(fù)的。
例子:
http {
proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
}
0x02:ngx_http_upstream_module模塊
server指令
語 法: server address [parameters];
默認(rèn)值: —
上下文: upstream
max_fails=number:設(shè)定Nginx與服務(wù)器通信的嘗試失敗的次數(shù)。在fail_timeout參數(shù)定義的時間段內(nèi),如果失敗的次數(shù)達(dá)到此值,Nginx就認(rèn)為服務(wù)器不可用。在下一個fail_timeout時間段,服務(wù)器不會再被嘗試。失敗的嘗試次數(shù)默認(rèn)是1。設(shè)為0就會停止統(tǒng)計嘗試次數(shù),認(rèn)為服務(wù)器是一直可用的??梢酝ㄟ^指令proxy_next_upstream、fastcgi_next_upstream和 memcached_next_upstream來配置什么是失敗的嘗試。默認(rèn)配置時,http_404狀態(tài)不被認(rèn)為是失敗的嘗試。
fail_timeout=time:設(shè)定服務(wù)器被認(rèn)為不可用的時間段以及統(tǒng)計失敗嘗試次數(shù)的時間段。在這段時間中,服務(wù)器失敗次數(shù)達(dá)到指定的嘗試次數(shù),服務(wù)器就被認(rèn)為不可用。默認(rèn)情況下,該超時時間是10秒。
例子:
upstream name {
server 192.168.1.110:8081 max_fails=3 fail_timeout=60s;
server 192.168.1.122:8082 max_fails=3 fail_timeout=60s;
}
采用這個方式需要注意的一點是,如果后端有不健康節(jié)點,負(fù)載均衡器依然會先把該請求轉(zhuǎn)發(fā)給該不健康節(jié)點,然后再轉(zhuǎn)發(fā)給別的節(jié)點,這樣就會浪費一次轉(zhuǎn)發(fā)。
到此,相信大家對“Nginx后端健康檢查的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!