Tomcat負(fù)載均衡部署過(guò)程
一、理論部分
Tomcat介紹
Tomcat是Apache 軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun 和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn),Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規(guī)范。因?yàn)門(mén)omcat 技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java 愛(ài)好者的喜愛(ài)并得到了部分軟件開(kāi)發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。
Tomcat 服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web 應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪(fǎng)問(wèn)用戶(hù)不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP 程序的首選。對(duì)于一個(gè)初學(xué)者來(lái)說(shuō),可以這樣認(rèn)為,當(dāng)在一臺(tái)機(jī)器上配置好Apache 服務(wù)器,可利用它響應(yīng)HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)頁(yè)面的訪(fǎng)問(wèn)請(qǐng)求。實(shí)際上Tomcat是Apache 服務(wù)器的擴(kuò)展,但運(yùn)行時(shí)它是獨(dú)立運(yùn)行的,所以當(dāng)你運(yùn)行tomcat 時(shí),它實(shí)際上作為一個(gè)與Apache 獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。
當(dāng)配置正確時(shí),Apache 為HTML頁(yè)面服務(wù),而Tomcat 實(shí)際上運(yùn)行JSP 頁(yè)面和Servlet。另外,Tomcat和IIS等Web服務(wù)器一樣,具有處理HTML頁(yè)面的功能,另外它還是一個(gè)Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。不過(guò),Tomcat處理靜態(tài)HTML的能力不如Apache服務(wù)器。目前Tomcat最新版本為9.0。
Tomcat各節(jié)點(diǎn)介紹
Server節(jié)點(diǎn)
Tomcat實(shí)例的最頂層元素,對(duì)應(yīng)Tomcat服務(wù)器,僅一個(gè)。
port:指定監(jiān)聽(tīng)關(guān)閉Tomcat服務(wù)器請(qǐng)求的端口。端口用于標(biāo)記網(wǎng)絡(luò)上的一個(gè)進(jìn)程,由此一個(gè)端口只能唯一的標(biāo)記一臺(tái)主機(jī)上的一個(gè)進(jìn)程,但是一個(gè)進(jìn)程可以對(duì)應(yīng)多個(gè)端口。
shutdown:指定向上述端口發(fā)送的命令字符串。
Service節(jié)點(diǎn)
監(jiān)聽(tīng)來(lái)自客戶(hù)端的http請(qǐng)求,一個(gè)Server節(jié)點(diǎn)可以有多個(gè)Service節(jié)點(diǎn)。個(gè)人認(rèn)為所謂的多個(gè)Service是,服務(wù)器開(kāi)啟了多個(gè)線(xiàn)程去監(jiān)聽(tīng)不同端口收到的來(lái)自客戶(hù)端的http請(qǐng)求。
name:指定Service的名字。
Connector節(jié)點(diǎn)
主要設(shè)置Service的監(jiān)聽(tīng)端口。
客戶(hù)端與Service之間的鏈接,配置客戶(hù)端與服務(wù)端的鏈接信息。Tomcat默認(rèn)監(jiān)聽(tīng)的是8080端口,商業(yè)網(wǎng)站對(duì)外發(fā)布,若想 用戶(hù)不輸入端口,使用http協(xié)議的默認(rèn)端口,這里就必須將其改成80。一個(gè)Service節(jié)點(diǎn)可以有多個(gè)Connector節(jié)點(diǎn)。一個(gè)端口只能對(duì)應(yīng)一個(gè)進(jìn)程,但是一個(gè)進(jìn)程可以對(duì)應(yīng)多個(gè)端口。
port:指定監(jiān)聽(tīng)客戶(hù)端請(qǐng)求的端口。
protocol:指定傳輸協(xié)議。
connectionTimeout:指定鏈接超時(shí)時(shí)間,毫秒。
redirectPort:指定Service正在處理http請(qǐng)求時(shí)收到SSL請(qǐng)求后重定向的端口。
Engine節(jié)點(diǎn)
處理監(jiān)聽(tīng)到的來(lái)自客戶(hù)端的http請(qǐng)求,一個(gè)Service節(jié)點(diǎn)僅有一個(gè)Engine節(jié)點(diǎn)。
name:指定Engine的名字。
defaultHost:指定主機(jī)缺省時(shí),默認(rèn)的主機(jī),必須是某個(gè)Host結(jié)點(diǎn)的name值。
一個(gè)完整的http請(qǐng)求網(wǎng)址為:協(xié)議://主機(jī):端口/虛擬目錄/站點(diǎn)根目錄/資源如 http://localhost:8080/aa/examples/index.html。
主機(jī)(也可以是虛擬主機(jī)或者域名),對(duì)應(yīng)著ip。網(wǎng)絡(luò)上的一臺(tái)服務(wù)器只有一個(gè)ip,但是一個(gè)ip可以對(duì)應(yīng)多個(gè)邏輯主機(jī),即一個(gè)ip可以有多個(gè)域名。這多個(gè)邏輯主機(jī)實(shí)際只對(duì)應(yīng)一個(gè)真正的物理主機(jī),由此稱(chēng)為虛擬主機(jī)。
虛擬目錄,暫且認(rèn)為是真實(shí)路徑的一個(gè)別名,可以沒(méi)有。
Host節(jié)點(diǎn)
主要設(shè)置Service的虛擬主機(jī)。
配置虛擬主機(jī),一個(gè)Engine節(jié)點(diǎn)可以有多個(gè)Host節(jié)點(diǎn),即多個(gè)虛擬主機(jī)。
name:指定虛擬主機(jī)的名字。該名字可以隨便定義,但是必須能被DNS解析到,要對(duì)應(yīng)到指定的ip地址。要定義虛擬主機(jī),先要申請(qǐng)域名。
appBase:指定存放web應(yīng)用程序的根目錄,如webapps,我們的站點(diǎn)根目錄都應(yīng)該放在此目錄下。站點(diǎn)實(shí)際是一個(gè)有著特定結(jié)構(gòu)的文件夾,該文件夾的結(jié)構(gòu)有著自己的特點(diǎn),如必須有一個(gè)WEB—INF子文件夾,該子文件夾又必須有一個(gè)web.xml文件。
Tomcat的conf下有個(gè)web.xml文件,用于配置web應(yīng)用的的信息,被服務(wù)器上的全部站點(diǎn)共享,這里的改變會(huì)影響到所有的站點(diǎn)。通常我們都是配置web應(yīng)用站點(diǎn)根目錄下的web.xml文件,其改變只對(duì)該應(yīng)用起作用。該文件可以用于設(shè)置web應(yīng)用 的默認(rèn)資源
Context節(jié)點(diǎn)
主要設(shè)置Service的虛擬目錄和默認(rèn)站點(diǎn)。
配置虛擬目錄和默認(rèn)站點(diǎn),一個(gè)Engin節(jié)點(diǎn)可以有多個(gè)Context節(jié)點(diǎn),即多個(gè)虛擬目錄。我們?cè)谠L(fǎng)問(wèn)http://locaohost:8080的時(shí)候?qū)嶋H訪(fǎng)問(wèn)的是http://locaohost:8080/ROOT/index.jsp。使用http協(xié)議,根據(jù)localhost定位到主機(jī),根據(jù)端口8080定位到主機(jī)上的Tomcat服務(wù)器Service進(jìn)程,此時(shí)因?yàn)橛脩?hù)沒(méi)有指定站點(diǎn)和資源,則訪(fǎng)問(wèn)conf下的server.xml配置的默認(rèn)站點(diǎn)和資源。在erver.xml中找不到該配置,是因?yàn)镽OOT是通過(guò)硬編碼寫(xiě)好的,但是可以通過(guò)配置文件修改成其他的站點(diǎn)。
path:指定web應(yīng)用程序的虛擬路徑,如/aa
docBase:指定web應(yīng)用程序的實(shí)際存放路徑,即虛擬目錄的實(shí)際路徑,具體到站點(diǎn)目錄
reloadable:若為true,Tomcat會(huì)自動(dòng)檢測(cè)項(xiàng)目WEB—INF目錄下的lib和classes文件夾的內(nèi)容,若有變化會(huì)自動(dòng)重新加載項(xiàng)目而無(wú)需重啟服務(wù)器。
Logger節(jié)點(diǎn)
Tomcat的log信息配置。
className:指定log使用的類(lèi)名,必須實(shí)現(xiàn)org.apache.catalina.Logger接口。
prefix:指定log文件的前綴。
suffix:指定log文件的后綴。
timestamp:若為true,則log文件名中必須加入時(shí)間戳。
Value節(jié)點(diǎn)
類(lèi)似Logger。
directory:指定log文件的存放位置。
directory(指定log文件存放的位置):
pattern 有兩個(gè)值,common方式記錄遠(yuǎn)程主機(jī)名或ip地址,用戶(hù)名,日期,第一行請(qǐng)求的字符串,HTTP響應(yīng)代碼,發(fā)送的字節(jié)數(shù)。combined方式比common方式記錄的值更多。
Tomcat目錄
|---bin:存放啟動(dòng)和關(guān)閉tomcat腳本;
|---conf:存放不同的配置文件(server.xml和web.xml);
|---doc:存放Tomcat文檔;
|---lib/japser/common:存放Tomcat運(yùn)行需要的庫(kù)文件(JARS);
|---logs:存放Tomcat執(zhí)行時(shí)的LOG文件;
|---src:存放Tomcat的源代碼;
|---webapps:Tomcat的主要Web發(fā)布目錄(包括應(yīng)用程序示例);
|---work:存放jsp編譯后產(chǎn)生的class文件;
二、部署過(guò)程
環(huán)境準(zhǔn)備
| 操作系統(tǒng) | IP地址 | 部署服務(wù) |
| centos7.6 | 192.168.81.210 | Tomcat |
| centos7.6 | 192.168.81.220 | Tomcat |
| centos7.6 | 192.168.81.230 | NGINX |
部署tomcat平臺(tái)
1.1安裝JDK
[root@localhost ~]# tar xvf jdk-7u65-linux-x64.gz [root@localhost ~]# mv jdk1.7.0_65/ /usr/local/java
1.2建立java.sh
[root@localhost ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile.d/java.sh
[root@localhost ~]# java –version //檢測(cè)java版本
[root@localhost ~]# java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)2.安裝tomcat
[root@localhost ~]# tar xvf apache-tomcat-7.0.54.tar.gz
[root@localhost ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh //啟動(dòng)Tomcat程序3.搭建成功實(shí)例
訪(fǎng)問(wèn):http://127.0.0.1:8080

搭建nginx+tomcat負(fù)載均衡集群
1.建立java的web站點(diǎn)(在Tomcat服務(wù)器上,每臺(tái)做一個(gè)頁(yè)面)
[root@localhost ~]# mkdir -p /web/webapp1
[root@localhost ~]# vim /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("Welcom to test site,http://www.test1.com");%>
</body>
</html>2.修改主配置文件
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> //存在
<Context docBase="/web/webapp1" path="" reloadable="false" > //寫(xiě)入
</Context> //寫(xiě)入3.Nginx配置實(shí)現(xiàn)負(fù)載均衡
實(shí)現(xiàn)準(zhǔn)備yum源,需要下載依賴(lài)軟件
3.1編譯安裝nginx
[root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel [root@localhost ~]# groupadd www [root@localhost ~]# useradd -g www www -s /bin/false [root@localhost ~]# tar xvf nginx-1.6.0.tar.gz [root@localhost ~]# cd nginx-1.6.0 [root@localhost ~]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with- file-aio --with-http_stub_status_module --with-http_gzip_static_module --with- http_flv_module --with-http_ssl_module && make && make install [root@localhost ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin
3.2修改nginx配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
·····
#gzip on;
upstream tomcat_server {
server 192.168.1.100:8080 weight=1;
server 192.168.1.101:8080 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_server;
}3.3啟動(dòng)nginx
[root@localhost ~]# nginx
4.測(cè)試
訪(fǎng)問(wèn):http://nginx服務(wù)器IP不加端口,不停刷新


到此這篇關(guān)于部署Tomcat負(fù)載均衡的文章就介紹到這了,更多相關(guān)Tomcat負(fù)載均衡內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux系統(tǒng)centos7.X安裝tomcat8的圖文教程
這篇文章主要介紹了Linux系統(tǒng)centos7.X安裝tomcat8的圖文教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Tomcat中catalina.bat設(shè)置為UTF-8控制臺(tái)出現(xiàn)亂碼
這篇文章主要介紹了Tomcat中catalina.bat設(shè)置為UTF-8控制臺(tái)出現(xiàn)亂碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
tomcat實(shí)現(xiàn)多war包部署的方法步驟
本文主要介紹了tomcat實(shí)現(xiàn)多war包部署的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
Linux上tomcat的虛擬主機(jī)IP映射配置(圖片服務(wù)器)
有時(shí)候我們會(huì)使用tomcat作為一個(gè)圖片資源服務(wù)器,本文主要介紹了Linux上tomcat的虛擬主機(jī)IP映射配置,通過(guò)tomcat服務(wù)器來(lái)訪(fǎng)問(wèn)我們的圖片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
tomcat常見(jiàn)的錯(cuò)誤與解決方案小結(jié)
web容器其實(shí)都是tomcat,但tomcat的內(nèi)核很豐富,如果要完全理解需要很長(zhǎng)的時(shí)間和較多的編程經(jīng)驗(yàn)。不管是初學(xué)者還是有經(jīng)驗(yàn)的web程序員,使用Tomcat容器的時(shí)候會(huì)發(fā)生包括404,運(yùn)行啟動(dòng)錯(cuò)誤,以及亂碼等等的問(wèn)題,本文將開(kāi)發(fā)過(guò)程中遇到的常見(jiàn)錯(cuò)誤和簡(jiǎn)單解決方法分享給大家。2016-11-11
解決tomcat部署時(shí)war和war exploded導(dǎo)致的問(wèn)題
war包和warexploded模式的區(qū)別主要在于部署方式,war包是在項(xiàng)目發(fā)布時(shí)打包上傳,而warexploded模式則是直接將文件夾結(jié)構(gòu)上傳到服務(wù)器,支持熱部署,常用于開(kāi)發(fā)階段,這種差異可能導(dǎo)致樣式和文件引用問(wèn)題,如在不同電腦部署時(shí)路徑設(shè)置的不同2024-10-10
Tomcat中實(shí)現(xiàn)Session小結(jié)
本篇文章主要介紹了Tomcat中實(shí)現(xiàn)Session小結(jié) ,Session的主要目的就是為了彌補(bǔ)Http的無(wú)狀態(tài)特性。簡(jiǎn)單的說(shuō),就是服務(wù)器可以利用session存儲(chǔ)客戶(hù)端在同一個(gè)會(huì)話(huà)期間的一些操作記錄。2017-01-01
Tomcat下載安裝并部署到IDEA的教程(附帶idea兩種熱部署設(shè)置方法)
這篇文章主要介紹了Tomcat下載安裝并部署到IDEA的教程(附帶idea兩種熱部署設(shè)置方法),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
Tomcat 請(qǐng)求的資源[/XXX/]不可用問(wèn)題的解決方法
遇到Tomcat提示資源不可用時(shí),通常是因?yàn)檎?qǐng)求的文件路徑錯(cuò)誤或文件未被正確部署,本文就來(lái)介紹一下Tomcat 請(qǐng)求的資源[/XXX/]不可用問(wèn)題的解決方法,感興趣的可以了解一下2024-09-09

