1. 程式人生 > >nginx對後端節點的健康檢查

nginx對後端節點的健康檢查

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對後端節點的健康檢查