前言
Nginx作為一款最流行WEB服務(wù)器軟件,同時(shí)也是一款反向代理和負(fù)載均衡軟件。毫不夸張地說(shuō),Nginx在負(fù)載均衡領(lǐng)域絕對(duì)是老大地位,這得益于它的高并發(fā)和穩(wěn)定性。而且在配置使用上也是非常簡(jiǎn)單,維護(hù)也特別容易。那么本篇文章就來(lái)聊聊Nginx作為負(fù)載均衡器,它支持的算法都有哪些?
Nginx支持的算法匯總
Nginx并不像LVS那樣支持多達(dá)10種負(fù)載均衡算法,它默認(rèn)支持4種算法,另外還可以通過(guò)自定義三方模塊來(lái)支持更多的三方算法,下面我只列出來(lái)兩種常見的。
算法 | 說(shuō)明 |
輪詢 | 默認(rèn)的算法,如果配置中不指定就走這個(gè)算法 |
Weight | 帶權(quán)重的輪詢算法,權(quán)重越高被請(qǐng)求的次數(shù)就越多 |
ip_hash | 根據(jù)客戶端IP來(lái)選擇后端服務(wù)器 |
least_conn | 會(huì)將請(qǐng)求優(yōu)先發(fā)送給連接數(shù)最少的后端服務(wù)器 |
fair | 三方模塊,按后端服務(wù)器響應(yīng)時(shí)間來(lái)決策 |
url_hash | 三方模塊,按訪問(wèn)url的hash結(jié)果來(lái)分配請(qǐng)求 |
輪詢
按請(qǐng)求發(fā)來(lái)的順序逐一分配到不同的后端服務(wù)器上,最簡(jiǎn)單最弱智的負(fù)載均衡算法,看似公平,其實(shí)并不好,比如后端某臺(tái)服務(wù)器負(fù)載很高了,那么還是會(huì)雷打不動(dòng)地被動(dòng)接收請(qǐng)求。
配置示例如下:
upstreamaminglinux{ server 192.168.10.11; server 192.168.10.12; }
Weight
相比較默認(rèn)的輪詢算法,這個(gè)Weight多加了一層權(quán)重的概念。就是說(shuō),我們可以人為地給后端服務(wù)器定義權(quán)重。這樣確實(shí)可以保證讓性能更好的服務(wù)器接收更多的請(qǐng)求,正所謂“能者多勞”! 配置示例如下:
upstreamaminglinux{ server 192.168.10.11 weight=1; server 192.168.10.12 weight=3; }說(shuō)明:這個(gè)weight定義的值范圍為1-255,值越大,那么給到的請(qǐng)求就越多。
Ip_hash
當(dāng)使用了負(fù)載均衡后,那么就意味著,同一個(gè)客戶端很有可能第一次訪問(wèn)的是A機(jī)器,而第二次訪問(wèn)的是B機(jī)器,那么這樣就會(huì)導(dǎo)致,訪問(wèn)A機(jī)器時(shí)登錄了,而訪問(wèn)B機(jī)器時(shí)是非登錄狀態(tài)。而這個(gè)算法主要用來(lái)解決此類問(wèn)題。 該算法下,每個(gè)請(qǐng)求按訪問(wèn)IP的哈希結(jié)果分配后端服務(wù)器,使來(lái)自同一個(gè)IP的訪客固定訪問(wèn)一臺(tái)后端服務(wù)器,這樣就解決了上面提到的問(wèn)題,也就是說(shuō)所謂的“session共享問(wèn)題”。
配置示例如下:
upstreamaminglinux{ ip_hash; server192.168.10.11; server192.168.10.12; }
Least_conn
從字面意思上也可以理解,就是將請(qǐng)求優(yōu)先分配給后端服務(wù)器里連接數(shù)最少的服務(wù)器。不過(guò),這個(gè)算法是和weight配合使用的,它有一個(gè)公式:conns/weight,也就是說(shuō)Nginx會(huì)計(jì)算連接數(shù)除以權(quán)重,最終拿這個(gè)值進(jìn)行比對(duì),值越小會(huì)優(yōu)先分配到請(qǐng)求。 配置示例如下:
upstreamaminglinux{ least_con server192.168.10.11 weight=10; server192.168.10.12 weight=5; }
Fair
這是一個(gè)三方的算法,需要在編譯Nginx時(shí)增加nginx-upstream-fair-master模塊支持。該算法可以根據(jù)后端服務(wù)器的響應(yīng)時(shí)間的大小來(lái)決定將請(qǐng)求發(fā)送給誰(shuí),響應(yīng)時(shí)間越快,那么就優(yōu)先拿到請(qǐng)求。 配置示例如下:
upstreamaminglinux{ fair; server192.168.10.11; server192.168.10.12; }
Url_hash
三方的算法,需要在編譯Nginx時(shí)增加ngx_http_upstream_hash_module模塊支持。該算法按訪問(wèn)url的hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器。注意:使用該算法后不能帶weight。 配置示例如下:
upstreamaminglinux{ hash$request_uri; server192.168.10.11; server192.168.10.12; }
審核編輯:劉清
-
LVS
+關(guān)注
關(guān)注
1文章
36瀏覽量
9978 -
Hash算法
+關(guān)注
關(guān)注
0文章
43瀏覽量
7421 -
nginx
+關(guān)注
關(guān)注
0文章
154瀏覽量
12240
原文標(biāo)題:Nginx的負(fù)載均衡算法你知道都有哪些嗎
文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
負(fù)載均衡器的誕生和工作機(jī)制
![<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡器</b>的誕生和工作機(jī)制](https://file1.elecfans.com/web2/M00/BA/D6/wKgZomWWM-CARaMnAAAOkveXeas476.jpg)
如何去實(shí)現(xiàn)OFDM系統(tǒng)中的均衡器算法?
如何提高自適應(yīng)均衡器的性能?
頻率均衡器的調(diào)控技巧
均衡器的使用誤區(qū)
什么是均衡器
基于Harr小波的均衡器結(jié)構(gòu)
![基于Harr小波的<b class='flag-5'>均衡器</b>結(jié)構(gòu)](https://file.elecfans.com/web2/M00/49/35/pYYBAGKhtD-AUFC6AAASPBiosy0248.jpg)
電腦均衡器軟件哪個(gè)好_電腦均衡器怎么設(shè)置才好聽
![電腦<b class='flag-5'>均衡器</b>軟件哪個(gè)好_電腦<b class='flag-5'>均衡器</b>怎么設(shè)置才好聽](https://file.elecfans.com/web1/M00/51/67/pIYBAFsGJw2AAGTWAAB27FFPFKg438.jpg)
全面剖析HAProxy 負(fù)載均衡器
![全面剖析HAProxy <b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡器</b>](https://file.elecfans.com/web2/M00/04/12/poYBAGDZJW6AIKTpAAAPuwmwZWA035.jpg)
評(píng)論