tomcat 集群搭建

写在前面:

Disc:最近研究了一下tomcat集群搭建,这里只是作为个人整理,其中参见了很多优秀的网络资源会在后面列出,如果你想快速的完成配置可以参见本文,如果想了解更多内容可以参见下面的资源列表,那里会给你更多有用的内容。

Context:Apache2.2、Tomcat6.0(非安装版)、mod_jk.so(1.2.37)、windows

res-list: 

http://blog.csdn.net/lifetragedy/article/details/7712691

http://blog.csdn.net/freeworkman/article/details/8637012

Ps:关于搭建环境所用的apache、tomcat、mod_jk.so最好自己去官网下、好处自己想去吧


安装步骤:

1、安装apache2.2

2、安装Tomcat6.0

2.1修改Tomcat配置使Tomcat各个实例能同事正常工作

 

3、正式开始集群配置

3.1apache配置

3.2tomca配置

 

1.安装apache2.2

apache的安装很方便根据自己的系统到http://httpd.apache.org/下载安装即可。安装完启动访问http://localhost能看到It works!就ok啦。

 

2.Tomcat6.0安装

Tomcat6.0选择非安装到http://tomcat.apache.org/ 选择自己合适的版本下载。

 

2.1修改Tomcat配置使Tomcat各个实例能同事正常工作

这里做集群环境首先要保证你的tomcat实例能够同事运行,此实验室在同一台机器上跑多个Tomcat实例所以很重要的一步是避免端口冲突。建议规则在必要的端口上保持实例递增(列:Tomcat_1监听端口为8080,Tomcat_2监听端口为8081,Tomcat_3端口为8082。。。),此测试使用2个Tomcat 实例。

 

Tomcat_1配置保持默认,Tomcat_2修改service.xml内容如下:

Tomcat_1

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

 

Tomcat_2:

<Server port="8006" shutdown="SHUTDOWN">

 

Tomcat_1:

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" 
redirectPort="8443" />

 

Tomcat_2:

<Connector port="8081" protocol="HTTP/1.1" 
connectionTimeout="20000" 
redirectPort="8444" />

 

Tomcat_1:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 

Tomcat_2:

<Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />

 

做完上述修改同时启动Tomcat_1和Tomcat_2保证两个实例能同时工作,分别访问http://localhost:8080和http://localhost:8081测试小猫飞起来了。完成这些只是最基本的工作,真正的还没开始,下面进入重点!

 

3、apache配置

3.1apache 配置

在apache的安装目录中找到conf/httpd.conf进行如下修改:

1)修改默认项目部署路径

 

DocumentRoot "apche安装目录/htdocs" #注释掉加入下面内容,这个是我们要放项目的目录
DocumentRoot "c:/www"

 

2)mod_jk.so配置

 

LoadModule jk_module modules/mod_jk.so
JKWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
<VirtualHost *>
DocumentRoot c:/www
<Directory "c:/www/hello">
    AllowOverride None
    Order allow,deny
          Allow from all
</Directory>
<Directory "c:/www/hello/WEB-INF">
         Order deny,allow
         Deny from all
</Directory>
ServerAdmin localhost
DocumentRoot c:/www/
ServerName localhost:80
DirectoryIndex index.html index.htm index.jsp index.action
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common

JkMount /* controller
JkMount /*WEB-INF controller
JkMount /*j_spring_security_check controller
JkMount /*.action controller
JkMount /servlet/* controller
JkMount /*.jsp controller
JkMount /*.do controller
JkMount /*.action controller
 
JkMount /*fckeditor/editor/filemanager/connectors/*.* controller
JkMount /fckeditor/editor/filemanager/connectors/* controller
</VirtualHost>

3)workers.properties配置 (在apache安装目录下conf下建立新的workers.prooerties)

 

 

worker.list = controller
#tomcat1
worker.tomcat1.port=8009       
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#tomcat2
worker.tomcat2.port=8010    
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#========controller========
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2       #注意对应关系
worker.lbcontroller.sticky_session=0
worker.controller.sticky_session_force=true
worker.connection_pool_size=3000
worker.connection_pool_minsize=50
worker.connection_pool_timeout=50000
 

 

3.2tomcat 配置

注意:确保你已经做了2.1中相关端口的修改

1)在tomcat安装目录的conf/service.xml中找到

 

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">   
tomcat_1:修改为

 

 

<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">   
tomcat_2:修改为

 

 

<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">   
注意:这里所修改的值是根据workers.properties中的配置进行对应的

2) 在1)中修改内容(即:<Engine ......>)的后面加入如下内容

 

 

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
                  channelSendOptions="6"> 
              <Manager className="org.apache.catalina.ha.session.BackupManager" 
                    expireSessionsOnShutdown="false" 
                    notifyListenersOnReplication="true" 
                    mapSendOptions="6"/> 
           <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
             <Membership className="org.apache.catalina.tribes.membership.McastService" 
                         bind="127.0.0.1" 
                         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="100" 
                       maxThreads="6"/> 
             <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
               <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" timeout="60000"/>  
             </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=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> 
              <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
         </Cluster>

注意:每个tomcat实例都要加入,并且注意Receiver port="4001" 此端口不能重复

 

基本内容到这里就结束了

4.测试配置

如果你已经完成上述配置应该就可以实现tomcat的集群了,分别启动Tomcat_1,Tomcat_2

Tomcat_1:


Tomcat_2:


2)启动apache,apache能正常启动就ok啦

3)这是一个很简单的测试项目hello,只是打印一下session,在tomcat每个实例中的webapps中部署hello,别忘了在apache中也部署(d:/www我们前面修改过的)发挥你的想象进行各种测试吧。。。。。。

注意注意:在测试项目的web.xml中加入 <distributable/>

1:


2:


 






 

 


 

posted @ 2013-04-14 12:44  xinyuyuanm  阅读(294)  评论(0编辑  收藏  举报