Tomcat:基於Apache+Tomcat的叢集搭建

來源:互聯網
上載者:User

標籤:

根據Tomcat的官方文檔說明可以知道,使用Tomcat配置叢集需要與其它Web Server配合使用才可以完成,典型的有Apache和IIS。

       這裡就使用Apache+Tomcat方式來完成基於Tomcat在叢集配置。

 

軟體準備

1)Apache HTTP Server:

使用百度搜尋httpd-2.2.25-win32-x86-no_ssl.msi,應該可以找到很多相關的下載連結。這裡也提供一個:http://vdisk.weibo.com/s/C3trk_uGGkrmc

2)Tomcat 7:

Tomcat7下載連結:http://tomcat.apache.org/download-70.cgi

3)Tomcat 連接器——JK:

http://mirrors.cnnic.cn/apache/tomcat/tomcat-connectors/jk/binaries/windows/

 

開啟串連後下載版本:tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x.zip

 

 

 

叢集設計

下面是一個叢集設計架構圖:

 

 

如果是使用WebLogic或者是使用Glassfish等伺服器,只需要根據相關說明做出相關配置即可。但是不論使用什麼伺服器,架構都是上面這樣的。

 

Tomcat是單一實例的,也就是說一個Tomcat只能作為一個Server來使用。

 

Tomcat Connector

 

Connector的作用:將不同協議的請求引渡到Tomcat 的Web Container中。Tomcat中現在可以處理的請求根據協議可以分為:HTTP、AJP,其中HTTP請求又可以包括APR方式的HTTP請求。

 

相關參考文檔:

http://tomcat.apache.org/connectors-doc/reference/apache.html

另外配方中的配置,都可以在這樣連結下找到。

 

JK

JK 其實是一個Tomcat Connector。Apache、IIS 是不支援jsp/servlet處理功能的Web Server,使用了JK就可以將jsp/Serverlt請求過渡到Tomcat中,讓Tomcat來處理。

 

 

叢集搭建

下面就來說說如何搭建基於Apache +Tomcat的叢集環境。

Apache Server充當LB伺服器的角色,其它的Tomcat執行個體充當Server的角色。按照下面的步驟操作進行,就可以快速的搭起了:

1)安裝Apache Server

軟體安裝不用說明了,和其它的軟體安裝方式相同。

2)安裝tomcat

解壓即可,然後再拷貝一份放到磁碟上。這就是兩個Tomcat了。

3)在apache Server中添加jk模組

解壓之前下載的jk,將mod_jk.so放到Apache Server的modules目錄下。

4)配置work.properties和uriworkmap.properties

 

work.properties如下:

worker.list=controller,s1,s2worker.s1.type=ajp13worker.s1.port=8009worker.s1.host=localhostworker.s1.lbfactor=1worker.s2.type=ajp13worker.s2.port=9009worker.s2.lbfactor=1worker.s2.host=localhostworker.controller.type=lbworker.controller.balanced_workers=s1,s2worker.controller.sticky_session=false

配置了3個Worker,其中controller代表LB伺服器。s1,s2代表兩個tomcat server。配置說明:

 uriworkermap.properties 如下:

/*=controller

 

然後將這兩個檔案放到Apache Server的conf目錄下。這個其實並沒有規定放到哪裡。 

 

另外:

worker.properties如何配置,可以參考文檔:

http://tomcat.apache.org/connectors-doc/reference/workers.html

uriworkermap.properties 如何配置,可以參考文檔:

http://tomcat.apache.org/connectors-doc/reference/uriworkermap.html

 

5)在apache server下配置mod_jk.conf

Mod_jk.conf內容如下:

# Load mod_jk module LoadModule jk_module modules/mod_jk.so # Where to find workers.properties JkWorkersFile conf/workers.properties JkMountFile conf/uriworkermap.properties# Where to put jk logs JkLogFile logs/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" # Send servlet for context /examples to worker named ajp13 #JkMount /servlet/* controller # Send JSPs for context /examples to worker named ajp13 #JkMount /* controller

配置完畢後,將檔案放到Apache Server的conf目錄下。 

 

6)配置httpd.conf,引入JK

開啟Apache Server的conf目錄下的httpd.conf檔案,在最後加入:

Include conf/mod_jk.conf

 這個配置,就是讓Apache Server啟動時,載入mod_jk的。

7)將tomcat配置為叢集執行個體

 

Tomcat作為叢集執行個體時,可以是在不同的機器上的,也可以在相同的機器上的,只要配置對了host和port就可以的。我這裡配置的是在同一台機器上的。

 下面就是這兩個tomcat的連接埠的配置:

Tomcat

S1 port

S2 port

Connector HTTP/1.1

8001

9001

Connector AJP/1.3

8009

9009

 

然後配置如下:

為<Engine name="Catalina" defaultHost="localhost" >添加jvmRoute,變為:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">

去掉<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>前後的注釋。

<Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">

  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

….

</Engine>

配置完成後

S1:

 

 

S2:

 

 

到此叢集就搭建好了。

 

在叢集環境下訪問應用

 

1)建立Web應用ClusterTest

添加index.jsp:

<body>Hello, index.jsp<br><%=session.getId()%><%=request.getLocalName()%><%=request.getLocalPort()%></body>

配置web.xml為: 

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  <display-name>ClusterTest</display-name>    <distributable/>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>

使用Eclipse匯出為war檔案ClusterTest.war。 

2) 部署web應用

將ClusterTest.war放到兩個tomcat的webapps目錄下。

 

3)啟動叢集:

按順序啟動ApacheServer、Tomcat(S1)、Tomcat(S2)。

4)瀏覽器訪問web應用。

輸入連結:http://localhost/ClusterTest即可:

 

可以看到sessionId(點號前面那一段),主機名稱,請求的連接埠號碼。其中點號後面的表示是處理請求的Server名稱。不斷的重新整理瀏覽器,seesionId是一樣的,只是server名稱不同。

也可以直接使用瀏覽器訪問S1或者S2:

 

 

其實使用Apache+Tomcat有3種方案,參考: http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html

如果想使用IIS+Tomcat配置叢集,可以參考:http://tomcat.apache.org/connectors-doc/reference/iis.html

 

Tomcat:基於Apache+Tomcat的叢集搭建

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.