日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat 集群部署

發布時間:2024/3/26 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat 集群部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Tomcat快速入門

Tomca基本介紹

環境準備

  • JVM介紹
  • Java業務都是運行在java虛擬機上,java虛擬機簡稱JVM( java virtual machine)

? 虛擬機是通過軟件模擬出具有完整硬件系統的功能

? 為什么Java需要JVM虛擬機

? 早期C語言不支持跨平臺,如果C語言想要在Windows Linux Mac上運行,需要進行分別編譯,那么在Linux上有很多優秀的軟件,如果需要在Windows上使用需要重新編譯,移植性差

而Java則不同,Java是可以跨平臺,只需要將源碼進行一次編譯,能夠在不同的操作系統運行

JAVA是如何做到的?

? 它只需要在Windwos Linux系統上運行一個jvm,這樣我們能將Java編譯好的war包在Windows和Linux平臺運行起來,無需我們重復編譯。而JVM是由jre提供

JAVA環境JRE和JDK的區別

jre是java的運行環境,包含jvm

jdk是java的開發環境,會包含java的運行環境jre

如果說單純的運行java代碼,只需要jre足夠,但如果需要提供開發環境以及運行環境則需要JDK

Tomcat

Tomcat和Nginx類似,都是WEB服務器軟件 只不過Tomcat是基于JAVA開發的WEB服務,主要解析JAVA代碼

Nginx僅支持靜態資源解析,而Tomcat支持解析Java開發的WEB應用,還支持解析靜態資源(效率不高)

Nginx適合做前端負載均衡,Tomcat適合做后端應用服務處理

通常情況企業會使用Nginx+Tomcat結合,Nginx處理靜態資源,Tomcat處理動態資源

Tomcat快速安裝

安裝jdk

yum -y install java 或者上傳rpm包 rpm -ivh jdk....rpm

安裝Tomcat

(下載 Tomcat、解壓、啟動 )

Tomcat官網: https://tomcat.apache.org/

[root@web01 ~]#wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.58/bin/apache-tomcat-9.0.58.tar.gz --no-check-certificate[root@web01 ~]#`mkdir /soft` [root@web01 ~]#`tar xf apache-tomcat-9.0.39.tar.gz -C /soft/` [root@web01 ~]#` ln -s /soft/apache-tomcat-9.0.39/ /soft/tomcat` [root@web01 ~]# `/soft/tomcat/bin/startup.sh` # 啟動 [root@web01 ~]# `/soft/tomcat/bin/shutdown.sh` # 停止 [root@web01 ~]# netstat -lntp |grep javatcp6 0 0 127.0.0.1:8005 :::* LISTEN 6867/java tcp6 0 0 :::8080 :::* LISTEN 6867/java# 8080 對外提供服務的端口 # 8005 關閉Tomcat端口

配置systemc方式啟動

復制過來修改一下

[root@web03 ~]# systemctl cat nginx

寫入配置文件

cat >/usr/lib/systemd/system/tomcat.service<<'EOF' [Unit] Description=Apache Tomcat Server After=network.target remote-fs.target nss-lookup.target[Service] Type=forking ExecStart=/soft/tomcat/bin/startup.sh ExecStop=/soft/tomcat/bin/shutdown.sh ExecRetart=/soft/tomcat/bin/shutdown.sh && sleep2 && /soft/tomcat/bin/startup.sh[Install] WantedBy=multi-user.target EOF

啟動

[root@web03 ~]# systemctl daemon-reload `#重新加載系統控制配置文件[root@web03 ~]# systemctl start tomcat[root@web03 ~]# systemctl enable tomcatCreated symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.

配置文件

配置文件

tomcat軟件目錄結構:bin ---主要包含啟動和關閉tomcat的腳本(啟停java腳本依賴jar包文件) conf ---tomcat配置文件的目錄(站點配置:server.xml) lib ---tomcat運行時需要加載的jar包 logs ---tomcat日志存放位置 temp ---tomcat臨時存放文件路徑 webapps ---tomcat默認站點目錄 work ---tomcat運行時產生的緩存文件

配置文件詳解-----> tomcat/conf/server.xml [📎server.xml]

虛擬主機

cat tomcat/conf/server.xml ... <Host name="diy.ahui.org" appBase="/code/tomcat/diy" #代碼目錄unpackWARs="true" autoDeploy="true"> #是否自動解包 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="diy_access_log" #日志名稱 suffix=".txt" #日志后綴名pattern="%h %l %u %t &quot;%r&quot; %s %b" /> #日志格式 </Host>...

自定義日志格式:

重新啟動tomcat加載配置文件

[root@web01 ]# systemctl restart tomcat

創建網頁測試

[root@web01 ]# mkdir /code/tomcat/diy/ROOT -p [root@web01 ]# echo "tomcat-diy" > /code/tomcat/diy/ROOT/index.html

解析host 瀏覽器訪問

Tomcat HTTP請求過程

Ps: tomcat中Context的作用:

... <Host > <!--訪問/tt這個uri,上 / code/tt中獲取頁面資源,不存在該目錄會報錯 無法啟動Tomcat 需要提前創建--> <Context docBase=" / code/tt" path="/tt" reloadable="true" /> </Host> ...

context作用:----> 類似于nginx中的alias

用戶發出一個請求,如http://tomcat.ahui.com:8080/index.jsp

Connector發現是http/1.1協議,而且還是8080端口,于是就把請求接收后交給符合條件的Engine

Engine通過請求中的主機名tomcat.ahui.com查找滿足條件的虛擬主機(Host)

找到后就去此虛擬主機指定的appBase(代碼存放的目錄)最后將解析產生的結果返回給用戶。

Tomcat管理頁面


Tomcat自帶的管理頁面
管理功能
監控功能

1.所有的管理頁面,都將權限賦予給了角色,而角色的名稱是固定的: manager-gui admin-gui
2.需要添加一個用戶,將用戶捆綁至對應的角色,這樣用戶就可以訪問到對應的頁面

[root@web01 ROOT]# vim /soft/tomcat/conf/tomcat-users.xml ... <role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="tomcat" password="123456" roles="manager-gui,admin-gui"/> </tomcat-users>

3.由于項目默認允許127.0.0.1訪問,所以配置好了角色和用戶也無法正常訪問:

[root@web01 ROOT]# vim /soft/tomcat/webapps/host-manager/META-INF/context.xml [root@web01 ROOT]# vim /soft/tomcat/webapps/manager/META-INF/context.xml

默認狀態

<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

修改后的狀態:10.0.0.\d

<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

4.重啟tomcat并訪問

Tomcat部署zrlog項目

1.定義虛擬主機

vim /soft/tomcat/conf/server.xml ...<!--站點zrlog.ahui.com--><Host name="zrlog.ahui.com" appBase="/zrlog"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="zrlog_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host>

上傳war包至指定目錄

zrlog官網: https://zrlog.com/

[root@web01 conf]# mkdir /zrlog [root@web01 conf]# ll /zrlog/總用量 11316 -rw-r--r-- 1 root root 11585583 5月 11 11:32 ROOT.war

重啟tomcat應用

[root@web01 conf]# /soft/tomcat/bin/shutdown.sh [root@web01 conf]# /soft/tomcat/bin/startup.sh

在/zrlog目錄下的解壓.war包

自動部署ROOT.war包 (自動生成ROOT目錄)

檢查是否部署ok

[root@web01 conf]# tail -f /soft/tomcat/logs/catalina.out 11-May-2020 11:33:32.577 信息 [main] org.apache.coyote.AbstractProtocol.start 開始協議處理句柄["http-nio-8080"] 11-May-2020 11:33:32.681 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in [4,035] milliseconds

配置遠程數據庫連接

MariaDB [(none)]> create database zrlog charset utf8; MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'xxxxxx';

訪問zrlog站點

Tomcat集群實戰

tomcat集群架構圖解

lb0110.0.0.6172.16.1.6
web1172.16.1.7
web2172.16.1.8
其他后端節點

安裝tomcat

[root[@web02 ~]# `yum install java -y`

拷貝代碼和文件 (注意是在web01節點操作的)

#發送代碼文件 [root@web01 ~]# scp -rp /soft 10.0.0.8:/ [root@web01 ~]# scp -rp /zrlog 10.0.0.8:/ #發送配置文件 [root@web01 ~]# scp /usr/lib/systemd/system/tomcat.service 172.16.1.8:/usr/lib/systemd/system/tomcat.service

web02操作如下

[root[@web02 ]# ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat [root@web02 ~]# systemctl daemon-reload [root@web02 ~]# systemctl start tomcat [root@web02 ~]# systemctl enable tomcat Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.

共享靜態資源

[root@web02 ~]# `yum install nfs-utils -y [root[@nfs ](https://www.yuque.com/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/

重啟tomcat

[root@web01 ~]# `/soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh`

注意: 在Nginx做代理時 Nginx代理后端
Nginx頭部信息默認丟棄
Nginx代理后端Tomcat 頭部信息自動攜帶,不管前面任何域名解析到負載 始終攜帶代理文件的頭部信息

Nginx_proxy

[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_zrlog.ahui.com.conf upstream zrlog {server 172.16.1.7:8080;server 172.16.1.8:8080; }server {listen 80;server_name zrlog.ahui.com;location / {proxy_pass http://zrlog; #tomcat啟動的java程序,可以直接通過proxy_pass進行負載均衡include proxy_params;} }

為tomcat日志,獲取http的Header信息

...<Host name="zrlog.ahui.org" appBase="/code/zrlog" ? unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="zrlog_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b %{User-Agent}i %{X-Forwarded-For}i" /> </Host>...

Tomcat+Nginx+HTTPS

Tomcat單節點 -–【了解項-安裝PFX格式證書】

修改tomcat配置: server.xml

  • 首先需要有證書 ( 必須 )
  • 將http的默認監聽端口8080 修改為 80,redirect至 443
  • 開啟https監聽器,配置證書即可。
  • 將http強制跳轉https ( tomcat操作,與nginx無關。)
  • 使用新機器web03演示

    [root @nfs ~]# `yum install java -y` [root @nfs ~](https://www.yuque.com/nfs) ~]# mkdir /soft [root @nfs ~](https://www.yuque.com/nfs) ~]# tar xf apache-tomcat-9.0.34.tar.gz -C /soft/ [root @nfs ~](https://www.yuque.com/nfs) ~]# ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat [root @nfs ~]# cat /soft/tomcat/conf/server.xml

    修改 localhost

    <Host name="aliyun.ahui.com" appBase="webapps"

    全棧https

    web1web2lb3
    172.16.1.7172.16.1.810.0.0.5
    [root @lb01 conf.d]# cat /etc/nginx/conf.d/proxy_zrlog.ahui.com.confupstream zrlog {server 172.16.1.7:8080;server 172.16.1.8:8080; }server {listen 443 ssl;server_name zrlog.ahui.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.ahui.com;return 302 https://$server_name$request_uri; }

    Tomcat+Nginx+Redis會話保持

    多種會話方式:1.ip_hash 2.mysql 3.redis 4.tomcat自帶的cluster session復制 ( 官方建議不要超過4個tomcat節點 )

    準備web01 和 web02

    1.配置虛擬主機 (所有節點都需要配置)

    [root@web02 ~]# vim /soft/tomcat/conf/server.xml<!--session.ahui.org--><Host name="session.ahui.org" appBase="/code/session"unpackWARs="true" autoDeploy="true"></Host>

    2.創建目錄,編寫代碼(所有節點都需要配置)

    [root@web02 ~]# mkdir /code/session/ROOT -p [root@web02 ~]# vi /code/session/ROOT/index.jsp <body><%//HttpSession session = request.getSession(true);System.out.println(session.getCreationTime());out.println("<br> web01/WEB2 SESSION ID:" + session.getId() + "<br>");out.println("Session created time is :" + session.getCreationTime()+ "<br>");%> </body>

    3.接入負載均衡

    [root @lb01 conf.d]# cat >/etc/nginx/conf.d/proxy_session.ahui.com.conf<<'EOF' upstream session {server 172.16.1.7:8080;server 172.16.1.8:8080; }server {listen 80;server_name session.ahui.org;location / {proxy_pass http://session;include proxy_params;} } EOF

    無會話保持:

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Yx8tH4DY-1656649697317)(Tomcat 集群部署.assets/image-20210913161153434.png)]

    4.接入 TomcatClusterRedisSessionManager

    ( 參考官方地址: https://github.com/ran-jit/tomcat-cluster-redis-session-manager )

    0. [root@web01 ~]# wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/4.0/tomcat-cluster-redis-session-manager.zip1.解壓zip包 [root@web01 ~]# unzip tomcat-cluster-redis-session-manager.zip2.拷貝jars到tomcat的/lib目錄中 [root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/3.拷貝conf下的redis.properties文件,到tomcat的conf文件 [root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/4.將配置文件中連接redis地址修改為如下地址即可 [root@web01 ~]# vim /soft/tomcat/conf/redis-data-cache.properties redis.hosts=172.16.1.51:63795.添加如下兩行至tomcat/conf/context.xml (添加在</Context> 上一行 ) [root@web01 ~]# vim /soft/tomcat/conf/context.xml <Valve className="tomcat.request.session.redis.SessionHandlerValve" /> <Manager className="tomcat.request.session.redis.SessionManager" />

    Tomcat+Nginx+Redis+Java

    項目地址: https://gitee.com/mail_osc/wangmarket

    —> 已編譯: git clone https://gitee.com/zheguabaoshu/tomcat-project-compilation.git

    總結

    以上是生活随笔為你收集整理的Tomcat 集群部署的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。