目錄
一、Tomcat的多實(shí)例部署
1.創(chuàng)建 kgc 和 benet 項(xiàng)目目錄和文件
2.修改 Tomcat 主配置文件? ?
?3.客戶端瀏覽器訪問驗(yàn)證
二、Nginx+Tomcat負(fù)載均衡架構(gòu)原理
2.1 Nginx負(fù)載均衡的主要配置
2.2?Nginx+Tomcat負(fù)載均衡的優(yōu)點(diǎn)?
三、Nginx+Tomcat負(fù)載均衡實(shí)驗(yàn)
1.部署Nginx 負(fù)載均衡器
2.部署2臺(tái)Tomcat 應(yīng)用服務(wù)器
3.動(dòng)靜分離配置
1)Tomcat1 server 配置
(2)Tomcat2 server 配置
(3)Nginx server 配置
4.測(cè)試效果
一、Tomcat的多實(shí)例部署
- Tomcat的多實(shí)例部署簡單來說就是基于同一后端架構(gòu)中的多個(gè)Tomcat服務(wù)
很多時(shí)候公司會(huì)有多個(gè)項(xiàng)目需要運(yùn)行,那么肯定不可能是一臺(tái)服務(wù)器上運(yùn)行多個(gè)Tomcat服務(wù),這樣會(huì)消耗太多的系統(tǒng)資源。此時(shí),就需要使用到 Tomcat 虛擬主機(jī)。例如現(xiàn)在新增兩個(gè)域名 www.lbj.com 和 www.jokic.com,希望通過這兩個(gè)域名訪問到不同的項(xiàng)目內(nèi)容。
1.創(chuàng)建 kgc 和 benet 項(xiàng)目目錄和文件
mkdir /usr/local/tomcat/webapps/kgc mkdir /usr/local/tomcat/webapps/benet echo "This is kgc page\!" > /usr/local/tomcat/webapps/kgc/index.jsp echo "This is benet page\!" > /usr/local/tomcat/webapps/benet/index.jsp
2.修改 Tomcat 主配置文件? ?
vim /usr/local/tomcat/conf/server.xml --165行前--插入 <Host name="www.lbj.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/lbj" path="" reloadable="true" /> </Host> <Host name="www.jokic.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/jokic" path="" reloadable="true" /> </Host>
- Host name :主機(jī)名
- appBase :Tomcat程序工作目錄,相對(duì)路徑為webapps,絕對(duì)路徑為/usr/local/tomcat/webapps
- unpackWARs :是否解壓war包
- autoDeploy :指示Tomcat運(yùn)行時(shí),如有新的WEB應(yīng)用是否允許自動(dòng)部署
- xmlValidation :是否驗(yàn)證xml文件執(zhí)行有效性檢驗(yàn)的標(biāo)志
- xmlNamespaceAware :是否啟用xml命名空間,設(shè)置該值與xmlValidation為true,表示對(duì)web.xml文件執(zhí)行有效性檢驗(yàn)
- appBase :WEB應(yīng)用的目錄
- path :設(shè)置訪問的URI為WEB應(yīng)用的根目錄
- reloadable :是否在程序有改動(dòng)時(shí)重新載入
/usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh
?3.客戶端瀏覽器訪問驗(yàn)證
echo "192.168.181.101 www.lbj.com www.jokic.com" >> /etc/hosts
瀏覽器訪問
?文章來源地址http://www.zghlxwxcb.cn/news/detail-530004.html
二、Nginx+Tomcat負(fù)載均衡架構(gòu)原理
Nginx實(shí)現(xiàn)負(fù)載均衡是通過反向代理實(shí)現(xiàn)Nginx服務(wù)器作為前端,Tomcat服務(wù)器作為后端,web頁面請(qǐng)求由Nginx服務(wù)來進(jìn)行轉(zhuǎn)發(fā)。 但是不是把所有的web請(qǐng)求轉(zhuǎn)發(fā),而是將靜態(tài)頁面請(qǐng)求Nginx服務(wù)由自己來處理,動(dòng)態(tài)頁面請(qǐng)求,轉(zhuǎn)發(fā)給后端的Tomcat服務(wù)器來處理。Tomcat是屬于輕量級(jí)的應(yīng)用服務(wù)器,可接受訪問量可能會(huì)不足,所以我們需要多臺(tái)Tomcat服務(wù)器。并且Tomcat并發(fā)量處理能力弱(約Nginx的六分之一),所以需要Nginx方向代理時(shí),進(jìn)行合理的調(diào)用分配
2.1 Nginx負(fù)載均衡的主要配置
- upstream?服務(wù)池名 {? ?}
- 作用:配置后端服務(wù)器池,以提供響應(yīng)數(shù)據(jù)
- ?proxy_pass http://?服務(wù)池名
- 作用:配置將訪問請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)器池的服務(wù)器處理
2.2?Nginx+Tomcat負(fù)載均衡的優(yōu)點(diǎn)?
- Nginx 靜態(tài)處理優(yōu)勢(shì):Nginx 處理靜態(tài)頁面的效率遠(yuǎn)高于 Tomcat 的處理能力若 Tomcat 的請(qǐng)求量為1000次,則 Nginx 的請(qǐng)求量為6000次Tomcat 每秒的吞吐量為0.6M,Nginx 的每秒吞吐量為3.6M,Nginx 處理靜態(tài)資源的能力是 Tomcat 處理的6倍
- ?動(dòng)靜分離原理:服務(wù)端接收來自客戶端的請(qǐng)求中,既有靜請(qǐng)求也有動(dòng)態(tài)請(qǐng)求,靜態(tài)資源由 Nginx 提供服務(wù),如果是動(dòng)態(tài)資源,則由前端識(shí)別后轉(zhuǎn)發(fā)至Tomcat。
三、Nginx+Tomcat負(fù)載均衡實(shí)驗(yàn)
- 實(shí)驗(yàn)需求:有一臺(tái)nginx服務(wù)器作為前端接收靜態(tài)請(qǐng)求,兩臺(tái)tomcat服務(wù)器作為后端。要求部署出用戶訪問服務(wù),靜態(tài)資源由Nginx自行處理,jsp動(dòng)態(tài)資源移交給tomcat服務(wù)器處理,且達(dá)到負(fù)載均衡的效果
- Nginx 服務(wù)器:192.168.181.100
- Tomcat服務(wù)器1:192.168.181.101
- Tomcat服務(wù)器2:192.168.181.102
1.部署Nginx 負(fù)載均衡器
systemctl stop firewalld
setenforce 0
##關(guān)閉防火墻、安全機(jī)制
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
##安裝依賴環(huán)境
useradd -M -s /sbin/nologin nginx
##創(chuàng)建程序用戶
cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/
##下載并解包
cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \ #啟用文件修改支持
--with-http_stub_status_module \ #啟用狀態(tài)統(tǒng)計(jì)
--with-http_gzip_static_module \ #啟用 gzip靜態(tài)壓縮
--with-http_flv_module \ #啟用 flv模塊,提供對(duì) flv 視頻的偽流支持
--with-http_ssl_module
make -j3 && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
##創(chuàng)建軟連接便于系統(tǒng)識(shí)別
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
##創(chuàng)建服務(wù)
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
##賦權(quán)啟動(dòng)并開機(jī)自啟
2.部署2臺(tái)Tomcat 應(yīng)用服務(wù)器
##注意??! 這個(gè)時(shí)候需要切換到兩臺(tái)Tomcat服務(wù)器并重復(fù)以下操作
systemctl stop firewalld
setenforce 0
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
##設(shè)置環(huán)境變量
source /etc/profile
tar zxvf apache-tomcat-8.5.16.tar.gz
mv /opt/apache-tomcat-8.5.16/ /usr/local/tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
netstat -ntap | grep 8080
3.動(dòng)靜分離配置
1)Tomcat1 server 配置
mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("動(dòng)態(tài)頁面 1,http://www.test1.com");%>
</body>
</html>
##設(shè)置動(dòng)態(tài)頁面測(cè)試頁
vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
</Host>
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
(2)Tomcat2 server 配置
mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("動(dòng)態(tài)頁面 2,http://www.test2.com");%>
</body>
</html>
vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
</Host>
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
(3)Nginx server 配置
#準(zhǔn)備靜態(tài)頁面和靜態(tài)圖片
echo '<html><body><h1>這是靜態(tài)頁面</h1></body></html>' > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/img
cp /root/game.jpg /usr/local/nginx/html/img
vim /usr/local/nginx/conf/nginx.conf
?文章來源:http://www.zghlxwxcb.cn/news/detail-530004.html
http {
......
#gzip on;
#配置負(fù)載均衡的服務(wù)器列表,weight參數(shù)表示權(quán)重,權(quán)重越高,被分配到的概率越大
upstream tomcat_server {
server 192.168.181.101:8080 weight=1;
server 192.168.181.102:8080 weight=1;
}
server {
listen 80;
server_name www.lbj.com;
charset utf-8;
#access_log logs/host.access.log main;
#配置Nginx處理動(dòng)態(tài)頁面請(qǐng)求,將 .jsp文件請(qǐng)求轉(zhuǎn)發(fā)到Tomcat 服務(wù)器處理
location ~ .*\.jsp$ {
proxy_pass http://tomcat_server;
#設(shè)置后端的Web服務(wù)器可以獲取遠(yuǎn)程客戶端的真實(shí)IP
#設(shè)定后端的Web服務(wù)器接收到的請(qǐng)求訪問的主機(jī)名(域名或IP、端口),默認(rèn)host的值為proxy_pass指令設(shè)置的主機(jī)名
proxy_set_header HOST $host;
#把$remote_addr賦值給X-Real-IP,來獲取源IP
proxy_set_header X-Real-IP $remote_addr;
#在nginx 作為代理服務(wù)器時(shí),設(shè)置的IP列表,會(huì)把經(jīng)過的機(jī)器ip,代理機(jī)器ip都記錄下來
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#配置Nginx處理靜態(tài)圖片請(qǐng)求
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/local/nginx/html/img;
expires 10d;
}
location / {
root html;
index index.html index.htm;
}
......
}
......
}
4.測(cè)試效果
- 測(cè)試靜態(tài)頁面效果
- 瀏覽器訪問 http://192.168.181.100/
![]()
- 瀏覽器訪問 http://192.168.181.100/game.jpg
![]()
- 測(cè)試負(fù)載均衡效果,不斷刷新瀏覽器測(cè)試
- 瀏覽器訪問 http://192.168.181.101/index.jsp
![]()
?
?
?
?
到了這里,關(guān)于Nginx&&Tomcat架構(gòu)的動(dòng)靜分離和負(fù)載均衡的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!