這篇“Nginx+SpringBoot怎么實現(xiàn)負(fù)載均衡”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Nginx+SpringBoot怎么實現(xiàn)負(fù)載均衡”文章吧。
站在用戶的角度思考問題,與客戶深入溝通,找到仁和網(wǎng)站設(shè)計與仁和網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋仁和地區(qū)。
負(fù)載均衡介紹
在介紹nginx的負(fù)載均衡實現(xiàn)之前,先簡單的說下負(fù)載均衡的分類,主要分為硬件負(fù)載均衡和軟件負(fù)載均衡,硬件負(fù)載均衡是使用專門的軟件和硬件相結(jié)合的設(shè)備,設(shè)備商會提供完整成熟的解決方案,比如f5,在數(shù)據(jù)的穩(wěn)定性以及安全性來說非??煽?,但是相比軟件而言造價會更加昂貴;軟件的負(fù)載均衡以nginx這類軟件為主,實現(xiàn)的一種消息隊列分發(fā)機(jī)制。
簡單來說所謂的負(fù)載均衡就是把很多請求進(jìn)行分流,將他們分配到不同的服務(wù)器去處理。比如我有3個服務(wù)器,分別為a、b、c,然后使用nginx進(jìn)行負(fù)載均衡,使用輪詢策略,此時如果收到了9個請求,那么會均勻的將這9個請求分發(fā)給a、b、cf服務(wù)器,每一個服務(wù)器處理3個請求,這樣的話我們可以利用多臺機(jī)器集群的特性減少單個服務(wù)器的壓力。
nginx實現(xiàn)負(fù)載均衡的示例圖:
負(fù)載均衡策略
nginx開源支持四種負(fù)載平衡方法,而nginx plus又增加了兩種方法。
1.round robin:
對所有的請求進(jìn)行輪詢發(fā)送請求,默認(rèn)的分配方式。
nginx.conf 配置示例:
注:上面的域名也可以用ip替代。
2.least connections:
以最少的活動連接數(shù)將請求發(fā)送到服務(wù)器,同樣要考慮服務(wù)器權(quán)重。
nginx.conf 配置示例:
3.ip hash :
發(fā)送請求的服務(wù)器由客戶機(jī)ip地址決定。在這種情況下,使用ipv4地址的前三個字節(jié)或整個ipv6地址來計算散列值。該方法保證來自相同地址的請求到達(dá)相同的服務(wù)器,除非該服務(wù)器不可用。
4.generic hash:
請求發(fā)送到的服務(wù)器由用戶定義的鍵決定,該鍵可以是文本字符串、變量或組合。
5.least time (nginx plus only)
對于每個請求,nginx plus選擇具有最低平均延遲和最低活動連接數(shù)的服務(wù)器,其中最低平均延遲是根據(jù)包含least_time指令的下列參數(shù)計算的:
header : 從服務(wù)器接收第一個字節(jié)的時間。
last_byte: 從服務(wù)器接收完整響應(yīng)的時間。
last_byte inflight:從服務(wù)器接收完整響應(yīng)的時間。
6.random:
每個請求將被傳遞到隨機(jī)選擇的服務(wù)器。如果指定了兩個參數(shù),首先,nginx根據(jù)服務(wù)器權(quán)重隨機(jī)選擇兩個服務(wù)器,然后使用指定的方法選擇其中一個。
least_conn :活動連接的最少數(shù)量
least_time=header (nginx plus):從服務(wù)器接收響應(yīng)標(biāo)頭的最短平均時間 ($upstream_header_time)。
least_time=last_byte (nginx plus) :從服務(wù)器接收完整響應(yīng)的最短平均時間($upstream_response_time)。
nginx+springboot實現(xiàn)負(fù)載均衡
環(huán)境準(zhǔn)備
依賴jdk1.8以上的版本;
依賴nginx環(huán)境;
這里的項目就用本人之前的一個springboot項目,springboot的項目地址: https://github.com/xuwujing/springboot-study/tree/master/springboot-thymeleaf
首先我們下載這個項目,輸入:mvn clean package
將項目進(jìn)行打包為jar文件,然后將application.properties
和此jar項目放在一個文件夾中,然后復(fù)制該文件夾(這里為了清晰所以進(jìn)行復(fù)制,實際不復(fù)制更改端口重啟也行),修改復(fù)制文件夾application.properties
的端口,比如改為8086。
nginx 配置
我們找到nginx的配置文件nginx.conf,該配置在nginx/conf/nginx.conf目錄下,然后我們來修改該配置,新增如下配置:
upstream pancm:定義一個名稱,隨意就行;
server + ip:端口 or 域名;
如果不想使用round robin策略,也可以換成其他的。
然后在server添加/修改如下配置:
配置說明:
server: 虛擬主機(jī)的名稱,一個http中可以配置多個server;
listen:nginx默認(rèn)的端口;
server_name:nginx服務(wù)的地址,可以使用域名,多個用空格分隔。
proxy_pass:代理路徑,一般配置upstream后面的名稱用于實現(xiàn)負(fù)載均衡,可以直接配置ip進(jìn)行跳轉(zhuǎn);
nginx.conf 完整的配置:
負(fù)載均衡測試
在完成nginx配置之后,我們啟動nginx。
linux輸入/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
,如果已經(jīng)啟動可以使用/usr/local/nginx/sbin/nginx -s reload
命令進(jìn)行熱加載配置文件,windows直接點擊nginx目錄下的nginx.exe
或者 cmd
運行start nginx
進(jìn)行啟動,如果啟動了依舊可以使用nginx -s reload
進(jìn)行熱加載。
nginx啟動完成之后,我們依次啟動剛剛下載的springboot和復(fù)制更改端口的項目,輸入:java -jar springboot-jsp-thymeleaf.jar
啟動。
都啟動成功之后,我們在瀏覽器輸入服務(wù)的ip即可進(jìn)行訪問。
示例圖:
注:這里我使用的是windows系統(tǒng)做測試,實際linux也是一樣的。
然后我們進(jìn)行操作,并查看控制臺日志!
從上述示例圖中我們進(jìn)行4次界面刷新請求,最終平均分配到兩個服務(wù)中去了,從上述的測試結(jié)果中我們實現(xiàn)了負(fù)載均衡。
這里我在說一下使用nginx的注意事項,在進(jìn)行學(xué)習(xí)和測試的時候,使用nginx默認(rèn)的端口實現(xiàn)負(fù)載均衡一般沒有什么問題,但是當(dāng)我們在項目中使用的時候,特別有登錄界面的并且端口不是80的時候,會出現(xiàn)登錄的界面無法跳轉(zhuǎn),進(jìn)行調(diào)試的話會出現(xiàn) net::err_name_not_resolved這樣的錯誤,出現(xiàn)這個原因的是因為nginx默認(rèn)的端口是80,那么默認(rèn)跳轉(zhuǎn)的也是這個,所以出現(xiàn)這種情況的時候,需要在location 下添加proxy_set_header host $host:port 這個配置,port 和listen 的端口保持一致就可以了。
以上就是關(guān)于“Nginx+SpringBoot怎么實現(xiàn)負(fù)載均衡”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章名稱:Nginx+SpringBoot怎么實現(xiàn)負(fù)載均衡
本文URL:http://jinyejixie.com/article48/ipgphp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、外貿(mào)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、搜索引擎優(yōu)化、App開發(fā)、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)