nginx對後端節點的健康檢查
最近梳理了下手頭的業務,發現nginx層配有幾種健康檢查方式,在這裏做個總結,記錄下nginx做負載均衡時對後端節點的健康檢查方式:
1、ngx_http_proxy_module 模塊中的下面三個指令(nginx自帶模塊)
proxy_connect_timeout 60s
設置與後端服務器建立連接的超時時間。應該註意這個超時一般不可能大於75秒
proxy_read_timeout 60s
定義從後端服務器讀取響應的超時。此超時是指相鄰兩次讀操作之間的最長時間間隔,而不是整個響應傳輸完成的最長時間。如果後端服務器在超時時間段內沒有傳輸任何數據,連接將被關閉。
proxy_next_upstream error timeout;
指定在何種情況下一個失敗的請求應該被發送到下一臺後端服務器
2、ngx_http_upstream_module模塊中的server指令 (nginx自帶模塊)
采用這個方式需要註意的一點是,如果後端有不健康節點,負載均衡器依然會先把該請求轉發給該不健康節點,然後再轉發給別的節點,這樣就會浪費一次轉發。
範例:
upstream name {
server 10.0.0.1:80 max_fails=1 fail_timeout=10s;
server 10.0.0.2:80 max_fails=1 fail_timeout=10s;
}
PS:下面是每個指令的介紹:
max_fails=number # 設定Nginx與服務器通信的嘗試失敗的次數。在fail_timeout參數定義的時間段內,如果失敗的次數達到此值,Nginx就認為服務器不可用。在下一個fail_timeout時間段,服務器不會再被嘗試。
fail_timeout=time # 設定服務器被認為不可用的時間段以及統計失敗嘗試次數的時間段。在這段時間中,服務器失敗次數達到指定的嘗試次數,服務器就被認為不可用。默認情況下,該超時時間是10秒。
weight=number #權重值
backup #備份機的標誌
down #標明改節點不可用
ip_hash; #會話保持功能,將客戶端的多次請求定向到組內的同一臺服務器,保障C/S之間建立穩定的會話
keepalive connections; #控制網絡連接的保持功能
3、nginx_upstream_check_module模塊(非nginx自帶)
這個是淘寶技術團隊開發的nginx_upstream_check_module,是一個專業提供負載均衡器內節點的健康檢查的。如果後端節點不可用,則所以的請求就不會轉發到該節點上。使用這種檢查方式,通過補丁的方式來添加該模塊到自己的 nginx 中。(添加方式此處忽略)
範例:
upstream name {
server 10.0.0.1:80;
server 10.0.0.2:80;
check interval=300 rise=2 fall=5 timeout=1000 type=tcp port81;
}
上面 配置的意思是,對name這個負載均衡條目中的所有節點,每個300毫秒檢測一次,請求2次正常則標記 realserver狀態為up,如果檢測 5 次都失敗,則標記 realserver的狀態為down,超時時間為1秒。
健康檢查包的類型是tcp類型,端口是81。
本文出自 “10620401” 博客,請務必保留此出處http://10630401.blog.51cto.com/10620401/1961172
nginx對後端節點的健康檢查