目錄
一、多實例
二、?nginx+tomcat的負載均衡和動靜分離
三、Tomcat 客戶端->四層代理->七層代理->tomcat服務器
實驗:
問題總結:
tomcat日志文件:/usr/local/tomcat/logs/catalina.out
一、多實例
在一臺服務器上有多個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/tomcat23.配置 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/tomcat2source /etc/profile.d/tomcat.sh4.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 實例配置不能有重復的端口號
vim /usr/local/tomcat/tomcat2/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN"> #22行,修改Server prot,默認為8005 -> 修改為8006
<Connector port="8081" protocol="HTTP/1.1" #69行,修改Connector port,HTTP/1.1 默認為8080 -> 修改為8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
#116行,修改Connector port AJP/1.3,默認為8009 -> 修改為8010----------------------------------------------------------------------------------------------------------
第一個連接器默認監聽8080端口,負責建立HTTP連接。在通過瀏覽器訪問Tomcat服務器的Web應用時,使用的就是這個連接器。
第二個連接器默認監聽8009端口,負責和其他的HTTP服務器建立連接。
在把Tomcat與其他HTTP服務器集成時,需要用到這個連接器。第三個連接器
port="8010":指定AJP連接器監聽的端口號。在這個示例中,AJP連接器監聽在8010端口上。protocol="AJP/1.3":指定連接器所使用的協議。這里設置為AJP/1.3,表示使用AJP協議的版本1.3。redirectPort="8443":指定重定向端口。當AJP連接器接收到HTTP請求時,如果請求是通過HTTPS(加密)訪問的,
則會將請求重定向到8443端口。AJP連接器用于將靜態資源和動態請求從前端Web服務器(如Apache HTTP Server)轉發到Tomcat服務器。
這樣可以將Tomcat服務器隱藏在防火墻之后,提高安全性,同時提供更高的性能,特別是在處理動態請求時。
常見的AJP連接器配置是為了將Tomcat與Apache HTTP Server或Nginx等前端服務器集成,以實現負載均衡、反向代理等功能
----------------------------------------------------------------------------------------------------------5.修改各 tomcat 實例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 環境變量
vim /usr/local/tomcat/tomcat1/bin/startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下內容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1vim /usr/local/tomcat/tomcat2/bin/startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME26.啟動各 tomcat 中的 /bin/startup.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
/usr/local/tomcat/tomcat2/bin/startup.sh netstat -natp | grep java7.瀏覽器訪問測試
http://192.168.233.21:8080
http://192.168.233.21:8081
二、?nginx+tomcat的負載均衡和動靜分離
靜:靜態頁面
動:動態頁面
分別可以對靜態頁面和動態頁面發起不同的請求,會有不同的響應結果
nginx:反向代理-----負載均衡-------tomcat是后端服務器------web靜態由nginx來做-------靜態請求到nginx-----動態頁面到tomcat
tomcat并發量能力弱, 只有nginx的六分之一,所以要有負載均衡進行合理的調用分配。
nginx:請求靜態頁面她可以直接響應用戶的靜態請求,動態請求,通過nginx服務器轉發到后端的tomcat進行處理。同時,設置動態請求的負載均衡。
結構圖:
1、備份nginx配置文件
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak.20230811
2、編輯nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
#添加以下內容
?upstream ky30 {????????
????server 192.168.11.14:8080 weight=1;?#多實例,不同端口
????server 192.168.11.14:8081 weight=1;?#多實例,不同端口
????server 192.168.11.15:8080 weight=2;?#單臺
}
編輯html文件:
cd /usr/local/nginx/html
vim index.htm
#復制以下內容
<html>
<body>
<h1> this is Nginx static test !</h2>
<img src="gundam.jpg"/>
</body>
</html>
?
3、進入tomcat多實例主機
cd /usr/local/tomcat/tomcat1/webapps
Mkdir test
Cd test
Vim 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>
cd /usr/local/tomcat/tomcat2/webapps
Mkdir test
Cd test
Vim 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>
4、編輯tomcat多實例主機的server.xml
vim /usr/local/tomcat/tomcat1/conf/server.xml
#刪除前面的host配置
#復制粘貼以下內容,注意<Host>標記!!!
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/tomcat1/webapps/test" path="" reloadable="true" />
</Host>
vim /usr/local/tomcat/tomcat2/conf/server.xml
#刪除前面的host配置
#復制粘貼以下內容,注意<Host>標記!!!
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/tomcat2/webapps/test" path="" reloadable="true" />
</Host>
/usr/local/tomcat/tomcat1/bin/shutdown.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
/usr/local/tomcat/tomcat2/bin/shutdown.sh
/usr/local/tomcat/tomcat2/bin/startup.sh
5、編輯單臺tomcat的jsp文件
cd /usr/local/tomcat/webapps
Mkdir test
Cd test
Vim index.jsp
#復制粘貼以下內容
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test3?page</title>
</head>
<body>
<% out.println("動態頁面 3,http://www.test3.com");%>
</body>
</html>
6、編輯單臺tomcat的server.xml文件
vim /usr/local/tomcat/conf/server.xml
#刪除前面的host配置
#復制粘貼以下內容,注意<Host>標記!!!
<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
三、Tomcat 客戶端->四層代理->七層代理->tomcat服務器
實驗:
四層代理:
?
?七層代理1:
?
?七層代理2:
?
編輯Tomcat服務器配置:
Tomcat多實例服務器:
cd /usr/local/tomcat/tomcat1/webapps
Mkdir test
Cd test
Vim 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>
cd /usr/local/tomcat/tomcat2/webapps
Mkdir test
Cd test
Vim 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>
編輯tomcat多實例主機的server.xml
vim /usr/local/tomcat/tomcat1/conf/server.xml
#刪除前面的host配置
#復制粘貼以下內容,注意<Host>標記!!!
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/tomcat1/webapps/test" path="" reloadable="true" />
</Host>
vim /usr/local/tomcat/tomcat2/conf/server.xml
#刪除前面的host配置
#復制粘貼以下內容,注意<Host>標記!!!
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/tomcat2/webapps/test" path="" reloadable="true" />
</Host>
/usr/local/tomcat/tomcat1/bin/shutdown.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
/usr/local/tomcat/tomcat2/bin/shutdown.sh
/usr/local/tomcat/tomcat2/bin/startup.sh
編輯單臺tomcat的jsp文件
cd /usr/local/tomcat/webapps
Mkdir test
Cd test
Vim index.jsp
#復制粘貼以下內容
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test3?page</title>
</head>
<body>
<% out.println("動態頁面 3,http://www.test3.com");%>
</body>
</html>
編輯單臺tomcat的server.xml文件
vim /usr/local/tomcat/conf/server.xml
#刪除前面的host配置
#復制粘貼以下內容,注意<Host>標記!!!
<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
測試:
192.168.11.12:82
192.168.11.12:82/index.jsp
問題總結:
1、如果配置完成后,測試訪問頁面,發現進入weclome to cent0s7頁面,就代表,進入了使用yum安裝的nginx配置的頁面(/usr/share/nginx/html)
出現此情況表示:進入了yum安裝的nginx配置的頁面了,和自己安裝的nginx沖突,可以systemctl stop nginx后,進入自己配置的nginx文件中,輸入指令:nginx ?,可以開啟單一的配置文件中的nginx服務,而不會像systemctl restart nginx 那樣,打開所有nginx。
或者刪除nginx服務,然后重新編譯安裝。(慎重)
2、出現此狀況:
?可能是你的配置文件輸入有錯誤,寫完后一定要輸入:nginx -t ?,查看配置文件中拼寫是否有錯誤。
3、如果發現比如端口80被占用的情況
Netstat -antp | grep 80
#查看端口情況
此時,有兩種解決辦法:
1、kill -9 xxx 殺死占用端口的進程
2、更改配置文件中的端口號,避免出現重復使用端口號導致的端口被占用的情況。