Nginx+Tomcat搭建高性能負(fù)載均衡集群的實(shí)現(xiàn)方法
一、 目標(biāo)實(shí)現(xiàn)高性能負(fù)載均衡的Tomcat集群:
二、步驟
1、首先下載Nginx,要下載穩(wěn)定版:
2、然后解壓兩個(gè)Tomcat,分別命名為apache-tomcat-6.0.33-1和apache-tomcat-6.0.33-2:
3、然后修改這兩個(gè)Tomcat的啟動(dòng)端口,分別為18080和28080,下面以修改第一臺(tái)Tomcat為例,打開(kāi)Tomcat的conf目錄下的server.xml:
共需修改3處端口:
當(dāng)然第二臺(tái)Tomcat也一樣,如下圖:
4、然后啟動(dòng)兩個(gè)Tomcat,并訪(fǎng)問(wèn),看是否正常:
5、然后修改上面兩個(gè)Tomcat的默認(rèn)頁(yè)面(為了區(qū)分下面到底訪(fǎng)問(wèn)的是那一臺(tái)Tomcat,隨便改一下即可):
改完以后,進(jìn)行訪(fǎng)問(wèn),如下圖:
6、OK,現(xiàn)在我們可以開(kāi)始配置Nginx來(lái)實(shí)現(xiàn)負(fù)載均衡了,其實(shí)非常的簡(jiǎn)單,只需要配置好Nginx的配置文件即可:
配置如下(這里只進(jìn)行了簡(jiǎn)單的配置,實(shí)際生產(chǎn)環(huán)境可以進(jìn)行更詳細(xì)完善配置):
worker_processes 1;#工作進(jìn)程的個(gè)數(shù),一般與計(jì)算機(jī)的cpu核數(shù)一致 events { worker_connections 1024;#單個(gè)進(jìn)程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進(jìn)程數(shù)) } http { include mime.types; #文件擴(kuò)展名與文件類(lèi)型映射表 default_type application/octet-stream;#默認(rèn)文件類(lèi)型 sendfile on;#開(kāi)啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來(lái)輸出文件,對(duì)于普通應(yīng)用設(shè)為 on,如果用來(lái)進(jìn)行下載等應(yīng)用磁盤(pán)IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤(pán)與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負(fù)載。注意:如果圖片顯示不正常把這個(gè)改成off。 keepalive_timeout 65; #長(zhǎng)連接超時(shí)時(shí)間,單位是秒 gzip on;#啟用Gizp壓縮 #服務(wù)器的集群 upstream netitcast.com { #服務(wù)器集群名字 server 127.0.0.1:18080 weight=1;#服務(wù)器配置 weight是權(quán)重的意思,權(quán)重越大,分配的概率越大。 server 127.0.0.1:28080 weight=2; } #當(dāng)前的Nginx的配置 server { listen 80;#監(jiān)聽(tīng)80端口,可以改成其他端口 server_name localhost;############## 當(dāng)前服務(wù)的域名 location / { proxy_pass http://netitcast.com; proxy_redirect default; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
worker_processes 1;#工作進(jìn)程的個(gè)數(shù),一般與計(jì)算機(jī)的cpu核數(shù)一致 events { worker_connections 1024;#單個(gè)進(jìn)程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進(jìn)程數(shù)) } http { include mime.types; #文件擴(kuò)展名與文件類(lèi)型映射表 default_type application/octet-stream;#默認(rèn)文件類(lèi)型 sendfile on;#開(kāi)啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來(lái)輸出文件,對(duì)于普通應(yīng)用設(shè)為 on,如果用來(lái)進(jìn)行下載等應(yīng)用磁盤(pán)IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤(pán)與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負(fù)載。注意:如果圖片顯示不正常把這個(gè)改成off。 keepalive_timeout 65; #長(zhǎng)連接超時(shí)時(shí)間,單位是秒 gzip on;#啟用Gizp壓縮 #服務(wù)器的集群 upstream netitcast.com { #服務(wù)器集群名字 server 127.0.0.1:18080 weight=1;#服務(wù)器配置 weight是權(quán)重的意思,權(quán)重越大,分配的概率越大。 server 127.0.0.1:28080 weight=2; } #當(dāng)前的Nginx的配置 server { listen 80;#監(jiān)聽(tīng)80端口,可以改成其他端口 server_name localhost;############## 當(dāng)前服務(wù)的域名 location / { proxy_pass http://netitcast.com; proxy_redirect default; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
核心配置如下:
到此配置完成,下面開(kāi)始演示負(fù)載均衡。
7、首先,我們啟動(dòng)Nginx:
8、然后我們即可輸入:localhost/index.jsp查看運(yùn)行狀況了
第一次訪(fǎng)問(wèn),發(fā)現(xiàn)訪(fǎng)問(wèn)的是Tomcat2上的程序:
然后刷新,訪(fǎng)問(wèn)的還是Tomcat2上的程序:
再刷新,發(fā)現(xiàn)變?yōu)榱薚omcat1上的程序:
再刷新,發(fā)現(xiàn)又變?yōu)榱薚omcat2上的程序:
到此,我們利用Nginx已經(jīng)實(shí)現(xiàn)了負(fù)載均衡的Tomcat集群。我們不斷的刷新,發(fā)現(xiàn)訪(fǎng)問(wèn)Tomcat2的概率大概是Tomcat1的2倍,這是因?yàn)槲覀冊(cè)贜ginx中配置的兩臺(tái)Tomcat的權(quán)重起的作用,如下圖:
三、總結(jié)
誰(shuí)能想到實(shí)現(xiàn)一個(gè)高性能的負(fù)載均衡集群會(huì)如此簡(jiǎn)單。Nginx的功能如此強(qiáng)大,配置卻如此簡(jiǎn)單,我們還有什么理由拒絕它呢?這比我們動(dòng)不動(dòng)就十多萬(wàn)至幾十萬(wàn)人民幣的F5 BIG-IP、NetScaler等硬件負(fù)載均衡交換機(jī)廉價(jià)了不知多少。此外,大家別忘了Nginx不僅僅是一個(gè)反向代理服務(wù)器,它本身也可以托管網(wǎng)站,作為Web服務(wù)器,進(jìn)行Http服務(wù)處理。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
對(duì)Nginx支持SSL的性能進(jìn)行優(yōu)化的方法
這篇文章主要介紹了對(duì)Nginx支持SSL的性能進(jìn)行優(yōu)化的方法,作者分別以不同方法進(jìn)行了8個(gè)優(yōu)化實(shí)驗(yàn),需要的朋友可以參考下2015-06-06Nginx設(shè)置靜態(tài)頁(yè)面壓縮和緩存過(guò)期時(shí)間的方法
這篇文章主要介紹了Nginx設(shè)置靜態(tài)頁(yè)面壓縮和緩存過(guò)期時(shí)間的方法,也是服務(wù)器架設(shè)后的必備設(shè)置,需要的朋友可以參考下2015-07-07如何配置Nginx每個(gè)進(jìn)程最多打開(kāi)的文件數(shù)量
這篇文章主要介紹了配置Nginx每個(gè)進(jìn)程最多打開(kāi)的文件數(shù)量,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Nginx中的root&alias文件路徑及索引目錄配置詳解
這篇文章主要介紹了Nginx中的root&alias文件路徑及索引目錄配置,順帶講解了root和alias命令的用法,需要的朋友可以參考下2016-01-01Nginx配置請(qǐng)求頭攜帶原始請(qǐng)求信息的實(shí)現(xiàn)
本文主要介紹了Nginx配置請(qǐng)求頭攜帶原始請(qǐng)求信息的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12nginx訪(fǎng)問(wèn)路徑映射資源目錄的實(shí)現(xiàn)
本文主要介紹了nginx訪(fǎng)問(wèn)路徑映射資源目錄,Nginx映射資源目錄是指在Nginx配置文件中設(shè)定規(guī)則,使得當(dāng)客戶(hù)端向Nginx服務(wù)器發(fā)送請(qǐng)求訪(fǎng)問(wèn)某個(gè)URL時(shí),Nginx能夠?qū)⒃揢RL映射到服務(wù)器本地的實(shí)際文件目錄,感興趣的可以了解一下2024-06-06Nginx配置負(fù)載均衡時(shí)訪(fǎng)問(wèn)地址無(wú)法生效的解決方法
本文主要介紹了Nginx配置負(fù)載均衡時(shí)訪(fǎng)問(wèn)地址無(wú)法生效的解決方法,例如負(fù)載均衡策略的設(shè)置是否正確、是否存在拼寫(xiě)錯(cuò)誤等,下面就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下2023-09-09Nginx訪(fǎng)問(wèn)php文件直接下載的解決方法
本文主要給大家介紹了如何解決Nginx訪(fǎng)問(wèn)php文件直接下載,這種情況通常是因?yàn)閚ginx沒(méi)有將PHP文件交給PHP解釋器處理,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12