詳解如何通過nginx進(jìn)行服務(wù)的負(fù)載均衡
簡(jiǎn)單介紹
隨著互聯(lián)網(wǎng)的發(fā)展,業(yè)務(wù)流量越來越大并且業(yè)務(wù)邏輯也越來越復(fù)雜,單臺(tái)服務(wù)器的性能及單點(diǎn)故障問題就凸顯出來了,因此需要多臺(tái)服務(wù)器組成應(yīng)用集群,進(jìn)行性能的水平擴(kuò)展以及避免單點(diǎn)故障的出現(xiàn)。應(yīng)用集群是將同一應(yīng)用部署到多臺(tái)機(jī)器上,組成應(yīng)用集群,接收負(fù)載均衡器分發(fā)的請(qǐng)求,進(jìn)行業(yè)務(wù)處理并返回響應(yīng)數(shù)據(jù)。負(fù)載均衡器可以將用戶請(qǐng)求根據(jù)對(duì)應(yīng)的負(fù)載均衡算法分發(fā)到應(yīng)用集群中的一臺(tái)服務(wù)器進(jìn)行處理。
負(fù)載均衡器
我們可以通過nginx作為負(fù)載均衡器,實(shí)現(xiàn)負(fù)載均衡的功能
1.首先我們需要準(zhǔn)備Linux系統(tǒng),并啟動(dòng)nginx服務(wù),并在服務(wù)器上啟動(dòng)兩個(gè)java web的spring boot項(xiàng)目,其中一個(gè)web服務(wù)的端口是8080,另一個(gè)web服務(wù)的端口是8081,并將服務(wù)正常啟動(dòng)
2.在nginx中配置負(fù)載均衡器
打開nginx的配置文件nginx.conf并增加如下配置信息
# upstream指令可以定義一組服務(wù)器 upstream study-balance-server { server 192.168.xxx.xxx:8080; server 192.168.xxx.xxx:8081; } server { location /study-balance/ { # 反向代理配置,將請(qǐng)求轉(zhuǎn)發(fā)到指定的服務(wù) proxy_pass http://study-balance-server; } }
3.重新加載nginx配置文件
sudo ./nginx -t sudo ./nginx -s reload
4.瀏覽器測(cè)試訪問
訪問查看web項(xiàng)目的日志信息或者其他標(biāo)記可以區(qū)分當(dāng)前項(xiàng)目訪問的是那臺(tái)端口的服務(wù):http://服務(wù)器ip地址/study-balance/
本示例中通過訪問時(shí)日志的打印時(shí)間順序可以知道負(fù)載均衡已經(jīng)正常啟動(dòng)
負(fù)載均衡的策略
1.nginx默認(rèn)策略是輪詢,詳細(xì)信息如下
名稱 | 說明 | 特點(diǎn) |
---|---|---|
輪詢 | 默認(rèn)方式 | |
weight | 權(quán)重方式 | 根據(jù)權(quán)重分發(fā)請(qǐng)求,權(quán)重大的分配到請(qǐng)求的概率大 |
ip_hash | 依據(jù)ip分配方式 | 根據(jù)客戶端請(qǐng)求的IP地址計(jì)算hash值, 根據(jù)hash值來分發(fā)請(qǐng)求, 同一個(gè)IP發(fā)起的請(qǐng)求, 會(huì)發(fā)轉(zhuǎn)發(fā)到同一個(gè)服務(wù)器上 |
least_conn | 依據(jù)最少連接方式 | 哪個(gè)服務(wù)器當(dāng)前處理的連接少, 請(qǐng)求優(yōu)先轉(zhuǎn)發(fā)到這臺(tái)服務(wù)器 |
url_hash | 依據(jù)url分配方式 | 根據(jù)客戶端請(qǐng)求url的hash值,來分發(fā)請(qǐng)求, 同一個(gè)url請(qǐng)求, 會(huì)發(fā)轉(zhuǎn)發(fā)到同一個(gè)服務(wù)器上 |
fair | 依據(jù)響應(yīng)時(shí)間方式 | 優(yōu)先把請(qǐng)求分發(fā)給處理請(qǐng)求時(shí)間短的服務(wù)器 |
2.示例權(quán)重配置
# upstream指令可以定義一組服務(wù)器 upstream study-balance-server { server 192.168.xxx.xxx:8080 weight=10; server 192.168.xxx.xxx:8081 weight=5; }
配置的weight權(quán)重是相對(duì)的,在上述的配置中,效果就是在大數(shù)據(jù)量的請(qǐng)求下,最終8080接收的請(qǐng)求數(shù)是8081的兩倍
3.示例依據(jù)ip分配方式
# upstream指令可以定義一組服務(wù)器 upstream study-balance-server { ip_hash; server 192.168.xxx.xxx:8080; server 192.168.xxx.xxx:8081; }
指定負(fù)載均衡器按照基于客戶端IP的分配方式,這個(gè)方法確保了相同的客戶端的請(qǐng)求一直發(fā)送到相同的服務(wù)器,以保證session會(huì)話。這樣每個(gè)訪客都固定訪問一個(gè)后端服務(wù)器,可以解決session不能跨服務(wù)器的問題
以上就是詳解如何通過nginx進(jìn)行服務(wù)的負(fù)載均衡的詳細(xì)內(nèi)容,更多關(guān)于nginx負(fù)載均衡的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié)
configmap可以通過ENV環(huán)境變量和文件兩種方式掛載到容器中,修改configmap后容器中對(duì)應(yīng)的ENV環(huán)境變量不會(huì)更新,將配置文件nginx.conf以configmap文件的方式掛載到容器中,本文介紹ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié),感興趣的朋友一起看看吧2024-03-03Docker Nginx容器和Tomcat容器實(shí)現(xiàn)負(fù)載均衡與動(dòng)靜分離操作
這篇文章主要介紹了Docker Nginx容器和Tomcat容器實(shí)現(xiàn)負(fù)載均衡與動(dòng)靜分離操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11基于nginx的靜態(tài)網(wǎng)頁(yè)部署的實(shí)現(xiàn)
這篇文章主要介紹了基于nginx的靜態(tài)網(wǎng)頁(yè)部署的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06Nginx 解決WebApi跨域二次請(qǐng)求以及Vue單頁(yè)面的問題
下面小編就為大家分享一篇Nginx 解決WebApi跨域二次請(qǐng)求以及Vue單頁(yè)面的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01Nginx反向代理中出現(xiàn)502錯(cuò)誤的解決步驟
反向代理是一種服務(wù)器代理的方式,它代理了客戶端的請(qǐng)求并將請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)器,然后將后端服務(wù)器的響應(yīng)返回給客戶端,但經(jīng)常會(huì)遇到502錯(cuò)誤,所以本文給大家介紹了Nginx反向代理中出現(xiàn)502錯(cuò)誤的解決步驟,需要的朋友可以參考下2025-03-03配置Nginx出現(xiàn)403(Forbidden)靜態(tài)文件加載不出來的解決方法
本文主要介紹了配置Nginx出現(xiàn)403(Forbidden)靜態(tài)文件加載不出來的解決方法,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12