日期:2014-05-16  浏览次数:20753 次

Apache整合tomcat配置集群
   本文是自己实践Apache和tomcat整合文章,谨为自己日后忘记,特记录本博客,Apache采用的是2.2,下载地址http://httpd.apache.org/download.cgi#apache22,tomcat采用的6.0,现在开始配置。
   [list]
  • 首先安装Apache,修改conf目录下的httpd.conf文件,在它的最后面加上一句Include conf\mod_jk.conf,然后在conf目录下新建mod_jk.conf文件,里面需要添加的内容
  • #加载mod_jk Module 
    LoadModule jk_module modules\mod_jk-1.2.31-httpd-2.2.3.so 
    #指定 workers.properties文件路径
    JkWorkersFile conf/workers.properties
    
    # Where to put jk logs
    JkLogFile logs/mod_jk.log
    # Set the jk log level [debug/error/info]
    JkLogLevel info
    # Set the jk log level [debug/error/info]
    JkLogLevel info
    # Select the log format
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
    # JkOptions indicate to send SSL KEY SIZE,
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    # JkRequestLogFormat set the request format
    JkRequestLogFormat "%w %V %T"
    JkMount /*        controller
    # 转发某个目录下的(此例为:/example)所有文件给tomcat:
    #JkMount /example/*  tomcat1
    #指定哪些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制
    #器,/* 表示所有请求均由tomcat处理
    #JkMount /* controller
  • 将下载的JK插件mod_jk-1.2.31-httpd-2.2.3.so复制到Apache安装目录的modules目录下
  • 新建并编辑workers.properties
  • #controller,tomcat1,tomcat2  #server 列表
    worker.list = controller  #server 列表
    
    #========tomcat1========
    worker.tomcat1.port=11009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
    
    worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
    
    worker.tomcat1.type=ajp13
    
    worker.tomcat1.lbfactor = 1   #server的加权比重,值越高,分得的请求越多
    
    
    #========tomcat2========  
    worker.tomcat2.port=12009      #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  
    
    #tomcat1,tomcat2
    worker.controller.balanced_workers=tomcat1,tomcat2   #指定分担请求的tomcat  
    
    worker.controller.sticky_session=false   #worker.controller.sticky_session=true  这两句话等同,此处表示是否session复制
    worker.controller.sticky_session_force=1

    这里配置了两个tomcat
  • 修改tomcat的端口设置
  • 修改server port 它主要用来监控tomcat的运行状态,关闭启动等
    修改Connector port 它主要用来监听来至客户端的请求http/1.1
    修改Connertor port ajp13它主要用来监控Apache 整合tomcat之间的连接
    配置过个tomcat它们的端口号都不能相同
        [/list]
    测试

    建立测试项目
    建立test项目,需要在项目的web.xml中添加<distributable/>
    建立test2.jsp,内容如下(网上都用这个测试,我就省的麻烦了):
    <%@ page contentType="text/html; charset=GBK" %>
    <%@ page import="java.util.*" %>
    <html><head><title>Cluster App Test</title></head>
    <body>
    Server Info:
    <%
    out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<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.println("<b>Session 列表</b><br>");
      System.out.println("============================");
      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="test2.jsp" method="POST">
        名称:<input type=text size=20 name="dataName">
         <br>