nginx負載均衡配置,宕機自動切換方式
嚴格來說,nginx自帶是沒有針對負載均衡后端節(jié)點的健康檢查的,但是可以通過默認自帶的ngx_http_proxy_module模塊和ngx_http_upstream_module模塊中的相關指令來完成當后端節(jié)點出現(xiàn)故障時,自動切換到健康節(jié)點來提供訪問。
下面列出這兩個模塊中相關的指令:
語法: proxy_connect_timeout time;
默認值: proxy_connect_timeout 60s;
設置與后端服務器建立連接的超時時間。應該注意這個超時一般不可能大于75秒。
語法: proxy_read_timeout time;
默認值: proxy_read_timeout 60s;
定義從后端服務器讀取響應的超時。此超時是指相鄰兩次讀操作之間的最長時間間隔,而不是整個響應傳輸完成的最長時間。如果后端服務器在超時時間段內沒有傳輸任何數(shù)據(jù),連接將被關閉。
利用nginx_upstream_check_module模塊對后端節(jié)點做健康檢查
這個就是淘寶技術團隊開發(fā)的nginx模塊。大家可以訪問淘寶tengine的官網(wǎng)http://tengine.taobao.org來獲取該版本的nginx。
在nginx.conf配置文件里面的upstream加入健康檢查,如下:
upstream name { server 192.168.0.21:80; server 192.168.0.22:80; check interval=3000 rise=2 fall=5 timeout=1000 type=http; }
上面配置的意思是,對name這個負載均衡條目中的所有節(jié)點,每個3秒檢測一次,請求2次正常則標記
realserver狀態(tài)為up,如果檢測 5 次都失敗,則標記 realserver的狀態(tài)為down,超時時間為1秒。
這里列出nginx_upstream_check_module模塊所支持的指令意思:
Syntax: check interval=milliseconds [fall=count] [rise=count] [timeout=milliseconds] [default_down=true|false] [type=tcp|http|ssl_hello|mysql|ajp] [port=check_port]
Default: 如果沒有配置參數(shù),默認值是:
interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcp
Context: upstream
該指令可以打開后端服務器的健康檢查功能。
指令后面的參數(shù)意義是:
interval:向后端發(fā)送的健康檢查包的間隔。
fall(fall_count): 如果連續(xù)失敗次數(shù)達到fall_count,服務器就被認為是down。
rise(rise_count): 如果連續(xù)成功次數(shù)達到rise_count,服務器就被認為是up。
timeout: 后端健康請求的超時時間。
default_down: 設定初始時服務器的狀態(tài),如果是true,就說明默認是down的,如果是false,就是up的。默認值是true,也就是一開始服務器認為是不可用,要等健康檢查包達到一定成功次數(shù)以后才會被認為是健康的。
type:健康檢查包的類型,現(xiàn)在支持以下多種類型
tcp:簡單的tcp連接,如果連接成功,就說明后端正常。
ssl_hello:發(fā)送一個初始的SSL hello包并接受服務器的SSL hello包。
http:發(fā)送HTTP請求,通過后端的回復包的狀態(tài)來判斷后端是否存活。
mysql: 向mysql服務器連接,通過接收服務器的greeting包來判斷后端是否存活。
ajp:向后端發(fā)送AJP協(xié)議的Cping包,通過接收Cpong包來判斷后端是否存活。
port: 指定后端服務器的檢查端口。
你可以指定不同于真實服務的后端服務器的端口,比如后端提供的是443端口的應用,你可以去檢查80端口的狀態(tài)來判斷后端健康狀況。
默認是0,表示跟后端server提供真實服務的端口一樣。
該選項出現(xiàn)于Tengine-1.4.0。
補充知識:nginx超時自動重發(fā)
1、現(xiàn)象:
使用nginx做負載后,如果url響應超過一定時間(一般是10分鐘)后,請求會自動重發(fā)到另一臺機器;
2、原因:
在nignxi中,超時自動重發(fā),默認是開啟的,需要關閉配置。
3、解決方案:
nginx中增加配置:
proxy_next_upstream off;
以上這篇nginx負載均衡配置,宕機自動切換方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
通過Nginx的proxy_set_header設置請求頭無效的解決
這篇文章主要介紹了通過Nginx的proxy_set_header設置請求頭無效的解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12nginx配置proxy_pass代理轉發(fā)時報404問題
這篇文章主要介紹了nginx配置proxy_pass代理轉發(fā)時報404問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01