nginx 一个请求发给多台机器_配置Nginx实现负载均衡
企業(yè)在解決高并發(fā)問(wèn)題時(shí),一般有兩個(gè)方向的處理策略,軟件、硬件,硬件上添加負(fù)載均衡器分發(fā)大量請(qǐng)求,軟件上可在高并發(fā)瓶頸處:數(shù)據(jù)庫(kù)+web服務(wù)器兩處添加解決方案,其中web服務(wù)器前面一層最常用的的添加負(fù)載方案就是使用nginx實(shí)現(xiàn)負(fù)載均衡。
?一、負(fù)載均衡的作用
1、轉(zhuǎn)發(fā)功能
按照一定的算法【權(quán)重、輪詢(xún)】,將客戶(hù)端請(qǐng)求轉(zhuǎn)發(fā)到不同應(yīng)用服務(wù)器上,減輕單個(gè)服務(wù)器壓力,提高系統(tǒng)并發(fā)量。
2、故障移除
通過(guò)心跳檢測(cè)的方式,判斷應(yīng)用服務(wù)器當(dāng)前是否可以正常工作,如果服務(wù)器期宕掉,自動(dòng)將請(qǐng)求發(fā)送到其他應(yīng)用服務(wù)器。
3、恢復(fù)添加
如檢測(cè)到發(fā)生故障的應(yīng)用服務(wù)器恢復(fù)工作,自動(dòng)將其添加到處理用戶(hù)請(qǐng)求隊(duì)伍中。
二、Nginx實(shí)現(xiàn)負(fù)載均衡
同樣使用兩個(gè)tomcat模擬兩臺(tái)應(yīng)用服務(wù)器,端口號(hào)分別為8080 和8081。
1、Nginx的負(fù)載分發(fā)策略
Nginx 的 upstream目前支持的分配算法:?
輪詢(xún)?——1:1 輪流處理請(qǐng)求(默認(rèn))
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的應(yīng)用服務(wù)器,如果應(yīng)用服務(wù)器down掉,自動(dòng)剔除,剩下的繼續(xù)輪詢(xún)。?
權(quán)重?——you can you up
通過(guò)配置權(quán)重,指定輪詢(xún)幾率,權(quán)重和訪(fǎng)問(wèn)比率成正比,用于應(yīng)用服務(wù)器性能不均的情況。?
ip_哈希算法
每個(gè)請(qǐng)求按訪(fǎng)問(wèn)ip的hash結(jié)果分配,這樣每個(gè)訪(fǎng)客固定訪(fǎng)問(wèn)一個(gè)應(yīng)用服務(wù)器,可以解決session共享的問(wèn)題。?
2、配置Nginx的負(fù)載均衡與分發(fā)策略
通過(guò)在upstream參數(shù)中添加的應(yīng)用服務(wù)器IP后添加指定參數(shù)即可實(shí)現(xiàn),如:
upstream tomcatserver1 { server 192.168.72.49:8080 weight=3; server 192.168.72.49:8081; } server { listen 80; server_name 8080.max.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcatserver1; index index.html index.htm; } }通過(guò)以上配置,便可以實(shí)現(xiàn),在訪(fǎng)問(wèn)8080.max.com這個(gè)網(wǎng)站時(shí),由于配置了proxy_pass地址,所有請(qǐng)求都會(huì)先通過(guò)nginx反向代理服務(wù)器,在服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)給目的主機(jī)時(shí),讀取upstream為 tomcatsever1的地址,讀取分發(fā)策略,配置tomcat1權(quán)重為3,所以nginx會(huì)將大部分請(qǐng)求發(fā)送給49服務(wù)器上的tomcat1,也就是8080端口;較少部分給tomcat2來(lái)實(shí)現(xiàn)有條件的負(fù)載均衡,當(dāng)然這個(gè)條件就是服務(wù)器1、2的硬件指數(shù)處理請(qǐng)求能力。?
3、nginx其他配置
upstream myServer { server 192.168.72.49:9090 down; server 192.168.72.49:8080 weight=2; server 192.168.72.49:6060; server 192.168.72.49:7070 backup;}down
表示單前的server暫時(shí)不參與負(fù)載
?Weight
?默認(rèn)為1.weight越大,負(fù)載的權(quán)重就越大。
?max_fails
?允許請(qǐng)求失敗的次數(shù)默認(rèn)為1.當(dāng)超過(guò)最大次數(shù)時(shí),返回proxy_next_upstream 模塊定義的錯(cuò)誤
?fail_timeout
?max_fails 次失敗后,暫停的時(shí)間。
?Backup
?其它所有的非backup機(jī)器down或者忙的時(shí)候,請(qǐng)求backup機(jī)器。所以這臺(tái)機(jī)器壓力會(huì)最輕。
三、使用Nginx的高可用?
除了要實(shí)現(xiàn)網(wǎng)站的高可用,也就是提供n多臺(tái)服務(wù)器用于發(fā)布相同的服務(wù),添加負(fù)載均衡服務(wù)器分發(fā)請(qǐng)求以保證在高并發(fā)下各臺(tái)服務(wù)器能相對(duì)飽和的處理請(qǐng)求。
同樣,負(fù)載均衡服務(wù)器也需要高可用,以防如果負(fù)載均衡服務(wù)器掛掉了,后面的應(yīng)用服務(wù)器也紊亂無(wú)法工作。
實(shí)現(xiàn)高可用的方案:添加冗余。添加n臺(tái)nginx服務(wù)器以避免發(fā)生上述單點(diǎn)故障。
四、總結(jié)
總結(jié)一點(diǎn),負(fù)載均衡不論是各種軟件或硬件上的解決方案,主要還是將大量的并發(fā)請(qǐng)求按照一定的規(guī)律分發(fā)給不同的服務(wù)器處理,從而減少某臺(tái)服務(wù)器的瞬時(shí)壓力,提高網(wǎng)站的抗并發(fā)能力。
nginx在負(fù)載均衡的應(yīng)用之所以廣泛,筆者認(rèn)為這歸功于它的靈活配置,一個(gè)nginx.conf文件解決大部分問(wèn)題,不論是nignx創(chuàng)建虛擬服務(wù)器、nginx的反向代理服務(wù)器,還是本文介紹的nginx的負(fù)載均衡,幾乎都在這個(gè)配置文件中進(jìn)行。
服務(wù)器上只負(fù)責(zé)把nginx搭好,跑起來(lái)即可。而且它本身輕量級(jí),不需要占用服務(wù)器太多資源就可以達(dá)到較好的效果,膩害。
來(lái)源:https://blog.csdn.net/Daybreak1209/article/details/51554045·END·
PHP開(kāi)源社區(qū)進(jìn)階·提升·漲薪總結(jié)
以上是生活随笔為你收集整理的nginx 一个请求发给多台机器_配置Nginx实现负载均衡的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: g100显卡 linux驱动,nvidi
- 下一篇: 堆排序时间复杂度_图解堆结构、堆排序及堆