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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

50 Tomcat 集群部署

發(fā)布時(shí)間:2024/3/26 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 50 Tomcat 集群部署 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 1.JVM基本介紹
  • 2.Tomcat是什么,與Nginx的區(qū)別。
  • 3.Tomcat安裝、配置、啟動(dòng)
      • 4.Tomcat的HTTP請(qǐng)求過(guò)程
  • 4.使用tomcat部署web服務(wù)
  • 5.使用tomcat部署多節(jié)點(diǎn)web服務(wù)
  • 6.tomcat的base的基礎(chǔ)認(rèn)證
    • 7.java源碼包、jar包、war包的關(guān)系、聯(lián)系、區(qū)別?
  • 8. tomcat集群部署

1.JVM基本介紹

JAVA業(yè)務(wù)都是運(yùn)行在java虛擬機(jī)上的,簡(jiǎn)稱 jvm ( java virtual machine )
為什么java需要jvm虛擬機(jī)?

早期:
C語(yǔ)言 不支持跨域平臺(tái) (游戲)
Windows:在編譯一次
MACOS:還需要編譯
LINUX: 編譯一次
可移植性比較的差。

JAVA: 可以做到一次編譯,多處運(yùn)行。
windows、linux、macos。
需要我們?cè)诓僮飨到y(tǒng)上啟動(dòng)運(yùn)行一個(gè)jvm虛擬機(jī),這樣我們將java編譯好的war、jar包
在windows、linux、macos平臺(tái)上運(yùn)行起來(lái)。無(wú)需我們重復(fù)編譯。

jvm是由誰(shuí)提供的呢?
jre:java運(yùn)行環(huán)境 java runtime environment,包含了jvm。
jdk:java開(kāi)發(fā)環(huán)境 會(huì)包含java的運(yùn)行環(huán)境 jre。(yum install java -y 會(huì)安裝jdk)

如果我們只是單純運(yùn)行java代碼,jre足夠。 jdk。

2.Tomcat是什么,與Nginx的區(qū)別。

Tomcat是一個(gè)web服務(wù),提供動(dòng)態(tài)程序的解析(java),支持靜態(tài)資源。

企業(yè)nginx+tomcat模型, nginx處理靜態(tài)資源,tomcat處理動(dòng)態(tài)資源(java),能加速網(wǎng)站的訪問(wèn)和降低訪問(wèn)的延遲。

Tomcat 是一個(gè)小型的輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP 程序的首選。


3.Tomcat安裝、配置、啟動(dòng)

1.安裝jdk
yum install java -y

2.安裝Tomcat ( 下載 Tomcat、解壓、啟動(dòng) )
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.目錄結(jié)構(gòu)

bin 主要包含啟動(dòng)和關(guān)閉tomcat的腳本(啟停java腳本依賴jar包文件)
  conf tomcat配置文件的目錄
  lib tomcat運(yùn)行時(shí)需要加載的jar包
  logs tomcat日志存放位置
  temp tomcat臨時(shí)存放文件路徑
  webapps tomcat默認(rèn)站點(diǎn)目錄
  work tomcat運(yùn)行時(shí)產(chǎn)生的緩存文件

4.Tomcat的HTTP請(qǐng)求過(guò)程

用戶發(fā)出一個(gè)請(qǐng)求,如http://tomcat.oldxu.com:8080/index.jsp
Connector發(fā)現(xiàn)是http/1.1協(xié)議,而且還是8080端口,于是就把請(qǐng)求接收后交給符合條件的Engine
Engine通過(guò)請(qǐng)求中的主機(jī)名tomcat.oldxu.com查找滿足條件的虛擬主機(jī)(Host)
找到后就去此虛擬主機(jī)指定的appBase(代碼存放的目錄)最后將解析產(chǎn)生的結(jié)果返回給用戶。


4.使用tomcat部署web服務(wù)

  • 定義虛擬主機(jī)
  • vim /soft/tomcat/conf/server.xml<!--站點(diǎn)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應(yīng)用
  • 1.自動(dòng)加壓.war包 2.自動(dòng)部署,war包 (自動(dòng)生成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 開(kāi)始協(xié)議處理句柄["http-nio-8080"] 11-May-2020 11:33:32.681 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in [4,035] milliseconds

    配置遠(yuǎn)程數(shù)據(jù)庫(kù)連接信息

    MariaDB [(none)]> create database zrlog charset utf8; MariaDB [(none)]>grant all privileges on *.* to 'all'@'%' identified by 'xxxxxx';
  • 訪問(wèn)zrlog站點(diǎn)
  • 5.使用tomcat部署多節(jié)點(diǎn)web服務(wù)

    web1 172.16.1.7
    web2 172.16.1.8

    1.安裝tomcat
    [root@web02 ~]# yum install java -y

    3.拷貝代碼 (注意是在web01節(jié)點(diǎn)操作的)
    [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.共享靜態(tài)資源。
    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節(jié)點(diǎn)都需要掛載
    mount -t nfs 172.16.1.31:/data/zrlog /zrlog/ROOT/attached/

    6.tomcat的base的基礎(chǔ)認(rèn)證

    配置Tomcat網(wǎng)頁(yè)管理頁(yè)面。 ( 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"/>
  • 還需要配置該項(xiàng)目的訪問(wèn)權(quán)限,因?yàn)門(mén)omcat默認(rèn)管理頁(yè)面僅允許本機(jī)訪問(wèn),如果希望其他網(wǎng)段能正常訪問(wèn),需要配置允許規(guī)則。
    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認(rèn)證

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

    <web-app> ...<security-constraint><!--定義資源名稱以及需要認(rèn)證的url--><web-resource-collection><web-resource-name>zrlog</web-resource-name><url-pattern>/admin/*</url-pattern></web-resource-collection><!--給對(duì)應(yīng)資源關(guān)聯(lián)角色名--><auth-constraint><role-name>zrlog_role</role-name></auth-constraint></security-constraint><!--調(diào)用BASIC方法來(lái)實(shí)現(xiàn)認(rèn)證--><login-config><auth-method>BASIC</auth-method><realm-name>Default</realm-name></login-config> ... </web-app>

    2.配置用戶名密碼,關(guān)聯(lián)對(duì)應(yīng)的角色(多個(gè)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包的關(guān)系、聯(lián)系、區(qū)別?

    1.什么是源碼包?

    由java工程師編寫(xiě)的java代碼,稱為java源碼包。
    編譯( maven 方式去編譯java的源代碼 )

    編譯之后會(huì)得到一個(gè)包裹:

    war jar

    2.什么是war包?

    由源碼編譯后生成的產(chǎn)物,可以直接放入 tomcat運(yùn)行起來(lái)。( 比較廣泛 )

    3.什么是jar包?

    由源碼編譯后生成的產(chǎn)物。
    1.不能獨(dú)立運(yùn)行起來(lái),它可能被某個(gè)java程序依賴運(yùn)行。或者war包運(yùn)行所依賴。
    2.可獨(dú)立運(yùn)行起來(lái)的, java -jar xxx.jar 直接啟動(dòng)運(yùn)行,無(wú)需tomcat

    4.源碼包、jar、war:

    1.源碼包編譯后會(huì)產(chǎn)生war包、jar包
    2.war通常是直接由tomcat運(yùn)行啟動(dòng),啟動(dòng)加載項(xiàng)目時(shí)會(huì)依賴一些jar包。
    3.jar包,
    分為不可獨(dú)立運(yùn)行(被java程序依賴運(yùn)行、或者是被war包依賴運(yùn)行)
    分為可獨(dú)立運(yùn)行:可以直接對(duì)外提供服務(wù)。只需要有java環(huán)境即可。啟動(dòng)命令: 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啟動(dòng)的java程序,可以直接通過(guò)proxy_pass進(jìn)行負(fù)載均衡location / {proxy_pass http://zrlog;include proxy_params;} }

    8.2 單節(jié)點(diǎn)Tomcat實(shí)現(xiàn)HTTPS ( 了解 )
    1.修改tomcat配置: server.xml

    0.首先需要有證書(shū) ( 必須 )
    1.將http的默認(rèn)監(jiān)聽(tīng)端口8080 修改為 80,redirect至 443
    2.開(kāi)啟https監(jiān)聽(tīng)器,配置證書(shū)即可。
    3.將http強(qiáng)制跳轉(zhuǎn)https ( tomcat操作,與nginx無(wú)關(guān)。)

    使用新機(jī)器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/------>>>放入證書(shū)

    2.1 修改 localhost

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

    2.2 配置http跳轉(zhuǎn) https
    在負(fù)載均衡上配置證書(shū)就可以實(shí)現(xiàn)全棧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啟動(dòng)的java程序,可以直接通過(guò)proxy_pass進(jìn)行負(fù)載均衡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實(shí)現(xiàn)集群會(huì)話共享

    多種方式:
    1.ip_hash
    2.mysql
    3.redis
    4.tomcat自帶的cluster session復(fù)制 ( 官方建議不要超過(guò)4個(gè)tomcat節(jié)點(diǎn) )

    • 準(zhǔn)備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.準(zhǔn)備web01 和web02 一個(gè)session測(cè)試頁(yè)面

    <!--站點(diǎn)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.接入負(fù)載均衡
      [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的網(wǎng)站
    2.搭建nginx+tomcat集群
    3.測(cè)試訪問(wèn),演示是否web01和web02的session不一致
    4.接入redis,實(shí)現(xiàn)tomcat共享會(huì)話信息
    5.再次測(cè)試,請(qǐng)求web01和web02 看session是否是一致的。
    6.登陸redis查看是否存在對(duì)應(yīng)的session的key

    總結(jié)

    以上是生活随笔為你收集整理的50 Tomcat 集群部署的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。