Tomcat集群配置

环境配置:

App应用服务器apache-tomcat-6.0.36

web服务器:apachehttpd-2.2.19 

java环境:jdk1.6

系统环境:winxp系统

首先配置web应用服务器配置tomcat-A配置

         1:修改tomcatserver.xml文件增加如下内容

                1、修改IP地址,如果是不同一台服务器注意修改IP地址

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">
            2、端口修改

 

               connectionTimeout="20000" 

               redirectPort="8444" />
   
注意每个tomcat的port都不能设置为一个,如果是不同的机器,可以设置为上面相同的参数,但是一个server里面不能出现相同的端口
     

备注:

1)        App应用服务器tomcat-B配置和tomcat-A基本相同,但需要注意的是两台服务器如果在一个电脑上就需要注意端口的冲突问题,比如:tomcat-A的端口是8080,那么tomcat-B就是8081或者其他,其他的以此类推

我这里这里的端口配置如下:

tomcat-Aserverport7777   ajp/1.3connector8019  httpconnector8444 

receverport4001

tomcat-Bserverport8888  ajp/1.3connector8009  httpconnector8443

              receverport:4002

2)        然后就是新建一个web应用测试一下,在新建应用的web.xml里面需要加上


3)        新建web应用,web.xml配置文件里面需要添加如下内容来配合实现session共享:

然后将应用分别部署到两台服务器,启动两台应用服务器进行测试:

注:由于jsp自带session对象,所以在测试的时候最好把页面自带的session对象关闭后再测试,关闭代码<%@ page session="false"%>

Tomcat-A  index.jsp代码:

          This is my JSP page.tomcat-A

          <%

                            HttpSessionmysession = request.getSession(false);

                           

                            if(mysession==null){

                                     mysession= request.getSession(true);

                                     mysession.setAttribute("appname","value-A");

                                     out.println("newsession:"+mysession.getId());

                                               }else{

                                     out.println("oldsession:"+mysession.getId());

                                     }

                                     out.println("appname="+mysession.getAttribute("appname"));

          %>

 

Tomcat-B  index.jsp代码:

   This is my JSP page.tomcat-B

   <%

                            HttpSessionmysession = request.getSession(false);

                           

                            if(mysession==null){

                                     mysession= request.getSession(true);

                                     mysession.setAttribute("appname","value-A");

                                     out.println("newsession:"+mysession.getId());

                                               }else{

                                     out.println("oldsession:"+mysession.getId());

                                     }

                                     out.println("appname="+mysession.getAttribute("appname"));

   %>

      

 

5)        分别访问两台服务器:http://localhost:7777/mycluster

http://localhost :8888/mycluster分别访问得到结果如下就证明配置可以了。


6)        web服务器配置

首先安装apache的web服务器:

apache服务器和tomcat的连接方法其实有三种:mod_JK、http_proxy和ajp_proxy。本文主要介绍最简单的http_proxy方式的配置,其他的可以自行尝试。

1:找到安装目录的conf文件夹,修改httpd.conf里面


去掉这3行的注释,没有就需要新添加上。

2:在该文件里新增如下内容,有的话就直接修改即可

ProxyRequestsOff

ProxyPass/cluster balancer://mycluster lbmethod=byrequests stickysession=jsessionid  nofailover=Off timeout=5 maxattempts=3

这里需要注意,没有这句话session就不能共享,网上很多方法都不能解决该问题-->

ProxyPassReverseCookiePath / /cluster

ProxyPassReverse/ balancer://mycluster/

BalancerMemberhttp://172.23.1.46:8081/mycluster smax=10 max=10 ttl=5 timeout=5 acquire=3  loadfactor=1

BalancerMemberhttp://127.23.1.46:8082/mycluster smax=10 max=10 ttl=5 timeout=5 acquire=3  loadfactor=2

SetHandlerbalancer-manager

Order Deny,Allow

Deny from all

Allow from all

SetHandlerserver-status

Order Deny,Allow

Deny from all

Allow from all

其中BalancerMember的路径是app应用服务器访问的路径和端口,该web服务器会根据实际访问情况根据自己的一套hash算法把请求分发到配置的两台应用服务器上去。由于这里都是在一个电脑上使用,所以ip相同,但是端口肯定要不一样。

对于apache服务有默认的80端口,如果没有其他应用就可以直接用该端口,有的话可以在httpd.conf文件里面对其进行修改。

你可能感兴趣的:(例子,源码,代码)