RedHat下搭建Tomcat集羣

1、軟件準備

RedHat:RedHat Enterprise Linux6.0

Apache Httpd Server:httpd-2.2.24.tar.gz 下載地址:http://httpd.apache.org/download.cgi

Tomcat:apache-tomcat-6.0.35.zip 下載地址:http://tomcat.apache.org/download-60.cgi

Apache Tomcat Connector:tomcat-connectors-1.2.37-src.tar.gz 下載地址:http://tomcat.apache.org/download-connectors.cgi

2、安裝Apache Httpd Server

關於Apache Httpd Server的安裝此處略過,參見Red Hat Enterprise Linux 6下安裝Apache Httpd Server
3、安裝Apache Tomcat Connector

解壓源文件

tar -xzvf tomcat-connectors-1.2.37-src.tar.gz

進入源碼目錄

cd tomcat-connectors-1.2.37-src/native/

編譯和安裝

./buildconf.sh

./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=$JAVA_HOME --with-java-platform=2 --enable-jni

make


 

安裝成功之後進入cd /usr/local/apache2/modules/目錄下,可以看到mod_jk.so文件


4、Tomcat安裝及配置

Tomcat存放目錄 /usr/local/

tomcat-6.0.35_1、tomcat-6.0.35_2

修改tomcat-6.0.35_1的端口配置信息server.xml

開啓Tomcat集羣支持server.xml

此處增加jvmRoute="tomcat1",這裏的tomcat1值要和後面workers.properties值保持一致,建議的命名是從tomcat1開始增加

在<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> </Engine>之間增加關於集羣的配置。

Tomcat提供了一份默認的配置,可以參考如下地址:

http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html

我們可以直接使用Tomcat提供的默認配置來進行實驗,但有一點需要注意

官方提供的address="auto",如果在虛擬機中進行實驗的話需要進行修改一下,把地址修改爲localhost或自己機器的ip地址就可以,不然啓動時會報錯誤。

附:完整的cluster配置如下


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

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

channelSendOptions="8">

<Manager className="org.apache.catalina.ha.session.DeltaManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"/>

<Channel className="org.apache.catalina.tribes.group.GroupChannel">

<Membership className="org.apache.catalina.tribes.membership.McastService"

address="228.0.0.4"

port="45564"

frequency="500"

dropTime="3000"/>

<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

address="localhost"

port="4000"

autoBind="100"

selectorTimeout="5000"

maxThreads="6"/>

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

</Sender>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

</Channel>

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

filter=""/>

<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

tempDir="/tmp/war-temp/"

deployDir="/tmp/war-deploy/"

watchDir="/tmp/war-listen/"

watchEnabled="false"/>

<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>

<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

修改tomcat-6.0.35_2的端口配置信息server.xml


5、配置Apache Httpd Server

cd /usr/local/apache2/conf/

修改配置文件httpd.conf在文件末尾增加如下配置信息

# Load mod_jk module

LoadModule jk_module modules/mod_jk.so

# Specify jk log file.

JkLogFile /var/log/mod_jk.log

# Specify jk log level [debug/error/info]

JkLogLevel info

# Specify workers.properties, this file tell jk:

# how many nodes and where they are.

JkWorkersFile conf/workers.properties

# Specify which requests should handled by which node.

JkMount /* controller

參考地址:http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

在Apache配置文件夾下增加一個配置文件workers.properties


文件內容如下:


worker.list=controller,tomcat1,tomcat2

#========tomcat1========

worker.tomcat1.port=8009

worker.tomcat1.host=localhost

worker.tomcat1.type=ajp13

worker.tomcat1.lbfactor=1

#========tomcat2========

worker.tomcat2.port=8109

worker.tomcat2.host=localhost

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1

#========controller,負載均衡控制器========

worker.controller.type=lb

worker.controller.balance_workers=tomcat1,tomcat2

worker.controller.sticky_session=1

#sticky_session爲1表示


到此爲止關於集羣已經搭建好了基本環境

如果要讓應用程序支持集羣,需要在做如下兩點:

  1. 在應用程序web.xml文件中需要加入:<distributable/>元素。

  2. Session中存放的數據(如attribute)需要實例序列化。


所使用的Tomcat及Web項目:下載
發佈了38 篇原創文章 · 獲贊 34 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章