nginx負(fù)載均衡配置
配置環(huán)境
本地配置三臺(tái)docker容器分別命名為web1、web2涌哲、和Qd(前端機(jī))训挡,web1、web2擔(dān)任web服務(wù)器鼻种,Qd擔(dān)負(fù)前端負(fù)責(zé)均衡前端機(jī)負(fù)責(zé)分發(fā)請(qǐng)求反番。
反向代理配置
修改nginx配置文件
配置文件中的web1為host名,已添加到host中
location / {
proxy_pass http://web1; // 代理地址
}
驗(yàn)證nginx配置文件是否正確
root@0334777e7f92:/etc/nginx/conf.d# nginx -t
重新加載nginx配置文件
root@0334777e7f92:/etc/nginx/conf.d# service nginx reload
訪問Qd機(jī)的nginx服務(wù)叉钥,將被跳轉(zhuǎn)到web1服務(wù)器上
配置負(fù)責(zé)均衡
在反向代理的基礎(chǔ)上進(jìn)行負(fù)載均衡配置罢缸,添加upstream模塊
upstream test.net{
ip_hash; ## 調(diào)度算法
server 192.168.10.13:80; 服務(wù)列表
server 192.168.10.14:80 down;
server 192.168.10.15:8009 max_fails=3 fail_timeout=20s;
server 192.168.10.16:8080;
}
- upstream 支持的負(fù)載均衡算法
Nginx的負(fù)載均衡模塊目前支持4種調(diào)度算法,下面進(jìn)行分別介紹投队,其中后兩項(xiàng)屬于第三方調(diào)度算法祖能。
輪詢(默認(rèn))。每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器蛾洛,如果后端某臺(tái)服務(wù)器宕機(jī)养铸,故障系統(tǒng)被自動(dòng)剔除,使用戶訪問不受影響轧膘。
Weight 指定輪詢權(quán)值钞螟,Weight值越大,分配到的訪問機(jī)率越高谎碍,主要用于后端每個(gè)服務(wù)器性能不均的情況下鳞滨。
ip_hash。每個(gè)請(qǐng)求按訪問IP的hash結(jié)果分配蟆淀,這樣來(lái)自同一個(gè)IP的訪客固定訪問一個(gè)后端服務(wù)器拯啦,有效解決了動(dòng)態(tài)網(wǎng)頁(yè)存在的session共享問題澡匪。
fair。這是比上面兩個(gè)更加智能的負(fù)載均衡算法褒链。此種算法可以依據(jù)頁(yè)面大小和加載時(shí)間長(zhǎng)短智能地進(jìn)行負(fù)載均衡唁情,也就是根據(jù)后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配甫匹。Nginx本身是不支持fair的甸鸟,如果需要使用這種調(diào)度算法,必須下載Nginx的upstream_fair模塊兵迅。
url_hash抢韭。此方法按訪問url的hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器恍箭,可以進(jìn)一步提高后端緩存服務(wù)器的效率刻恭。Nginx本身是不支持url_hash的,如果需要使用這種調(diào)度算法扯夭,必須安裝Nginx 的hash軟件包吠各。
- upstream 支持的狀態(tài)參數(shù)
在HTTP Upstream模塊中,可以通過server指令指定后端服務(wù)器的IP地址和端口勉抓,同時(shí)還可以設(shè)定每個(gè)后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)。常用的狀態(tài)有:
down候学,表示當(dāng)前的server暫時(shí)不參與負(fù)載均衡藕筋。
backup,預(yù)留的備份機(jī)器梳码。當(dāng)其他所有的非backup機(jī)器出現(xiàn)故障或者忙的時(shí)候隐圾,才會(huì)請(qǐng)求backup機(jī)器,因此這臺(tái)機(jī)器的壓力最輕掰茶。
max_fails暇藏,允許請(qǐng)求失敗的次數(shù),默認(rèn)為1濒蒋。當(dāng)超過最大次數(shù)時(shí)盐碱,返回proxy_next_upstream 模塊定義的錯(cuò)誤。
fail_timeout沪伙,在經(jīng)歷了max_fails次失敗后瓮顽,暫停服務(wù)的時(shí)間。max_fails可以和fail_timeout一起使用围橡。
注暖混,當(dāng)負(fù)載調(diào)度算法為ip_hash時(shí),后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)不能是weight和backup翁授。
- 配置負(fù)載均衡
root@0334777e7f92:/etc/nginx/conf.d# vim default.conf
upstream webservers {
server web1;
server web2;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
proxy_pass http://webservers;
proxy_set_header X-Real-IP $remote_addr;
}
驗(yàn)證nginx配置文件是否正確
root@0334777e7f92:/etc/nginx/conf.d# nginx -t
重新加載nginx配置文件
root@0334777e7f92:/etc/nginx/conf.d# service nginx reload
訪問Qd機(jī)拣播,刷新頁(yè)面晾咪,將會(huì)輪訓(xùn)分不到其他服務(wù)機(jī)上