Nginx的負(fù)載均衡有4種模式:
1)、輪詢(默認(rèn))
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。
2)、weight
指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。
2)、ip_hash
每個(gè)請(qǐng)求按訪問ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器,可以解決session的問題。
3)、fair(第三方)
按后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。
4)、url_hash(第三方)
配置方法:
打開nginx.cnf文件
在http節(jié)點(diǎn)下添加upstream節(jié)點(diǎn):
upstream webname {
server 192.168.0.1:8080;
server 192.168.0.2:8080;
}
其中webname是自己取的名字,最后會(huì)通過這個(gè)名字在url里訪問的,像上面這個(gè)例子一樣什么都不加就是默認(rèn)的輪詢,第一個(gè)請(qǐng)求過來訪問第一個(gè)server,第二個(gè)請(qǐng)求來訪問第二個(gè)server。依次輪著來。
upstream webname {
server 192.168.0.1:8080 weight 2;
server 192.168.0.2:8080 weight 1;
}
這個(gè)weight也很好理解,權(quán)重大的被訪問的概率就大,上面這個(gè)例子的話,訪問2次server1,訪問一次server2
upstream webname {
ip_hash;
server 192.168.0.1:8080;
server 192.168.0.2:8080;
}
ip_hash的配置也很簡單,直接加一行就可以了,這樣只要是同一個(gè)ip過來的都會(huì)到同一臺(tái)server上
然后在server節(jié)點(diǎn)下進(jìn)行配置:
location /name {
proxy_pass http://webname/name/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
proxy_pass里面用上面配的webname代替了原來的ip地址。
這樣就基本完成了負(fù)載均衡的配置。
下面是主備的配置:
還是在upstream里面
upstream webname {
server 192.168.0.1:8080;
server 192.168.0.2:8080 backup;
}
設(shè)置某一個(gè)節(jié)點(diǎn)為backup,那么一般情況下所有請(qǐng)求都訪問server1,當(dāng)server1掛掉或者忙的的時(shí)候才會(huì)訪問server2
upstream webname {
server 192.168.0.1:8080;
server 192.168.0.2:8080 down;
}
設(shè)置某個(gè)節(jié)點(diǎn)為down,那么這個(gè)server不參與負(fù)載。