操作系統:Debian6.0 (192.168.225.129 虛擬機1臺)
軟件版本:Apache-2.2.16, Tomcat-6.0.35
1.安裝軟件
>apt-get install update
*安裝Apache
>apt-get install apache2
*安裝Tomcat
>wget http://apache.etoak.com/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz
>tar zxvf apache-tomcat-6.0.35.tar.gz
>mv apache-tomcat-6.0.35 /user/local/tomcat
>cp /usr/local/tomcat /usr/local/tomcat2
*安裝mod_jk
>apt-get install libapache2-mod-jk
2.配置2個Tomcat
現在/usr/local目錄中已經有2個tomcat目錄了,需要更改tomcat2的端口,防止端口沖突。
>nano /usr/local/tomcat/conf/server.xml
有3處的默認端口需要更改:
1.<Server port="8004" shutdown="SHUTDOWN"> 我更改為8003
2.<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
更改為7080
3.<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
更改為7009,其中redirectPort 8443不需要更改
o.另外還需要在<Engine>配置中加入<Clustber>配置
- <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="auto"
- port="4001"
- selectorTimeout="5000"
- maxThreads="6"/>
- <!-- timeout="60000"-->
- <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"/>
- <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
- </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>
<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="auto"
port="4001"
selectorTimeout="5000"
maxThreads="6"/>
<!-- timeout="60000"-->
<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"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</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>
x.最后2個tomcat都需要改變<Engine的 jvmRoute屬性分別為tomcat1和tomcat2,以對應之后worker.properties中的名字。
3.配置Apache以jk方式和tomcat集群
安裝完成后apache的主目錄為/etc/apache2,安裝完mod-jk之后,mods-enabled里面會多一個jk.load
創建文件 /etc/apache2/mods-enabled/jk.conf
>nano /etc/apache2/mods-enabled/jk.conf
JkWorkersFile /etc/apache2/workers.properties
JkShmFile /var/log/apache2/mod_jk.shm
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
創建文件 /etc/apache2/workers.properties
>nano /etc/apache2/workers.properties
worker.list=controller1
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
worker.tomcat2.port=7009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
worker.controller1.type=lb
worker.controller1.sticky_session=1 #可選項0,1
worker.controller1.balance_workers=tomcat1,tomcat2
更改/etc/apache2/sites-enabled/000-default文件
在</VirtualHost>之前添加
JkMount /* controller1
(controller1對應workers.properties中的名字)
配置完成之后先后啟動tomcat和apache。
測試:
2個tomcat部署相同的應用:即首頁index.jsp顯示各自tomcat名稱tomcat1和tomcat2
通過80端口訪問應用,刷新幾次,tomcat1和tomcat2輪流顯示。