apache2.2.25+mod_jk-apache-2.2.2.so+apache-tomcat-7.0.56集群

时间:2022-12-22 00:25:30

apache2.2.25+mod_jk-apache-2.2.2.so+apache-tomcat-7.0.56集群

 

1.安装httpd-2.2.25-win32-x86-no_ssl.msi

按默认安装路径,我电脑如果自定义的话安装不了

2.下载mod_jk-apache-2.2.2.so

3.下载tomcat 我用的是apache-tomcat-7.0.56

4.首先设置各个tomcat的端口如果在同一台电脑上需保证端口号的唯一

打开server.xml文件修改里面的属性

<Server port="9015" shutdown="SHUTDOWN">这个端口要唯一

<Connector port="9080"  protocol="HTTP/1.1" URIEncoding="UTF-8"/> 这个可以注释掉,不需要暴露tomcat出去了,apache是通过ajp协议通信的

<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />这个端口要唯一

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">设置名称tomcat1

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">添加这个

 

打开各个tomcat保证各个tomcat能够正常启动

 

5.现在这一步稍微复杂一点,做配置文件

6.首先把mod_jk-apache-2.2.2.so文件复制到apache安装路径下的modules文件夹下

7.然后在conf文件夹下打开httpd.conf文件在文件最后添加

#指定模块路径
LoadModule jk_module modules/mod_jk.so
#指定mod_jk的workers定义
Include "C:\Program Files\Apache Software Foundation\Apache2.2\conf\mod_jk.conf"

 

8.然后新建mod_jk.conf文件,此文件再conf下新增。

 

JkWorkersFile conf/workers.properties
JkMount /*.jsp controller
JkMount /*.do controller

 

9.然后新建workers.properties文件,此文件再conf下新增

#server
#控制器名称
worker.list=controller
#==========tomcat1===========
#ajp协议的端口,如果2个tomcat部署在同一个服务器中,那个ajp端口需要不同
worker.tomcat1.port=9009
#tomcat的所在主机的ip,如果是本机,则写本机的ip即可
worker.tomcat1.host=172.16.80.107
#协议类型
worker.tomcat1.type=ajp13
#负载因子
#如果2个tomcat,该参数相同,表示等比例,如果想tomcat负载多一点,只要把这个参数改的大一点即可,具体多少还是得看情况
worker.tomcat1.lbfactor=1

#==========tomcat2===========
worker.tomcat2.port=8809
worker.tomcat2.host=172.16.80.107
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1

#===================controller,负载均衡控制器=========
worker.controller.type=lb
#请求失败以后重试次数
worker.controller.retries=3
#controller控制的tomcat的名称,分别为tomcat1和tomcat2,由tomcat中的server.xml中设值
worker.controller.balance_workers=tomcat1,tomcat2
#回话是否有粘性,false表示无粘性,同一个回话的请求会到不同的tomcat中处理
worker.controller.sticky_session=false
#当一个节点蹦了,如果设值为true,那么服务器返回500错误给客户端,如果设值为false,则转发给其他的#tomcat,但是会丢失回话信息
worker.controller.sticky_session_force=false
#worker.controller.max_reply_timeouts=10

 

10. 新建一个web项目test,项目中 web.xml中必须添加<distributable/>属性

新建一个jsp页面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>
    值:<input type=text size=20 name="dataValue">
     <br>
    <input type=submit>
   </form>
</body>
</html>

然后部署项目

最后启动apache在启动tomcat,然后访问项目

http://localhost/test/test2.jsp

显示

Server Info: localhost : 80

ID 70B5A490CDCA86E0A1D75019F03B8AFD.tomcat2
Session 列表
1 = 1
名称:
值: