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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

50 Tomcat 集群部署

發布時間:2024/3/26 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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服務

  • 定義虛擬主機
  • vim /soft/tomcat/conf/server.xml<!--站點zrlog.oldxu.com--><Host name="zrlog.oldxu.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包至指定目錄
  • [root@web01 conf]# mkdir /zrlog [root@web01 conf]# ll /zrlog/ 總用量 11316 -rw-r--r-- 1 root root 11585583 511 11:32 ROOT.war
  • 重啟tomcat應用
  • 1.自動加壓.war包 2.自動部署,war包 (自動生成ROOT目錄) [root@web01 conf]# /soft/tomcat/bin/shutdown.sh [root@web01 conf]# /soft/tomcat/bin/startup.sh
  • 檢查是否部署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站點
  • 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/conf/tomcat-users.xml
  • <role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="oldxu" password="123456" roles="manager-gui,admin-gui"/>
  • 還需要配置該項目的訪問權限,因為Tomcat默認管理頁面僅允許本機訪問,如果希望其他網段能正常訪問,需要配置允許規則。
    vim /soft/tomcat/webapps/manager/META-INF/context.xml
  • allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> #修改為 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.0\.0\.\d+" />
    • 為zrblog添加/admin/添加base認證

    1.需要找到項目下的WEB-INF/web.xml進行配置。(了解)
    [root@es-node1 tomcat]# vim /zrlog/ROOT/WEB-INF/web.xml

    <web-app> ...<security-constraint><!--定義資源名稱以及需要認證的url--><web-resource-collection><web-resource-name>zrlog</web-resource-name><url-pattern>/admin/*</url-pattern></web-resource-collection><!--給對應資源關聯角色名--><auth-constraint><role-name>zrlog_role</role-name></auth-constraint></security-constraint><!--調用BASIC方法來實現認證--><login-config><auth-method>BASIC</auth-method><realm-name>Default</realm-name></login-config> ... </web-app>

    2.配置用戶名密碼,關聯對應的角色(多個role不要使用相同用戶)
    [root@es-node1 tomcat]# vim /soft/tomcat/conf/tomcat-users.xml

    <role rolename="zrlog_role"/> <user username="tomcat" password="123456" roles="zrlog_role"/>

    重啟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

    upstream zrlog {server 172.16.1.7:8080;server 172.16.1.8:8080; }server {listen 80;server_name zrlog.oldxu.com;#tomcat啟動的java程序,可以直接通過proxy_pass進行負載均衡location / {proxy_pass http://zrlog;include proxy_params;} }

    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

    <Connector port="80" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="443" /><Connector port="443"protocol="HTTP/1.1"SSLEnabled="true"scheme="https"secure="true"keystoreFile="/ssl/3434295_aliyun.xuliangwei.com.pfx"keystoreType="PKCS12"keystorePass="OpI94943"clientAuth="false"SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/> mkdir /ssl/------>>>放入證書

    2.1 修改 localhost

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

    2.2 配置http跳轉 https
    在負載均衡上配置證書就可以實現全棧https

    web1web2lb3
    172.16.1.7172.16.1.810.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測試頁面

    <!--站點session.oldxu.com--><Host name="session.oldxu.com" appBase="/session"unpackWARs="true" autoDeploy="true"></Host>

    [root@web02 ~]# mkdir -p /session/ROOT
    [root@web02 ~]# vi /session/ROOT/index.jsp

    <body> <% //HttpSession session = request.getSession(true); System.out.println(session.getCreationTime()); out.println("<br> web02 SESSION ID:" + session.getId() + "<br>"); out.println("Session created time is :" + session.getCreationTime() + "<br>"); %> </body>
    • 5.接入負載均衡
      [root@lb01 conf.d]# cat /etc/nginx/conf.d/proxy_session.oldxu.com.conf
    upstream session {server 172.16.1.7:8080;server 172.16.1.8:8080; }server {listen 80;server_name session.oldxu.com;location / {proxy_pass http://session;include proxy_params;} }

    建議:
    1.先配置session的網站
    2.搭建nginx+tomcat集群
    3.測試訪問,演示是否web01和web02的session不一致
    4.接入redis,實現tomcat共享會話信息
    5.再次測試,請求web01和web02 看session是否是一致的。
    6.登陸redis查看是否存在對應的session的key

    總結

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

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