• Apache+Tomcat部署负载均衡(或集群)


    Apache+Tomcat部署负载均衡(或集群)

     

    本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的。后来想了想,这样不便于没有用过Apache的朋友来学习本文内容。于是干脆加大篇幅,让对Apache不了解的朋友能对Apache有个初步的认识,阿帕奇。

    如果对集群概念不了解,可以看一下之前写的一篇:WebLogic部署集群和代理服务器 这篇对集群的概念解释的比较细致,与weblogic集群的不同之处在于,它对各个子服务器上应用的部署,是由weblogic容器自动完成的。而tomcat则需要手动去拷贝项目。

    一、负载均衡网络拓扑图。

    一、Apache服务器的安装及配置。

    1.先网上下载Apache服务器安装版,双击安装,直接下一步下一步不需要做任何配置。

    2.安装好以后打开安装目录,找到conf目录打开

    1.手动创建两个文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    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
     
    #指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器  
    JkMount /*.do controller
    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
    JkMount /* controller
    #================文件内容================

    2.修改httpd.conf文件内容

    打开httpd.conf文件,最后一行加上:Include conf/mod_jk.conf

    Apache默认端口是80,如果需要改端口直接找到该文件下Listen 80字段,把这个80改掉就可以了。

    3.添加mod_jk-1.2.31-httpd-2.2.3.so插件

    下载mod_jk-1.2.31-httpd-2.2.3.so文件添加到modules文件夹下。这个so文件是配置负载均衡必须要用到的插件。

    配到这里Apache这块就不用去动了。

    三、Tomcat服务器的安装及配置。

    1.下载tomcat后直接解压得到。

    2.打开conf文件夹下的server.xml文件修改以下内容保证两台tomcat的相应端口不冲突:

    第一处:port

    <Server port="9011" shutdown="SHUTDOWN">

    第二处:port、redirectPort  注意编码格式需设置成gbk,否则存在乱码问题

    <Connector port="9001" protocol="HTTP/1.1"

                   connectionTimeout="20000"

                   redirectPort="9441" 

       URIEncoding="GBK"/>

    第三处:port对应Apache配置文件中配置的port、redirectPort,注意编码

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

    替换成:

    第四处:jvmRoute对应Apache配置文件中配置的tomcat名

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

    第五处:只改蓝色标记的port

    在<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">下面添加以下字段:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <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>

    四、应用部署及运行

    1.将项目拷贝到所有tomcat下的webapps文件夹下。

    2.找到tomcat服务器bin目录下的startup.bat文件,双击启动tomcat

    3.启动完所有tomcat之后启动Apache:直接点击图标启动

     

    五、session复制

    打开项目中WEB-INF文件夹下的web.xml文件,倒数第二行加入<distributable/>

    五、测试页

    创建以下文件放到项目中,用于测试负载均衡和session复制

    文件名:Test.jsp

    复制代码
     1 <%@ page contentType="text/html; charset=GBK" %>
     2 <%@ page import="java.util.*" %>   
     3 <html><head><title>Cluster App Test</title></head>   
     4 <body>   
     5 
     6 <%     
     7    System.out.println("SessionID:"  + session.getId());    
     8 %>   
     9 
    10 Server Info:    
    11 
    12 <%    
    13 out.println(request.getServerName() + " : " + request.getServerPort()+"<br>");%>   
    14 
    15 <%    
    16   out.println("<br> ID " + session.getId()+"<br>");  // 如果有新的 Session 属性设置    
    17 
    18   String dataName = request.getParameter("dataName");    
    19 
    20   if (dataName != null && dataName.length() > 0) {    
    21      String dataValue = request.getParameter("dataValue");    
    22      session.setAttribute(dataName, dataValue);    
    23   }    
    24 
    25   out.print("<b>Session 列表</b><br>");      
    26   Enumeration e = session.getAttributeNames();    
    27 
    28   while (e.hasMoreElements()) {    
    29      String name = (String)e.nextElement();    
    30      String value = session.getAttribute(name).toString();    
    31      out.println( name + " = " + value+"<br>");    
    32      System.out.println( name + " = " + value);    
    33    }    
    34 %>   
    35 
    36   <form action="test.jsp" method="POST">   
    37     名称:<input type=text size=20 name="dataName">   
    38      <br>   
    39     数值:<input type=text size=20 name="dataValue">   
    40      <br>   
    41     <input type=submit>   
    42    </form>   
    43 </body>   
    44 </html> 
    复制代码

    这是Apache+Tomcat部署负载均衡(或集群),如果有在同一台电脑上部署多组集群的需求的话,还需要在配置上做一些改动

  • 相关阅读:
    [LintCode] 1563. Shortest path to the destination
    [LintCode] 1835. Number of Ways to Stay in the Same Place After Some Steps I
    [Algo] 140. Maximum Path Sum Binary Tree III
    [Algo] 141. Binary Tree Path Sum To Target III
    [LintCode] 597. Subtree with Maximum Average
    [LintCode] 596. Minimum Subtree
    [LC] 16. 3Sum Closest
    [Algo] 182. 2 Sum All Pair II
    [Algo] 181. 2 Sum All Pair I
    创建ORACLE 查询用户
  • 原文地址:https://www.cnblogs.com/HeXiaoZhou/p/8525452.html
Copyright © 2020-2023  润新知