tomcat 集群(tomcat8)

来源:互联网 发布:sqlserver完全卸载 编辑:程序博客网 时间:2024/05/05 16:16
1、文件下载  httpd-2.0.65-win32-x86-no_ssl  和 tomcat-connectors-1.2.39-windows-i386-httpd-2.0.x
          
    
         
安装 httpd-2.0.65-win32-x86-no_ssl   如果安装成功,是可以直接 访问 http://localhost 的。
  
把  tomcat-connectors-1.2.39-windows-i386-httpd-2.0.x 解压出来的 mod_jk.so  放在 Apache的安装目录的  mode中

2、配置 Apache

1、修改httpd.conf
     找到conf目录下的httpd.conf,在文件的最后一行添加   include conf\mod_jk.conf"

2、在 httpd.conf同目录下 新建 mod_jk.conf文件,内容如下:

#加载mod_jk Module  
LoadModule jk_module modules/mod_jk.so  
 
#指定 workers.properties文件路径  
JkWorkersFile conf/workers.properties  
 
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器  
JkMount /*.jsp controller  

3、将下载的JK插件mod_jk-1.2.31-httpd-2.2.3.so复制到Apache安装目录的modules目录下。

4、新建并编辑workers.properties文件,内容如下:

worker.list = controller,tomcat1,tomcat2  #server 列表   

#========tomcat1========   
worker.tomcat1.port=8009       #ajp13 端口号,在tomcat下server.xml配置,默认8009   
worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址   
worker.tomcat1.type=ajp13   
worker.tomcat1.lbfactor = 1    #server的加权比重,值越高,分得的请求越多   
  
#========tomcat2========   
worker.tomcat2.port=8109       #ajp13 端口号,在tomcat下server.xml配置,默认8009   
worker.tomcat2.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址   
worker.tomcat2.type=ajp13   
worker.tomcat2.lbfactor = 2    #server的加权比重,值越高,分得的请求越多  


#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1

3、修改 service.xml 文件

          tomcat1
               这个端口默认是:8009的
               <Connector port="9988" protocol="AJP/1.3" redirectPort="8443" />

               这里的是说名配置的是tomcat1
               <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

               这句话默认是注释的,我们为了能集群,去掉注释
              <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

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

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

                <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

          小结: 这里就大概可以看出来 tomcat中的配置是根据 apacer的  worker.properties 中的配置文件相应的参数设置的。
          
4、修改tomcat2 service.xml文件的,我的tomcat是放在同一个机器上的,所以还要修改一些端口,不然启动会报错,当然如果tomcat是部署在不同的机器上,那么这一步可以省了
               这两个配置 tomcat中应该是配置不同的,如果端口相同在同一个机器上启动就会报错
               <Server port="9985" shutdown="SHUTDOWN">

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

     
5、写一个测试项目(网上拷贝的)
<%@ page contentType="text/html; charset=GBK" %>  
<%@ page import="java.util.*" %>  
<html><head><title>Cluster App Test</title></head>  
<body>  
<%    
   System.out.println("SessionID:"  + session.getId());   
%>  
Server Info:   
<%   
out.println(request.getServerName() + " : " + request.getServerPort()+"<br>");%>  
<%   
  out.println("<br> ID " + session.getId()+"<br>");  // 如果有新的 Session 属性设置   
  String dataName = request.getParameter("dataName");   
  if (dataName != null && dataName.length() > 0) {   
     String dataValue = request.getParameter("dataValue");   
     session.setAttribute(dataName, dataValue);   
  }   
  out.print("<b>Session 列表</b><br>");     
  Enumeration e = session.getAttributeNames();   
  while (e.hasMoreElements()) {   
     String name = (String)e.nextElement();   
     String value = session.getAttribute(name).toString();   
     out.println( name + " = " + value+"<br>");   
         System.out.println( name + " = " + value);   
   }   
%>  
  <form action="test.jsp" method="POST">  
    名称:<input type=text size=20 name="dataName">  
     <br>  
    数值:<input type=text size=20 name="dataValue">  
     <br>  
    <input type=submit>  
   </form>  
</body>  
</html> 

6、在web.xml中写上   <distributable/>     (表示可以分配的)

7、把项目发布到tomcat1和tomcat2中,启动tomcat1和tomcat2(先后启动无关)

6、在浏览器中输入 http://localhost/test/test2.jsp;不断刷新,可以看到session ID 不变,session内容不变,但是它是轮流请求 tomcat1 和 tomcat2的
 






0 0