配置實例
upstream model{
ip_hash;
server www.aaa.cn;
server zb.bbb.cn;
}
server
{
listen 80;
#listen [::]:80;
server_name www.ning.com;
#root /home/wwwroot/a;
#include enable-php.conf;
location / {
proxy_pass http://model/;
proxy_set_header Host $proxy_host;
}
}
【說明】配置項加載在域名配置文件nginx.conf中
權重分配方式
- 1.輪詢
每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。
upstream model{
server www.aaa.cn;
server www.bbb.cn;
}
- 2.weight (加權輪詢)
指定輪詢機率,weight和訪問比率成正比,用於後端服務器性能不均的情況。
upstream model{
server www.aaa.cn weight=5;
server www.bbb.cn weight=10;
}
[附加說明]
權重配置時,最好後面服務器的權重>前面服務器的權重,否則後面的服務器分配不均,訪問量少,可能導致訪問不到。
- 3.ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器。
可避免session、文件分片上傳等問題。
upstream model{
ip_hash;
server www.aaa.cn;
server www.bbb.cn;
}
[附加說明]
同一臺服務器不建議使用ip_hash,沒有作用(真實情況也不會再同一臺服務器進行負載均衡,哈哈😁)。
- 4.fair[第三方]
fair採用的不是內建負載均衡使用的輪換的均衡算法,而是可以根據頁面大小、加載時間長短智能的進行負載均衡,響應時間短的優先分配。
upstream model{
server www.aaa.cn;
server www.bbb.cn;
fair;
}
[附加說明]
需要安裝 nginx-upstream-fair 模塊
- 5.url_hash[第三方]
同一個url(同一個資源請求)會到達同一臺機器,配合緩存命中來使用。服務器集羣,同一個資源多次請求,可能會到達不同的服務器,導致不必要的多次下載,緩存命中率不高,以及一些資源時間的浪費。爲了使得緩存命中率提高,使用url_hash策略,同一個url(也就是同一個資源請求)會到達同一臺機器,一旦緩存資源,再次收到請求,就可以從緩存中讀取,既減少了帶寬,也減少的下載時間。
配置參數
1.down 表示當前的server暫時不參與負載 。
2.weight 默認爲1,weight越大,負載的權重就越大。
3.max_fails :允許請求失敗的次數默認爲1。
4.fail_timeout:max_fails次失敗後,暫停的時間。
5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。