Tomcat多实例和负载均衡
文章目錄
- 一、Tomcat多實例
- 1.1 Tomcat多實例的步驟(理論)
- 1.安裝好 jdk
- 2.安裝 tomcat
- 3.配置 tomcat 環境變量
- 4.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 實例配置不能有重復的端口號
- 5.修改各 tomcat 實例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 環境變量
- 6.啟動各 tomcat 中的 /bin/startup.sh
- 7.瀏覽器訪問測試
- 1.2 Tomcat多實例的具體實驗步驟(實操)
- 第一步:放入安裝關閉防火墻和selinux
- 第二步:安裝JDK并設置環境變量
- 1)安裝JKD
- 2)編寫java腳本設置JDK環境變量
- 3)運行腳本文件,然后查看jdk版本
- 第三步:安裝tomcat
- 1)解壓縮tomcat
- 2)創建tomcat多實例的目錄,并移動復制文件
- 第四步:配置tomcat環境變量
- 1)編寫腳本
- 第五步:修改 tomcat2 中的 server.xml 文件,要求各 tomcat 實例配置不能有重復的端口號
- 1)修改主配置文件,修改Server prot,默認為8005 -> 修改為8006
- 2)修改Connector port,HTTP/1.1 默認為8080 -> 修改為8081
- 3)修改Connector port AJP/1.3,默認為8009 -> 修改為8010
- 第六步:修改各 tomcat 實例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 環境變量
- 1)修改tomcat1的startup.sh
- 2)修改tomcat1的shutdown.sh
- 3)修改tomcat2的startup.sh
- 4)修改tomcat2的shutdown.sh
- 第七步:啟動各 tomcat 中的 /bin/startup.sh
- 第八步:瀏覽器中訪問測試
- 二、Nginx+Tomcat負載均衡、動靜分離
- 2.1 Nginx+Tomcat負載均衡、動靜分離的步驟(理論)
- 1.部署Nginx 負載均衡器
- 2.部署2臺Tomcat 應用服務器
- 3.動靜分離配置
- (1)Tomcat1 server 配置
- (2)Tomcat2 server 配置
- (3)Nginx server 配置
- 4.測試效果
- 2.2 Nginx+Tomcat負載均衡、動靜分離的具體實驗步驟(實操)
- 第一步:準備好Nginx服務器(192.168.153.50),具體步驟參考:互聯網最受歡迎的開源Web服務器軟件——Nginx的搭建
- 第二步:準備好tomcat服務器(192.168.153.60:8080),具體步驟參考:必須要掌握的開源Web應用服務器—Tomcat服務部署和優化
- 第三步:準備好tomcat服務器的兩個實例(192.168.153.40:8080和192.168.153.40:8081),具體步驟參考本文第一段
- 第四步:動靜分離Tomcat1 server 配置
- 1)配置Tomcat1的動態網頁顯示內容
- 2)添加新的host內容
- 3)重啟服務
- 第五步:Tomcat2 server 配置(實例一)
- 1)創建Tomcat實例1和Tomcat實例2的網頁測試目錄test和測試網頁文件
- 2)Tomcat1主配置刪除前面的 HOST 配置,添加新的HOST配置
- 3)重啟服務
- 第五步:Tomcat2 server 配置(實例二)
- 1)創建Tomcat實例2的測試網頁文件
- 2)Tomcat2主配置刪除前面的 HOST 配置,添加新的HOST配置
- 3)重啟服務
- 第六步:Nginx server 配置(192.168.153.50)
- 1)準備網頁顯示相關內容
- 2)修改配置
- 3)添加新的HOST
- 4)重啟服務
- 第七步:瀏覽器中進行測試,動態頁面測試進行不斷刷新即可
- 測試結果一:靜態頁面
- 測試結果一:圖片
- 測試結果二:動態頁面test1
- 測試結果二:動態頁面test2
- 測試結果二:動態頁面test3
一、Tomcat多實例
1.1 Tomcat多實例的步驟(理論)
1.安裝好 jdk
2.安裝 tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mkdir /usr/local/tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2
3.配置 tomcat 環境變量
vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1
#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2
source /etc/profile.d/tomcat.sh
4.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 實例配置不能有重復的端口號
vim /usr/local/tomcat/tomcat2/conf/server.xml
#22行,修改Server prot,默認為8005 -> 修改為8006
<Connector port=“8081” protocol=“HTTP/1.1” #69行,修改Connector port,HTTP/1.1 默認為8080 -> 修改為8081
#116行,修改Connector port AJP/1.3,默認為8009 -> 修改為8010
5.修改各 tomcat 實例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 環境變量
vim /usr/local/tomcat/tomcat1/bin/startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下內容
export CATALINA_BASE=CATALINABASE1exportCATALINAHOME=CATALINA_BASE1 export CATALINA_HOME=CATALINAB?ASE1exportCATALINAH?OME=CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1
vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=CATALINABASE1exportCATALINAHOME=CATALINA_BASE1 export CATALINA_HOME=CATALINAB?ASE1exportCATALINAH?OME=CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1
vim /usr/local/tomcat/tomcat2/bin/startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=CATALINABASE2exportCATALINAHOME=CATALINA_BASE2 export CATALINA_HOME=CATALINAB?ASE2exportCATALINAH?OME=CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=CATALINABASE2exportCATALINAHOME=CATALINA_BASE2 export CATALINA_HOME=CATALINAB?ASE2exportCATALINAH?OME=CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
6.啟動各 tomcat 中的 /bin/startup.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
/usr/local/tomcat/tomcat2/bin/startup.sh
netstat -natp | grep java
7.瀏覽器訪問測試
http://192.168.80.10:8080
http://192.168.80.10:8081
1.2 Tomcat多實例的具體實驗步驟(實操)
第一步:放入安裝關閉防火墻和selinux
第二步:安裝JDK并設置環境變量
1)安裝JKD
2)編寫java腳本設置JDK環境變量
3)運行腳本文件,然后查看jdk版本
第三步:安裝tomcat
1)解壓縮tomcat
2)創建tomcat多實例的目錄,并移動復制文件
第四步:配置tomcat環境變量
1)編寫腳本
運行腳本文件
第五步:修改 tomcat2 中的 server.xml 文件,要求各 tomcat 實例配置不能有重復的端口號
1)修改主配置文件,修改Server prot,默認為8005 -> 修改為8006
2)修改Connector port,HTTP/1.1 默認為8080 -> 修改為8081
3)修改Connector port AJP/1.3,默認為8009 -> 修改為8010
第六步:修改各 tomcat 實例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 環境變量
1)修改tomcat1的startup.sh
2)修改tomcat1的shutdown.sh
3)修改tomcat2的startup.sh
4)修改tomcat2的shutdown.sh
第七步:啟動各 tomcat 中的 /bin/startup.sh
第八步:瀏覽器中訪問測試
二、Nginx+Tomcat負載均衡、動靜分離
2.1 Nginx+Tomcat負載均衡、動靜分離的步驟(理論)
Nginx 服務器:192.168.153.50:80
Tomcat服務器1:192.168.153.60:8080
Tomcat服務器2:192.168.153.40:8080 192.168.153.40:8081
1.部署Nginx 負載均衡器
systemctl stop firewalld
setenforce 0
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
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 --with-http_gzip_static_module --with-http_flv_module --with-stream
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
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
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
2.部署2臺Tomcat 應用服務器
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=JAVAHOME/jreexportCLASSPATH=.:JAVA_HOME/jre export CLASSPATH=.:JAVAH?OME/jreexportCLASSPATH=.:JAVA_HOME/lib:JREHOME/libexportPATH=JRE_HOME/lib export PATH=JREH?OME/libexportPATH=JAVA_HOME/bin:$PATH
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.動靜分離配置
(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”%>
JSP test1 page #指定為 test1 頁面 <% out.println("動態頁面 1,http://www.test1.com");%>vim /usr/local/tomcat/conf/server.xml
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
(2)Tomcat2 server 配置
mkdir /usr/local/tomcat/tomcat1/webapps/test /usr/local/tomcat/tomcat2/webapps/test
vim /usr/local/tomcat/tomcat1/webapps/test/index.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>
JSP test2 page #指定為 test2 頁面 <% out.println("動態頁面 2,http://www.test2.com");%>vim /usr/local/tomcat/tomcat1/conf/server.xml
#刪除前面的 HOST 配置
/usr/local/tomcat/tomcat1/bin/shutdown.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>
JSP test3 page #指定為 test3 頁面 <% out.println("動態頁面 3,http://www.test3.com");%>vim /usr/local/tomcat/tomcat2/conf/server.xml
#刪除前面的 HOST 配置
/usr/local/tomcat/tomcat2/bin/shutdown.sh
/usr/local/tomcat/tomcat2/bin/startup.sh
(3)Nginx server 配置
#準備靜態頁面和靜態圖片
echo ‘
這是靜態頁面
’ > /usr/local/nginx/html/index.htmlmkdir /usr/local/nginx/html/img
cp /root/game.jpg /usr/local/nginx/html/img
vim /usr/local/nginx/conf/nginx.conf
…
http {
…
#gzip on;
#配置負載均衡的服務器列表,weight參數表示權重,權重越高,被分配到的概率越大
upstream tomcat_server {
server 192.168.153.60:8080 weight=1;
server 192.168.153.40:8080 weight=1;
server 192.168.153.40:8081 weight=1;
}
server {
listen 80;
server_name www.kgc.com;
charset utf-8;
#access_log logs/host.access.log main;
#配置Nginx處理動態頁面請求,將 .jsp文件請求轉發到Tomcat 服務器處理
location ~ .*.jsp$ {
proxy_pass http://tomcat_server;
#設置后端的Web服務器可以獲取遠程客戶端的真實IP
##設定后端的Web服務器接收到的請求訪問的主機名(域名或IP、端口),默認HOST的值為proxy_pass指令設置的主機名。如果反向代理服務器不重寫該請求頭的話,那么后端真實服務器在處理時會認為所有的請求都來在反向代理服務器,如果后端有防攻擊策略的話,那么機器就被封掉了。
proxy_set_header HOST KaTeX parse error: Expected 'EOF', got '#' at position 7: host; #?#把remote_addr賦值給X-Real-IP,來獲取源IP
proxy_set_header X-Real-IP $remote_addr;
##在nginx 作為代理服務器時,設置的IP列表,會把經過的機器ip,代理機器ip都記錄下來
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#配置Nginx處理靜態圖片請求
location ~ .*.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/local/nginx/html/img;
expires 1d;
}
location / {
root html;
index index.html index.htm;
}
…
}
…
}
4.測試效果
測試靜態頁面效果
瀏覽器訪問 http://192.168.80.10/
瀏覽器訪問 http://192.168.80.10/game.jpg
測試負載均衡效果,不斷刷新瀏覽器測試
瀏覽器訪問 http://192.168.80.10/index.jsp
2.2 Nginx+Tomcat負載均衡、動靜分離的具體實驗步驟(實操)
第一步:準備好Nginx服務器(192.168.153.50),具體步驟參考:互聯網最受歡迎的開源Web服務器軟件——Nginx的搭建
第二步:準備好tomcat服務器(192.168.153.60:8080),具體步驟參考:必須要掌握的開源Web應用服務器—Tomcat服務部署和優化
第三步:準備好tomcat服務器的兩個實例(192.168.153.40:8080和192.168.153.40:8081),具體步驟參考本文第一段
第四步:動靜分離Tomcat1 server 配置
1)配置Tomcat1的動態網頁顯示內容
2)添加新的host內容
3)重啟服務
第五步:Tomcat2 server 配置(實例一)
1)創建Tomcat實例1和Tomcat實例2的網頁測試目錄test和測試網頁文件
2)Tomcat1主配置刪除前面的 HOST 配置,添加新的HOST配置
3)重啟服務
第五步:Tomcat2 server 配置(實例二)
1)創建Tomcat實例2的測試網頁文件
2)Tomcat2主配置刪除前面的 HOST 配置,添加新的HOST配置
3)重啟服務
第六步:Nginx server 配置(192.168.153.50)
1)準備網頁顯示相關內容
2)修改配置
3)添加新的HOST
4)重啟服務
第七步:瀏覽器中進行測試,動態頁面測試進行不斷刷新即可
測試結果一:靜態頁面
測試結果一:圖片
測試結果二:動態頁面test1
測試結果二:動態頁面test2
測試結果二:動態頁面test3
補充:
Nginx 負載均衡模式:
●rr 負載均衡模式:
每個請求按時間順序逐一分配到不同的后端服務器,如果超過了最大失敗次數后(max_fails,默認1),在失效時間內(fail_timeout,默認10秒),該節點失效權重變為0,超過失效時間后,則恢復正常,或者全部節點都為down后,那么將所有節點都恢復為有效繼續探測,一般來說rr可以根據權重來進行均勻分配。
●least_conn 最少連接:
優先將客戶端請求調度到當前連接最少的服務器。
●ip_hash 負載均衡模式:
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題,但是ip_hash會造成負載不均,有的服務請求接受多,有的服務請求接受少,所以不建議采用ip_hash模式,session 共享問題可用后端服務的 session 共享代替 nginx 的 ip_hash。
●fair(第三方)負載均衡模式:
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
●url_hash(第三方)負載均衡模式:
和ip_hash算法類似,是對每個請求按url的hash結果分配,使每個URL定向到一個同 一個后端服務器,但是也會造成分配不均的問題,這種模式后端服務器為緩存時比較好
Nginx 四層代理配置:
和http同等級:所以一般只在http上面一段設置,
stream {
log_format main ‘$remote_addr upstreamaddr?[upstream_addr - [upstreama?ddr?[time_local] $status $upstream_bytes_sent’;
access_log /var/log/nginx/k8s-access.log main;
upstream appserver{
server 192.168.80.100:8080 weight=1;
server 192.168.80.101:8080 weight=1;
server 192.168.80.101:8081 weight=1;
}
server {
listen 8080;
proxy_pass appserver;
}
}
http {
…
注:配置4層代理,記得在Nginx中添加 --with-stream 模塊
總結
以上是生活随笔為你收集整理的Tomcat多实例和负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tomcat服务部署和优化
- 下一篇: LVS负载均衡群集部署之——NAT模式的