nginx負載均衡策略

Nginx 提供輪詢(round robin)、用戶 IP 哈希(client IP)和指定權重 3 種方式。

輪詢方式

默認選項,當weight不指定時,各服務器weight相同, 每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。

upstream bakend {

server 10.11.0.1;

server 10.11.0.2;

server 10.11.0.3;

}

ip hash方式

默認情況下,Nginx 會爲你提供輪詢作爲負載均衡策略。但是這並不一定能夠讓你滿意。比如,某一時段內的一連串訪問都是由同一個用戶A發起的,那麼第一次 A 的請求可能是 10.11.0.1,而下一次可能是 10.11.0.2, 在大多數應用場景中,這樣並不高效。當然,也正因如此,Nginx 爲你提供了一個按照用戶的 IP 來 hash 的方式,這樣每個 client 的訪問請求都會被甩給同一個後端服務器。具體的使用方式如下:

upstream backend {

ip_hash;

server 10.11.0.1;

server 10.11.0.2;

server 10.11.0.3;

}

這種策略中,用於進行 hash 運算的 key,是 client 的 C 類 IP 地址(C 類 IP 地址就是範圍在 192.0.0.0 到 223.255.255.255 之間,前三段號碼錶示子網,第四段號碼爲本地主機的 IP 地址類別)。這樣的方式保證一個 client 每次請求都將到達同一個 server。當然,如果所 hash 到的 server 當前不可用,則請求會被轉移到其他server。

權重方式

還可以使用指定權重(weight)的方式,如下:

upstream backend {

server 10.11.0.1;

server 10.11.0.2 weight=4;

}

默認情況下 weight 爲 1,對於上面的例子,第一個 server 的權重取默認值 1,第二個是 4,所以相當於第一個 server 接收 20% 的請求,第二接收 80% 的。要注意的是 weight 與 ip_hash 是不能同時使用的,原因很簡單,他們是不同且彼此衝突的策略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章