Blog.053 Tomcat 服務 多例項與負載均衡
阿新 • • 發佈:2021-08-19
本章目錄
1. Tomcat 多例項
1.1 實驗步驟
1.2 實驗流程
2. Nginx + Tomcat 負載均衡與動靜分離
2.1 實驗步驟
2.2 實驗流程
(1)放入安裝包,關閉防火牆
(2)安裝 JDK 並設定環境變數
(3)安裝 Tomcat
1 cd /opt 2 tar zxvf apache-tomcat-9.0.16.tar.gz 3 mkdir /usr/local/tomcat 4 mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1 5 cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2
(4)配置 Tomcat 環境變數
1 vim /etc/profile.d/tomcat.sh 2 3 #tomcat1 4 export CATALINA_HOME1=/usr/local/tomcat/tomcat1 5 export CATALINA_BASE1=/usr/local/tomcat/tomcat1 6 export TOMCAT_HOME1=/usr/local/tomcat/tomcat1 7 8 #tomcat2 9 export CATALINA_HOME2=/usr/local/tomcat/tomcat2 10 export CATALINA_BASE2=/usr/local/tomcat/tomcat211 export TOMCAT_HOME2=/usr/local/tomcat/tomcat2
1 source /etc/profile.d/tomcat.sh
(5)修改 tomcat 中的 server.xml 檔案,要求各 tomcat 示例配置不能再有重複的埠號
1 vim /usr/local/tomcat/tomcat2/conf/server.xml 2 3 <Server port="8006" shutdown="SHUTDOWN"> #22行,修改Server prot,預設為8005 -> 修改為8006 4 <Connector port="8081" protocol="HTTP/1.1" #69行,修改Connector port,HTTP/1.1 預設為8080 -> 修改為8081 5 <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> #116行,修改Connector port AJP/1.3,預設為8009 -> 修改為8010
(6)修改各 tomcat 例項中的 startup.sh 和 shutdown.sh 檔案,新增 tomcat 環境變數
1 vim /usr/local/tomcat/tomcat1/bin/startup.sh 2 3 # ----------------------------------------------------------------------------- 4 # Start Script for the CATALINA Server 5 # ----------------------------------------------------------------------------- 6 ##新增以下內容 7 export CATALINA_BASE=$CATALINA_BASE1 8 export CATALINA_HOME=$CATALINA_HOME1 9 export TOMCAT_HOME=$TOMCAT_HOME1
1 vim /usr/local/tomcat/tomcat1/bin/shutdown.sh 2 3 # ----------------------------------------------------------------------------- 4 # Start Script for the CATALINA Server 5 # ----------------------------------------------------------------------------- 6 export CATALINA_BASE=$CATALINA_BASE2 7 export CATALINA_HOME=$CATALINA_HOME2 8 export TOMCAT_HOME=$TOMCAT_HOME2
1 vim /usr/local/tomcat/tomcat2/bin/startup.sh 2 3 # ----------------------------------------------------------------------------- 4 # Start Script for the CATALINA Server 5 # ----------------------------------------------------------------------------- 6 export CATALINA_BASE=$CATALINA_BASE2 7 export CATALINA_HOME=$CATALINA_HOME2 8 export TOMCAT_HOME=$TOMCAT_HOME2
1 vim /usr/local/tomcat/tomcat2/bin/shutdown.sh 2 3 # ----------------------------------------------------------------------------- 4 # Stop script for the CATALINA Server 5 # ----------------------------------------------------------------------------- 6 export CATALINA_BASE=$CATALINA_BASE2 7 export CATALINA_HOME=$CATALINA_HOME2 8 export TOMCAT_HOME=$TOMCAT_HOME2
1 /usr/local/tomcat/tomcat1/bin/startup.sh 2 /usr/local/tomcat/tomcat2/bin/startup.sh 3 4 netstat -natp | grep java
(1)放入安裝包,關閉防火牆
(2)安裝 JDK 並設定環境變數
(3)安裝 Tomcat
(4)配置 Tomcat 環境變數
(5)修改 tomcat 中的 server.xml 檔案,要求各 tomcat 示例配置不能再有重複的埠號
(6)修改各 tomcat 例項中的 startup.sh 和 shutdown.sh 檔案,新增 tomcat 環境變數
(7)訪問測試
2. Nginx + Tomcat 負載均衡與動靜分離
2.1 實驗步驟
(1)動靜分離:tomcat server 配置
1 mkdir /usr/local/tomcat/webapps/test 2 vim /usr/local/tomcat/webapps/test/index.jsp 3 4 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 5 <html> 6 <head> 7 <title>JSP test1 page</title> #指定為 test1 頁面 8 </head> 9 <body> 10 <% out.println("動態頁面 1,http://www.test1.com");%> 11 </body> 12 </html>
1 vim /usr/local/tomcat/conf/server.xml 2 3 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 4 <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true"> 5 </Context> 6 </Host> 7 8 /usr/local/tomcat/bin/shutdown.sh 9 /usr/local/tomcat/bin/startup.sh
1 mkdir /usr/local/tomcat/tomcat1/webapps/test /usr/local/tomcat/tomcat2/webapps/test 2 3 vim /usr/local/tomcat/tomcat1/webapps/test/index.jsp 4 5 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 6 <html> 7 <head> 8 <title>JSP test2 page</title> #指定為 test2 頁面 9 </head> 10 <body> 11 <% out.println("動態頁面 2,http://www.test2.com");%> 12 </body> 13 </html> 14 15 16 vim /usr/local/tomcat/tomcat1/conf/server.xml 17 18 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 19 <Context docBase="/usr/local/tomcat/tomcat1/webapps/test" path="" reloadable="true" /> 20 </Host> 21 22 /usr/local/tomcat/tomcat1/bin/shutdown.sh 23 /usr/local/tomcat/tomcat1/bin/startup.sh
1 vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp 2 3 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 4 <html> 5 <head> 6 <title>JSP test3 page</title> #指定為 test3 頁面 7 </head> 8 <body> 9 <% out.println("動態頁面 3,http://www.test3.com");%> 10 </body> 11 </html> 12 13 vim /usr/local/tomcat/tomcat2/conf/server.xml 14 15 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 16 <Context docBase="/usr/local/tomcat/tomcat2/webapps/test" path="" reloadable="true" /> 17 </Host> 18 19 /usr/local/tomcat/tomcat2/bin/shutdown.sh 20 /usr/local/tomcat/tomcat2/bin/startup.sh
(2)Nginx server 配置
1 echo '<html><body><h1>這是靜態頁面</h1></body></html>' > /usr/local/nginx/html/index.html 2 mkdir /usr/local/nginx/html/img 3 cp /root/game.jpg /usr/local/nginx/html/img 4 5 vim /usr/local/nginx/conf/nginx.conf 6 7 ...... 8 http { 9 ...... 10 #gzip on; 11 12 #配置負載均衡的伺服器列表,weight引數表示權重,權重越高,被分配到的概率越大 13 upstream tomcat_server { 14 server 192.168.80.100:8080 weight=1; 15 server 192.168.80.101:8080 weight=1; 16 server 192.168.80.101:8081 weight=1; 17 } 18 19 server { 20 listen 80; 21 server_name www.kgc.com; 22 23 charset utf-8; 24 25 #access_log logs/host.access.log main; 26 27 #配置Nginx處理動態頁面請求,將 .jsp檔案請求轉發到Tomcat 伺服器處理 28 location ~ .*\.jsp$ { 29 proxy_pass http://tomcat_server; 30 #設定後端的Web伺服器可以獲取遠端客戶端的真實IP 31 ##設定後端的Web伺服器接收到的請求訪問的主機名(域名或IP、埠),預設HOST的值為proxy_pass指令設定的主機名。如果反向代理伺服器不重寫該請求頭的話,那麼後端真實伺服器在處理時會認為所有的請求都來在反向代理伺服器,如果後端有防攻擊策略的話,那麼機器就被封掉了。 32 proxy_set_header HOST $host; 33 ##把$remote_addr賦值給X-Real-IP,來獲取源IP 34 proxy_set_header X-Real-IP $remote_addr; 35 ##在nginx 作為代理伺服器時,設定的IP列表,會把經過的機器ip,代理機器ip都記錄下來 36 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 37 } 38 39 #配置Nginx處理靜態圖片請求 40 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ { 41 root /usr/local/nginx/html/img; 42 expires 10d; 43 } 44 45 location / { 46 root html; 47 index index.html index.htm; 48 } 49 ...... 50 } 51 ...... 52 }
(1)動靜分離:tomcat server 配置
(2)Nginx server 配置
(3)訪問測試
-