2009年1月6日星期二

在本机搭建Tomcat集群环境

1 下载tomcat和apache


2 Tomcat集群

将tomcat解压两份:

/home/fanng/Public/Server/apache-tomcat-6.0.14-A

/home/fanng/Public/Server/apache-tomcat-6.0.14-B


(1) 打开“apache-tomcat-6.0.14-A”文件夹下“ conf ”文件夹下的“ server.xml ”文件以及“apache-tomcat-6.0.14-B”文件夹下“ conf ”文件夹下的“ server.xml ”文件
a

(2) 找到 server.xml 配置文件中的“ Server ”配置项目,并进行修改。

<server port="8005" shutdown="SHUTDOWN">

<server port="10005" shutdown="SHUTDOWN">

<server port="20005" shutdown="SHUTDOWN">

说明:第一行为两个 Tomcat 修改前的情况,第二行为 A Tomcat 修改后的情况,第三行为 B Tomcat 修改后的情况。


(3) 找到 server.xml 配置文件中的相应“ Connector ”配置项目,并进行修改。

* 修改前内容如下:

<!-- Define an AJP 1.3 Connector on port 8009 -->

<connector port="8009" protocol="AJP/1.3" redirectport="8443">

A 中修改后内容如下:

<!-- Define an AJP 1.3 Connector on port 8009 -->

<connector port=" 10009 " protocol="AJP/1.3" redirectport=" 10043 ">

B 中修改后内容如下:

<!-- Define an AJP 1.3 Connector on port 8009 -->

<connector port=" 20009 " protocol="AJP/1.3" redirectport=" 10043 ">

提示:此步骤目的是修改 AJP Connector 端口。


(4)找到 server.xml 配置文件中的另一个相应“ Connector ”配置项目,并进行修改。

* 修改前内容如下:

<connector port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443">

A 中修改后内容如下:

<connector port=" 10001 " protocol="HTTP/1.1" connectiontimeout="20000" redirectport=" 10043 ">

B 中修改后内容如下:

<connector port=" 20001 " protocol="HTTP/1.1" connectiontimeout="20000" redirectport=" 20043 ">

提示:此步骤目的是修改 HTTP Connector 端口,其中的“ 10001 ”与“ 20001 ”是未来通过浏览器访问集群中各个 Tomcat 实例的 HTTP 端口。


(5) 通过修改 Engine 配置选项,配置集群中每个 Tomcat 实例的名称。

* 修改前内容如下:

<!-- You should set jvmRoute to support load-balancing via AJP ie : <engine name = "Standalone" defaulthost = "localhost" jvmroute = "jvm1"><br />-->

<engine name="Catalina" defaulthost="localhost">

A 中修改后内容如下:

<engine name="Standalone" defaulthost="localhost" jvmroute=" Tomcat1 ">

<!-- You should set jvmRoute to support load-balancing via AJP ie : <engine name = "Catalina" defaulthost = "localhost"><br />-->

B 中修改后内容如下:

<engine name="Standalone" defaulthost="localhost" jvmroute=" Tomcat2 ">

<!-- You should set jvmRoute to support load-balancing via AJP ie : <engine name = "Catalina" defaulthost = "localhost"><br />-->


(6) 修改配置文件中的 Cluster 配置项目,对集群的各项参数进行设置。

* 修改前内容如下:

<cluster classname="org.apache.catalina.ha.tcp.SimpleTcpCluster">

A 中修改后内容如下:

<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="4000" autobind="100" selectortimeout="5000" maxthreads="6">

<sender classname="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<transport classname="org.apache.catalina.tribes.transport.nio.PooledParallelSender">

</transport>

<interceptor classname="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector">

<interceptor classname="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor">

</interceptor>

<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">

</clusterlistener>

B 中修改后内容如下:

<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="4000" autobind="100" selectortimeout="5000" maxthreads="6">

<sender classname="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<transport classname="org.apache.catalina.tribes.transport.nio.PooledParallelSender">

</transport>

<interceptor classname="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector">

<interceptor classname="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor">

</interceptor>

<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">

</clusterlistener>


提示:上述配置内容主要是对集群中各个 Tomcat 实例间进行通信的方式、端口以及 Session 共享算法的设置。本教程由于篇幅所限,不能一一详细介绍,有兴趣的读者可以参看 Tomcat 的官方文档,其中有非常详细的说明。


(7)分别启动两个tomcat,再分别在webapp/root目录下新建一个Hello.jsp

A out.print("Hello! This is A!!");

B out.print("Hello! This is B!!");


(8)打开浏览器分别输入:

http://localhost:10001/Hello.jsp

http://localhost:20001/Hello.jsp


3 使用apache做负载均衡

将下载的apache解压,进入解压后的目录。

./configure --enable-so --enable-mods-shared="proxy proxy_http proxy_ftp proxy_connect headers"

make

make install


然后编辑/usr/local/apache2/conf/httpd.conf

将loadmodule ssl_module ....

前的注释去掉


然后将以下加到文件末尾:

ProxyRequests Off


ProxyPass / balancer://myCluster/


<proxy>


BalancerMember ajp://localhost:10009 route=Tomcat1


BalancerMember ajp://localhost:20009 route=Tomcat2


</proxy>


./usr/local/apache2/bin/apachectl start


在浏览器里输入:

http://localhost/Hello.jsp

多刷新几遍,就可以看见A页面和B页面轮换出现。


至此Tomcat集群搭建成功。

2 条评论:

justin 说...
此评论已被作者删除。
justin 说...

方大牛,你可以用& lt;来代替<,用& gt;来代替>,其中&后不要空格。