tomcat集群配置

来源:互联网 发布:移民新西兰 知乎 编辑:程序博客网 时间:2024/06/07 03:51

一、修改apache的workers.properties

worker.list = controller,tomcat1,tomcat2  #server 列表      
#========tomcat1========      
worker.tomcat1.port=8019       #ajp13 端口号,在tomcat下server.xml配置,默认8009      
worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址      
worker.tomcat1.type=ajp13      
worker.tomcat1.lbfactor = 1    #server的加权比重,值越高,分得的请求越多      
     
#========tomcat2========      
worker.tomcat2.port=8029       #ajp13 端口号,在tomcat下server.xml配置,默认8009      
worker.tomcat2.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址      
worker.tomcat2.type=ajp13      
worker.tomcat2.lbfactor = 1    #server的加权比重,值越高,分得的请求越多      
     
#========controller,负载均衡控制器========      
worker.controller.type=lb      
worker.controller.balanced_workers=tomcat1,tomcat2   #指定分担请求的tomcat      
worker.loadbalancer.sticky_session=1 
worker.loadbalancer.sticky_session_force=0


二、httpd.conf文件内容的修改

找到原来的“<VirtualHost>”段

改成如下形式:

<VirtualHost *>
DocumentRoot d:/deploy
<Directory "d:/deploy/passport-portal">
    AllowOverride None
    Order allow,deny
          Allow from all
</Directory>
<Directory "d:/deploy/passport-portal/WEB-INF">
         Order deny,allow
         Deny from all
</Directory>
ServerAdmin localhost
DocumentRoot d:/deploy/
ServerName PC-20150512HVJG:80
DirectoryIndex index.html index.htm index.jsp index.do
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
 
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
</VirtualHost>


三、tomcat配置

假设准备好2个tomcat集群,修改server.xml配置文件:

1、找到这行<Server port="8005" shutdown="SHUTDOWN">,将其中的一个tomcat的port修改成不一样的端口,如8006

2、找到<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>修改成

 <Connector executor="tomcatThreadPool"
               port="8019" protocol="AJP/1.3"
               connectionTimeout="20000"
URIEncoding="UTF-8"  minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="300"  maxThreads="300" maxProcessors="1000" minProcessors="5"
useURIValidationHack="false" compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
               redirectPort="8443" />

注意设置port一个为8019,另一个为8029。redirectPort端口一个为8443,一个为9443。

3、找到<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">分别在不同的tomcat修改成

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

<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">

注意jvmRoute对应的是workers.properties配置文件里面的worker.list 集群服务列表名字,别配错了!

4、在<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">下面加上集群信息:

<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的port设置成不一样如4002。

5、把系统环境变更中的CATALINA_HOME与TOMCAT_HOME这两个变量去除掉 

6、在每个tomcat的webapps目录下布署同样的一个工程,在布署工程前先确保你把工程中的WEB-INF\we b.xml文件做了如下的修改,在web.xml文件的最未尾即“</web-app>”这一行前加入如下的一行:
<distributable/>
使该工程中的session可以被tomcat的集群节点进行轮循复制


四、测试

分别启动两个tomcat,访问应用,观察sessionId,当关闭其中一个tomcat时,再访问应用地址,sessionId没变,说明session复制成功,tomcat负载均衡配置成功。

0 0
原创粉丝点击