Nginx+Tomcat集群環(huán)境的實現(xiàn)
一、集群環(huán)境架構(gòu)
一臺Nginx可以與多臺Tomcat服務(wù)器掛鉤,此時客戶端訪問的都是Nginx反向代理的IP地址和端口,然后Nginx通過一些分流策略等等,將流量分配到不同的Tomcat上,最后由Tomcat連接數(shù)據(jù)庫,并處理Java的請求。該圖中的Nginx和MySQL等都是可以繼續(xù)擴(kuò)展的
集群的作用:
(1)負(fù)載均衡:Load-Balance,表示有多臺服務(wù)器同時提供服務(wù),每一臺服務(wù)器的負(fù)載就會降低,提升性能和并發(fā)量
(2)故障轉(zhuǎn)移:Fall-Over,其中一臺崩潰,則數(shù)據(jù)流轉(zhuǎn)移到另外一臺上
二、配置單機(jī)應(yīng)用
配置一個Nginx+一個Tomcat
1.確保Tomcat正常訪問,配置參考Tomcat的步驟
開啟:/opt/apache-tomcat-8.0.53/bin/startup.sh 關(guān)閉:/opt/apache-tomcat-8.0.53/bin/shutdown.sh
- 配置Nginx 的核心配置文件 /usr/local/nginx/conf/nginx.conf
#此節(jié)點在 http 節(jié)點下,與 server 節(jié)點同級 upstream mytomcat { ## 指定Tomcat的服務(wù)器IP地址和端口,及權(quán)重(針對多套Tomcat服務(wù)器時使用) server 192.168.230.147:8080 weight=1; ##也可以添加第二臺,第三臺,第四臺等構(gòu)成集群環(huán)境 }
由于nginx默認(rèn)端口為80,而MySQL默認(rèn)端口也是80,因此我將nginx的默認(rèn)端口改為了8088
## 如果通過nginx訪問 http://192.168.230.147:8088/woniusales,則通過 proxy_pass 反向代理將該目錄下的所有請求,轉(zhuǎn)發(fā)給 http://mytomcat/woniusales,其中mytomcat是由upstream節(jié)點定義的名稱 location / { proxy_pass http://mytomcat/woniusales/; # 此處最后務(wù)必添加 / proxy_redirect default; }
# 當(dāng)用戶訪問nginx的80端口下的woniusales時,訪問mytomcat下的woniusales,此節(jié)點在 server 節(jié)點中 location /woniusales/ { proxy_pass http://mytomcat/woniusales/; proxy_redirect default; }
重啟nginx
現(xiàn)在我們就配置好了nginx的單機(jī)反向代理,此時我們就可以通過訪問nginx來訪問woniusales
原本的8088端口配置的是Nginx,但由于現(xiàn)在配置了nginx的反向代理,于是訪問8088端口時nginx都會自動將請求遞交給Tomcat服務(wù)器,然后根據(jù)nginx.conf 的配置文件我們可以知道其實是直接訪問了tomcat下的woniusales。所以現(xiàn)在訪問8088端口就會自動跳轉(zhuǎn)到woniusales頁面呢
三、配置Tomcat集群
1.準(zhǔn)備至少兩臺可用的Tomcat,確保兩臺Tomcat連接到同一個數(shù)據(jù)庫,配置文件在 /opt/apache-tomcat-8.0.53/webapps/woniusales/WEB-INF/classes/db.properties 中
2.確保Nginx所在服務(wù)器,可以正常訪問到這兩臺Tomcat,如果不能,請檢查防火墻是否放行了Tomcat端口8080等
3.將所有的Tomcat服務(wù)器,配置于nginx核心配置文件/usr/local/nginx/conf/nginx.conf的upstream節(jié)點中
#此節(jié)點在 http 節(jié)點下,與 server 節(jié)點同級 upstream mytomcat { ip_hash; ## ip_hash 使得訪問哪個IP地址,就將數(shù)據(jù)交給哪個Tomcat ## 指定Tomcat的服務(wù)器IP地址和端口,及權(quán)重(針對多套Tomcat服務(wù)器時使用) server 192.168.230.148:8080 weight=2; server 192.168.230.147:8080 weight=1; ##也可以添加第二臺,第三臺,第四臺等構(gòu)成集群環(huán)境 } 其他配置保持不變
4.重啟nginx
/usr/local/nginx/sbin/nginx -s reload
5.測試集群的功能
nginx默認(rèn)端口是80
使用192.168.112.1訪問一下192.168.112.188/woniusales 我們?nèi)タ碼ccess_log,先去192.168.112.188上的Tomcat發(fā)現(xiàn)并沒有日志記錄,然后再去192.168.112.1上面去看發(fā)現(xiàn)有日志記錄,說明該流量確實是被nginx轉(zhuǎn)發(fā)給了192.168.112.1,從側(cè)面也驗證了192.168.112.188上的nginx確實搭載了兩臺Tomcat,不然也不會將訪問192.168.112.188:80的流量轉(zhuǎn)發(fā)給192.168.112.1。
但我們明明配置的是ip_hash,但為什么訪問的是192.168.112.188,怎么流量都轉(zhuǎn)發(fā)給了192.168.112.1呢,也許是因為配的權(quán)重比較高吧
(1)確保所有Tomcat節(jié)點連接到同一個數(shù)據(jù)庫,保持?jǐn)?shù)據(jù)同步
(2)必須確??蛻舳擞胁煌腎P地址訪問,Nginx的集群會根據(jù)IP地址來分給后臺服務(wù)器
(3)在Tomcat節(jié)點上,tall -f /opt/apache-tomcat/logs/access.log
實時刷新訪問日志,如果有請求進(jìn)來,可以看到客戶端的IP地址
到此這篇關(guān)于Nginx+Tomcat集群環(huán)境的實現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx Tomcat集群環(huán)境內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
借用nginx.vim工具進(jìn)行語法高亮和格式化配置nginx.conf文件
今天小編就為大家分享一篇關(guān)于借用nginx.vim工具進(jìn)行語法高亮和格式化配置nginx.conf文件,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02Nginx通過代理服務(wù)器訪問目標(biāo)接口的實現(xiàn)
本文主要介紹了Nginx通過代理服務(wù)器訪問目標(biāo)接口的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08nginx通過location配置代理的原理和實現(xiàn)方式
這篇文章主要介紹了nginx通過location配置代理的原理和實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03