一蕊温、什么是HTTP Upstream模塊扒磁?
Upstream模塊是Nginx服務(wù)器的一個(gè)重要模塊庆揪。Upstream模塊實(shí)現(xiàn)在輪詢(xún)和客戶(hù)端ip之間實(shí)現(xiàn)后端的負(fù)載均衡。(意思就是說(shuō):客戶(hù)端ip請(qǐng)求到服務(wù)端的時(shí)候妨托,會(huì)從upstream的ip列表中從上到下逐個(gè)輪詢(xún)缸榛,輪詢(xún)到最后一個(gè)的時(shí)候,會(huì)重新跳到第一個(gè)ip兰伤,再次進(jìn)行輪詢(xún)選擇)
二内颗、ip_hash指令:
1、簡(jiǎn)介:
在負(fù)載均衡系統(tǒng)中医清,假如用戶(hù)在某臺(tái)服務(wù)器上登錄起暮,那么如果該用戶(hù)第二次請(qǐng)求的時(shí)候,因?yàn)槲覀兪秦?fù)載均衡系統(tǒng)会烙,每次請(qǐng)求都會(huì)重新定位到服務(wù)器集群中的一個(gè)服務(wù)器,那么此時(shí)如果將已經(jīng)登錄服務(wù)器A的用戶(hù)在定位到其他服務(wù)器筒捺,顯然不妥柏腻。故而,我們可以采用ip_hash指令解決這個(gè)問(wèn)題系吭,如果客戶(hù)端請(qǐng)求已經(jīng)訪(fǎng)問(wèn)了服務(wù)器A并登陸五嫂,那么第二次請(qǐng)求的時(shí)候,會(huì)將該請(qǐng)求通過(guò)哈希算法自動(dòng)定位到該后端服務(wù)器中肯尺。
2沃缘、配置:
http {
#設(shè)置帶負(fù)載均衡的ip列表,一般是服務(wù)器集群中的那些子服務(wù)器的ip地址
upstream mypro {
ip_hash;
server 182.18.79.243;
server 140.205.140.234;
}
server {
listen 8080;
location / {
proxy_pass http://mypro;
}
}
}
上述代碼中ip_hash
那句話(huà)就可實(shí)現(xiàn)用戶(hù)不管登錄幾次都不會(huì)因?yàn)樨?fù)載均衡而亂了陣腳则吟,都會(huì)自動(dòng)定位到上次登錄的那個(gè)服務(wù)器槐臀,而不同用戶(hù)登錄則依舊會(huì)實(shí)現(xiàn)負(fù)載均衡的效果。*
三氓仲、Server指令的權(quán)重
http {
#設(shè)置帶負(fù)載均衡的ip列表水慨,一般是服務(wù)器集群中的那些子服務(wù)器的ip地址
upstream mypro {
#ip_hash;
#weight:權(quán)重。默認(rèn)是1.數(shù)字越大敬扛,權(quán)重越大晰洒。
#權(quán)重越大,被訪(fǎng)問(wèn)到的概率越大啥箭。
server 182.18.79.243 weight=2;
server 140.205.140.234;
}
server {
listen 8080;
location / {
proxy_pass http://mypro;
}
}
}
注意:要想實(shí)現(xiàn)權(quán)重谍珊,則必須注釋掉ip_hash,因?yàn)閕p_hash同一個(gè)用戶(hù)每次都訪(fǎng)問(wèn)同一個(gè)服務(wù)器急侥,這點(diǎn)與權(quán)重沖突砌滞。上述的權(quán)重意思是:182.18.79.243 這個(gè)ip被訪(fǎng)問(wèn)到的幾率是三分之二炼七。而下面那個(gè)ip為三分之一。
四布持、upstream指令及相關(guān)變量
upstream指令主要是用于設(shè)置一組可以在proxy_pass和fastcgi_pass指令中使用代理服務(wù)器豌拙,默認(rèn)負(fù)載均衡方式為輪詢(xún)。
若有興趣题暖,歡迎來(lái)加入群按傅,【Java初學(xué)者學(xué)習(xí)交流群】:458430385,此群有Java開(kāi)發(fā)人員胧卤、UI設(shè)計(jì)人員和前端工程師唯绍。有問(wèn)必答,共同探討學(xué)習(xí)枝誊,一起進(jìn)步况芒!
歡迎關(guān)注我的微信公眾號(hào)【Java碼農(nóng)社區(qū)】,會(huì)定時(shí)推送各種干貨: