首頁 > 軟體

Tomcat多範例與負載均衡範例詳解

2022-04-11 10:00:29

一、Tomcat多範例

1.1 安裝好 jdk

在部署 Tomcat 之前必須安裝好 jdk,因為 jdk 是 Tomcat 執行的必要環境。

1. #關閉防火牆
 
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
 
2. #將安裝 Tomcat 所需軟體包傳到/opt目錄下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm
 
3. #切換至/opt下,安裝JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm 
?
4. #檢視java版本
java -version

關閉防火牆

將安裝 Tomcat 所需軟體包傳到/opt目錄下

切換至/opt下,安裝JDK

檢視java版本

1.2 安裝 tomcat

1. #切換至/opt下,解壓tomcat包
cd /opt
tar -zxf apache-tomcat-9.0.16.tar.gz 
?
2. #新建資料夾/usr/local/tomcat
mkdir /usr/local/tomcat
 
3. #將解壓後的包拷貝至/usr/local/下並重新命名
cp -a apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a apache-tomcat-9.0.16 /usr/local/tomcat/tomcat2

切換至/opt下,解壓tomcat包

新建資料夾/usr/local/tomcat

將解壓後的包拷貝至/usr/local/下並重新命名

1.3 設定 tomcat 環境變數

vim /etc    profile
?
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

1.4修改tomcat2中的主組態檔

vim /usr/local/tomcat/tomcat2/conf/server.xml 
?
22 <Server port="8006" shutdown="SHUTDOWN">
69 ? ? <Connector port="8081" protocol="HTTP/1.1"
116 ? ? <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
?

1.5修改啟動指令碼和關閉指令碼

1. #修改tomcat1的/usr/local/tomcat/tomcat1/bin/startup.sh 
vim /usr/local/tomcat/tomcat1/bin/startup.sh 
?
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1
?
2. #修改tomcat1 的/usr/local/tomcat/tomcat1/bin/shutdown.sh 
vim /usr/local/tomcat/tomcat1/bin/shutdown.sh 
?
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1
?
?
3. #修改tomcat2的/usr/local/tomcat/tomcat2bin/startup.sh 
vim /usr/local/tomcat/tomcat2/bin/startup.sh 
?
export CATALINA_HOME1=/usr/local/tomcat/tomcat2
export CATALINA_BASE1=/usr/local/tomcat/tomcat2
export TOMCAT_HOME1=/usr/local/tomcat/tomcat2
?
4. #修改tomcat2的/usr/local/tomcat/tomcat2/bin/shutdown.sh 
vim /usr/local/tomcat/tomcat2/bin/shutdown.sh 
?
export CATALINA_HOME1=/usr/local/tomcat/tomcat2
export CATALINA_BASE1=/usr/local/tomcat/tomcat2
export TOMCAT_HOME1=/usr/local/tomcat/tomcat2
?

修改tomcat1的/usr/local/tomcat/tomcat1/bin/startup.sh

修改tomcat1 的/usr/local/tomcat/tomcat1/bin/shutdown.sh

修改tomcat2的/usr/local/tomcat/tomcat2bin/startup.sh

修改tomcat2的/usr/local/tomcat/tomcat2/bin/shutdown.sh :

1.6啟動tomcat並檢視

1. #啟動tomcat1
cd /usr/local/tomcat/
./tomcat1/bin/startup.sh
?
2. #啟動tomcat2
./tomcat2/bin/startup.sh 
?
3. #檢視是否啟動成功
ss -ntap|grep java
http://192.168.59.118:8080/

啟動tomcat1、tomcat2

檢視是否啟動成功

二、Nginx+Tomcat負載均衡、動靜分離

  • standalone模式,Tomcat單獨執行,直接接受使用者的請求,不推薦。

反向代理,單機執行,提供了一個Nginx作為反向代理,可以做到靜態由nginx提供響應,動態jsp

代理給Tomcat

  • LNMT:Linux + Nginx + MySQL + Tomcat

LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat

前置一臺Nginx,給多臺Tomcat範例做反向代理和負載均衡排程,Tomcat上部署的純動態頁面更

適合

LNMT:Linux + Nginx + MySQL + Tomcat

  • 多級代理

LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat

動態伺服器的問題,往往就是並行能力太弱,往往需要多臺動態伺服器一起提供服務。如何把並行的壓力分攤,這就需要排程,採用一定的排程策略,將請求分發給不同的伺服器,這就是Load Balance負載均衡。

當單機Tomcat,演化出多機多級部署的時候,一個問題便凸顯出來,這就是Session。而這個問題的由來,都是由於HTTP協定在設計之初沒有想到未來的發展。

2.1 部署Nginx 負載均衡器

環境簡介:

ngnix:192.168.59.108

tomcat1:192.168.59.105

tomcat2: 192.168.59.118

1. #關閉防火牆
systemctl stop firewalld
setenforce 0
?
2. #安裝依賴關係包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
?
3. #新建使用者和組便於管理
useradd -M -s /sbin/nologin nginx
?
4. #切換至opt目錄,將下載好的壓縮包傳進來解壓
cd /opt
tar -zxf nginx-1.12.0.tar.gz 
?
4. #切換至解壓後的目錄下編譯
cd nginx-1.12.0
?
./configure 

–prefix=/usr/local/nginx
–user=nginx
–group=nginx
–with-http_stub_status_module
?
5. #安裝
make && make install -j4
?
6. #做軟連線,讓系統識別nginx的操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
?
7. #將nginx命令加入服務
cd /lib/systemd/system
vim nginx.service
#!/bin.bash
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
?
8. #重新載入單元.啟動服務
systemctl daemon-reload
systemctl start nginx
?
9. #檢視是否成功啟動
ss -ntap|grep nginx
http://192.168.59.108/

關閉防火牆

安裝依賴關係包

新建使用者和組便於管理

切換至opt目錄,將下載好的壓縮包傳進來

切換至解壓後的目錄下編譯

安裝

做軟連線,讓系統識別nginx的操作命令

將nginx命令加入服務

重新載入單元.啟動服務

檢視是否成功啟動

2.2部署第一臺Tomcat

192.168.59.105

1. #關閉防火牆
systemctl stop firewalld
setenforce 0
?
2. #切換至/opt,將安裝 Tomcat 所需軟體包傳到/opt目錄下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm
?
3. #安裝JDK
rpm -ivh jdk-8u201-linux-x64.rpm 
?
4. #修改換將變陣列態檔
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
?
5. #重新整理組態檔
source /etc/profile
?
6. #切換至/opt下,解壓tomcat包
cd /opt
tar -zxf apache-tomcat-9.0.16.tar.gz 
?
7. #將解壓後的包拷貝至/usr/local/下並重新命名
cp -r apache-tomcat-9.0.16 /usr/local/tomcat
?
8. #新增使用者設定屬主屬組
useradd -s /sbin/nologin tomcat
chown tomcat:tomcat /usr/local/tomcat -R
?
?
9. #新建服務檔案
vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
?
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat
?
[Install]
WantedBy=multi-user.target
?
10. #重新載入服務,並開啟,檢視是否成功啟動
?
systemctl daemon-reload
systemctl start tomcat
ss -ntap |grep 8080
?
?
?
#############新建動態頁面站點###########3
?
11. #切換至webapp下,新建test目錄
cd /usr/local/tomcat/webapps/
mkdir test
?
12. #建立動態頁面檔案
vim test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
 ? ? <title>JSP test1 page </title>
  </head>
  <body>
 ? ? <% out.println("動態頁面1,http://www.test1.com");%>
  </body>
</html>
?
13. #修改主組態檔
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>
?
?
14. #重啟服務,並在網頁測試
systemctl restart tomcat.service 
http://192.168.59.105:8080/

關閉防火牆

切換至/opt,將安裝 Tomcat 所需軟體包傳到/opt目錄下

安裝JDK

修改換將變陣列態檔

重新整理組態檔

切換至/opt下,解壓tomcat包

將解壓後的包拷貝至/usr/local/下並重新命名

新增使用者設定屬主屬組

新建服務檔案

重新載入服務,並開啟,檢視是否成功啟動

切換至webapp下,新建test目錄

建立動態頁面檔案

修改主組態檔

重啟服務,並在網頁測試

2.3部署第二臺Tomcat

1. #關閉防火牆
systemctl stop firewalld
setenforce 0
?
2. #切換至/opt,將安裝 Tomcat 所需軟體包傳到/opt目錄下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm
?
3. #安裝JDK
rpm -ivh jdk-8u201-linux-x64.rpm 
?
4. #修改環境變陣列態檔
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
?
5. #重新整理組態檔
source /etc/profile
?
6. #切換至/opt下,解壓tomcat包
cd /opt
tar -zxf apache-tomcat-9.0.16.tar.gz 
?
7. #將解壓後的包拷貝至/usr/local/下並重新命名
cp -r apache-tomcat-9.0.16 /usr/local/tomcat
?
8. #新增使用者設定屬主屬組
useradd -s /sbin/nologin tomcat
chown tomcat:tomcat /usr/local/tomcat -R
?
?
9. #新建服務檔案
vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
?
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat
?
[Install]
WantedBy=multi-user.target
?
10. #重新載入服務,並開啟,檢視是否成功啟動
?
systemctl daemon-reload
systemctl start tomcat
ss -ntap |grep 8080
?
?
?
#############新建動態頁面站點###########3
?
11. #切換至webapp下,新建test目錄
cd /usr/local/tomcat/webapps/
mkdir test
?
12. #建立動態頁面檔案
vim test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
 ? ? <title>JSP test2 page </title>
  </head>
  <body>
 ? ? <% out.println("動態頁面2,http://www.test2.com");%>
  </body>
</html>
?
13. #修改主組態檔
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>
?
?
14. #重啟服務,並在網頁測試
systemctl restart tomcat.service 
http://192.168.59.105:8080/

關閉防火牆

切換至/opt,將安裝 Tomcat 所需軟體包傳到/opt目錄下

安裝JDK

修改環境變陣列態檔

重新整理組態檔

切換至/opt下,解壓tomcat包

將解壓後的包拷貝至/usr/local/下並重新命名

新增使用者設定屬主屬組

新建服務檔案

重新載入服務,並開啟,檢視是否成功啟動

切換至webapp下,新建test目錄

建立動態頁面檔案

修改主組態檔

重啟服務,並在網頁測試

2.4nginx 設定

準備靜態頁面和圖片

1. #切換至/usr/local/nginx/html/目錄下
cd /usr/local/nginx/html/
?
2. #建立test資料夾,並在裡面建立靜態網頁
mkdir test
cd test
vim test.html
this is static test web !!
?
3. #拖一張圖片至test下改名為1.jpg
mv 1.jfif 1.jpg
?
4. #設定主組態檔
vim /usr/local/nginx/conf/nginx.conf
?
#設定負載均衡伺服器列表,weight參數列示權重,權重越高,被分配到的概率越大 ?
#gzip  on; ?
 ?  upstream tomcat_server {
 ? ? ? ? ? ? ? ? ?  server 192.168.59.105:8080 weight=1;
 ? ? ? ? ? ? ? ? ?  server 192.168.59.118:8080 weight=1;
 ? ? ? ? ? ? ? ? 
 ? ? ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ? ? ? ?
 ? ? ? ? ? ? ? ? ? ?
#動靜分離
 location ~ .*.jsp$ {
 ? ? ? ?  proxy_pass http://tomcat_server;
 ? ? ? ?  proxy_set_header HOST $host;
 ? ? ? ?  proxy_set_header X-Real-IP $remote_addr;
 ? ? ? ?  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 ? ? }
?
#靜態圖片正則
 ? ? ? ? location ~* .*.(jpg|html|png|gif)$ {
 ? ? ? ? root /usr/local/nginx/html/test;
 ? ? }
?
?
 ? ? ? ? location / {
 ? ? ? ? ?  root ? html;
 ? ? ? ? ?  index  index.html index.htm;
 ? ? }
?
?
?
5. ?#重啟nginx並測試
http://192.168.59.108/1.jpg
http://192.168.59.108/test.html

切換至cd /usr/local/nginx/html/目錄下

建立test資料夾,並在裡面建立靜態網頁

拖一張圖片至test下

設定主組態檔

重啟nginx並測試

到此這篇關於Tomcat多範例與負載均衡的文章就介紹到這了,更多相關Tomcat多範例與負載均衡內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com