• apache和tomcat群集


    httpd.conf
        httpd.conf中添加:
        #与tomcat的插件
        include "D:clusterServerapacheconfmod_jk.conf

    mod_jk.conf
        在apache的conf文件夹中创建mod_jk.conf文件,并添加以下内容:
            LoadModule jk_module modules/mod_jk.so
            JkWorkersFile conf/workers.properties
            #指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
            JkMount /*.jsp controller

        
    复制插件文件mod_jk.so到apache的modules文件夹中

    workers.properties
        新建并编辑workers.properties文件,内容如下:
            worker.list = controller

            #========tomcat1========
            worker.tomcat1.port=11009
            worker.tomcat1.host=localhost
            worker.tomcat1.type=ajp13
            worker.tomcat1.lbfactor = 1

            #========tomcat2========
            worker.tomcat2.port=12009
            worker.tomcat2.host=localhost
            worker.tomcat2.type=ajp13
            worker.tomcat2.lbfactor = 1

            #========controller,负载均衡控制器========
            worker.controller.type=lb
            worker.controller.balanced_workers=tomcat1,tomcat2
            #      true:不进行回话复制,使用相同的tomcat处理回话;        false:回话进行复制,一台tomcat当掉,另一台也可持续访问
            worker.controller.sticky_session=false
            #ture:当一台tomcat访问没有反馈的时候,转换到另一台tomcat处理
            worker.controller.sticky_session_force=1


    server.xml
        tomcat配置文件:server.xml

            修改server.xml文件相关的端口信息,若在同一台机器上部署多个tomcat,请确保多个tomcat能够同时启动。

            Engine节点添加jvmRoute属性,属性的值要与apache中的配置文件workers.properties中的worker.controller.balanced_workers值中的一个。


            Connector节点的port属性要与apache中的配置文件workers.properties中worker.tomcat1.port值一致。


            去掉Engine节点以下配置信息的注释:
            <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
            说明:
                其实这只是对Cluster的最简单的一种配置,该配置下tomcat使用的是all-to-all方式的session同步,这种方式只适用于小规模的集群,即,session复制。
                tomcat另外一种session共享方式,只需为Cluster配置BackupManager即可,参看http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html

    web.xml
        web工程的web.xml中添加以下配置信息:(属性告诉servlet/JSP容器,编写的应用将在分布式Web容器中部署)
            <distributable/>

    测试用jsp文件:       

    <%@ page contentType="text/html; charset=UTF-8" %>
    
    <%@ 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="index.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>
    


    ==================================================================================================
    常见问题:

    1、  如果同一台机器上的节点之间session能够同步,但是不同机器间的session无法同步,可能的原因是机器间的时钟不同步,需要进行同步操作。        
    2、  关于jvmRoute。
    前面实验中的sessionid由两部分组成(前缀+后缀),而其后缀名就是jvmRoute配置的名称,mod_jk需要根据这个后缀名进行请求转发:当sticky_session=1时,mod_jk根据这个后缀名来判断该会话应该始终由哪个tomcat进行处理。


            
    参考书目:
    Professional.Apache.Tomcat6    
            
            
    参考文档:
    http://hi.baidu.com/wudengke213/item/5f63b016921850cc38cb306e
    http://www.360doc.com/content/12/0404/19/9350055_200808330.shtml

  • 相关阅读:
    Head First设计模式(观察者模式Observer)
    Head First设计模式(装饰者模式)
    Head First设计模式
    Head First设计模式 单件模式 独一无二的对象
    .NET 设计规范.NET约定、惯用法与模式8.使用规范
    .NET 设计规范.NET约定、惯用法与模式附录:C#编程风格约定
    设计模式 一 引言
    .NET 设计规范.NET约定、惯用法与模式7.异常
    Head First设计模式 工厂模式 烘烤OO的精华
    前端IDE中Emmet插件快捷输入HTML代码
  • 原文地址:https://www.cnblogs.com/kszit/p/3613838.html
Copyright © 2020-2023  润新知