50 Tomcat 集群部署
文章目錄
- 1.JVM基本介紹
- 2.Tomcat是什么,與Nginx的區別。
- 3.Tomcat安裝、配置、啟動
- 4.Tomcat的HTTP請求過程
- 4.使用tomcat部署web服務
- 5.使用tomcat部署多節點web服務
- 6.tomcat的base的基礎認證
- 7.java源碼包、jar包、war包的關系、聯系、區別?
- 8. tomcat集群部署
1.JVM基本介紹
JAVA業務都是運行在java虛擬機上的,簡稱 jvm ( java virtual machine )
為什么java需要jvm虛擬機?
早期:
C語言 不支持跨域平臺 (游戲)
Windows:在編譯一次
MACOS:還需要編譯
LINUX: 編譯一次
可移植性比較的差。
JAVA: 可以做到一次編譯,多處運行。
windows、linux、macos。
需要我們在操作系統上啟動運行一個jvm虛擬機,這樣我們將java編譯好的war、jar包
在windows、linux、macos平臺上運行起來。無需我們重復編譯。
jvm是由誰提供的呢?
jre:java運行環境 java runtime environment,包含了jvm。
jdk:java開發環境 會包含java的運行環境 jre。(yum install java -y 會安裝jdk)
如果我們只是單純運行java代碼,jre足夠。 jdk。
2.Tomcat是什么,與Nginx的區別。
Tomcat是一個web服務,提供動態程序的解析(java),支持靜態資源。
企業nginx+tomcat模型, nginx處理靜態資源,tomcat處理動態資源(java),能加速網站的訪問和降低訪問的延遲。
Tomcat 是一個小型的輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。
3.Tomcat安裝、配置、啟動
1.安裝jdk
yum install java -y
2.安裝Tomcat ( 下載 Tomcat、解壓、啟動 )
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz
mkdir /soft
tar xf apache-tomcat-9.0.34.tar.gz -C /soft/
ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat
3.目錄結構
bin 主要包含啟動和關閉tomcat的腳本(啟停java腳本依賴jar包文件)
conf tomcat配置文件的目錄
lib tomcat運行時需要加載的jar包
logs tomcat日志存放位置
temp tomcat臨時存放文件路徑
webapps tomcat默認站點目錄
work tomcat運行時產生的緩存文件
4.Tomcat的HTTP請求過程
用戶發出一個請求,如http://tomcat.oldxu.com:8080/index.jsp
Connector發現是http/1.1協議,而且還是8080端口,于是就把請求接收后交給符合條件的Engine
Engine通過請求中的主機名tomcat.oldxu.com查找滿足條件的虛擬主機(Host)
找到后就去此虛擬主機指定的appBase(代碼存放的目錄)最后將解析產生的結果返回給用戶。
4.使用tomcat部署web服務
配置遠程數據庫連接信息
MariaDB [(none)]> create database zrlog charset utf8; MariaDB [(none)]>grant all privileges on *.* to 'all'@'%' identified by 'xxxxxx';5.使用tomcat部署多節點web服務
web1 172.16.1.7
web2 172.16.1.8
1.安裝tomcat
[root@web02 ~]# yum install java -y
3.拷貝代碼 (注意是在web01節點操作的)
[root@web01 ~]# scp -rp /soft root@10.0.0.8:/
[root@web01 ~]# scp -rp /zrlog root@10.0.0.8:/
4.web02操作如下
[root@web02 ~]# rm -rf /soft/tomcat/
[root@web02 ~]#ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat
5.共享靜態資源。
yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# chown -R www.www /data/zrlog/
[root@nfs ~]# systemctl restart nfs
所有web節點都需要掛載
mount -t nfs 172.16.1.31:/data/zrlog /zrlog/ROOT/attached/
6.tomcat的base的基礎認證
配置Tomcat網頁管理頁面。 ( nginx basic auth)
vim /soft/tomcat/webapps/manager/META-INF/context.xml
- 為zrblog添加/admin/添加base認證
1.需要找到項目下的WEB-INF/web.xml進行配置。(了解)
[root@es-node1 tomcat]# vim /zrlog/ROOT/WEB-INF/web.xml
2.配置用戶名密碼,關聯對應的角色(多個role不要使用相同用戶)
[root@es-node1 tomcat]# vim /soft/tomcat/conf/tomcat-users.xml
重啟tomcat
[root@es-node1 ~]#/soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh
7.java源碼包、jar包、war包的關系、聯系、區別?
1.什么是源碼包?
由java工程師編寫的java代碼,稱為java源碼包。
編譯( maven 方式去編譯java的源代碼 )
編譯之后會得到一個包裹:
war jar
2.什么是war包?
由源碼編譯后生成的產物,可以直接放入 tomcat運行起來。( 比較廣泛 )
3.什么是jar包?
由源碼編譯后生成的產物。
1.不能獨立運行起來,它可能被某個java程序依賴運行?;蛘遷ar包運行所依賴。
2.可獨立運行起來的, java -jar xxx.jar 直接啟動運行,無需tomcat
4.源碼包、jar、war:
1.源碼包編譯后會產生war包、jar包
2.war通常是直接由tomcat運行啟動,啟動加載項目時會依賴一些jar包。
3.jar包,
分為不可獨立運行(被java程序依賴運行、或者是被war包依賴運行)
分為可獨立運行:可以直接對外提供服務。只需要有java環境即可。啟動命令: java -jar xx.jar
8. tomcat集群部署
8.1 Nginx_proxy
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_zrlog.oldxu.com.conf
8.2 單節點Tomcat實現HTTPS ( 了解 )
1.修改tomcat配置: server.xml
0.首先需要有證書 ( 必須 )
1.將http的默認監聽端口8080 修改為 80,redirect至 443
2.開啟https監聽器,配置證書即可。
3.將http強制跳轉https ( tomcat操作,與nginx無關。)
使用新機器web03演示
[root@nfs ~]# yum install java -y
[root@nfs ~]# mkdir /soft
[root@nfs ~]#tar xf apache-tomcat-9.0.34.tar.gz -C /soft/
[root@nfs ~]#ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat
vim /soft/tomcat/conf/server.xml
2.1 修改 localhost
<Host name="aliyun.xuliangwei.com" appBase="webapps"2.2 配置http跳轉 https
在負載均衡上配置證書就可以實現全棧https
| 172.16.1.7 | 172.16.1.8 | 10.0.0.5 |
[root@lb01 conf.d]# cat /etc/nginx/conf.d/proxy_zrlog.oldxu.com.conf
upstream zrlog {server 172.16.1.7:8080;server 172.16.1.8:8080; }server {listen 443 ssl;server_name zrlog.oldxu.com;ssl_certificate ssl_key/server.crt;ssl_certificate_key ssl_key/server.key;#tomcat啟動的java程序,可以直接通過proxy_pass進行負載均衡location / {proxy_pass http://zrlog;include proxy_params;} }server {listen 80;server_name zrlog.oldxu.com;return 302 https://$server_name$request_uri; }8.3 Nginx+Tomcat+Redis實現集群會話共享
多種方式:
1.ip_hash
2.mysql
3.redis
4.tomcat自帶的cluster session復制 ( 官方建議不要超過4個tomcat節點 )
-
準備web01 和 web02
支持redis session共享----->>>下載 tomcat-cluster-redis-session-manager -
解壓
-
1.拷貝所有的jar包
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/ -
2.拷貝redis配置文件,并且更新redis配置文件
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/ -
3.Add the below two lines in your tomcat/conf/context.xml file.
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" /> -
4.準備web01 和web02 一個session測試頁面
[root@web02 ~]# mkdir -p /session/ROOT
[root@web02 ~]# vi /session/ROOT/index.jsp
- 5.接入負載均衡
[root@lb01 conf.d]# cat /etc/nginx/conf.d/proxy_session.oldxu.com.conf
建議:
1.先配置session的網站
2.搭建nginx+tomcat集群
3.測試訪問,演示是否web01和web02的session不一致
4.接入redis,實現tomcat共享會話信息
5.再次測試,請求web01和web02 看session是否是一致的。
6.登陸redis查看是否存在對應的session的key
總結
以上是生活随笔為你收集整理的50 Tomcat 集群部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Realsense D435i关闭IR结
- 下一篇: 无公网IP,使用ZeroTier免费内网