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

来源:互联网 发布:java中多态的表现形式 编辑:程序博客网 时间:2024/05/22 13:19

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

 

一、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">

 

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

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

               connectionTimeout="20000"

               redirectPort="9441" 

   URIEncoding="GBK"/>

 

 

 

 

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

<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
<cluster classname="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelsendoptions="6">
              <manager classname="org.apache.catalina.ha.session.BackupManager" expiresessionsonshutdown="false" notifylistenersonreplication="true" mapsendoptions="6"></manager>
           <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"></membership>
             <receiver classname="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4001" selectortimeout="100" maxthreads="6"></receiver>
             <sender classname="org.apache.catalina.tribes.transport.ReplicationTransmitter">
               <transport classname="org.apache.catalina.tribes.transport.nio.PooledParallelSender" timeout="60000"></transport
             </sender>
             <interceptor classname="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"></interceptor>
             <interceptor classname="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"></interceptor>
             <interceptor classname="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"></interceptor>
           </channel>
           <valve classname="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"></valve>
           <clusterlistener classname="org.apache.catalina.ha.session.ClusterSessionListener"></clusterlistener>
</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> 
复制代码
0 0
原创粉丝点击