博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Apache2.2.x+Tomcat6.x+jk2.x做集群配置
阅读量:2230 次
发布时间:2019-05-09

本文共 3705 字,大约阅读时间需要 12 分钟。

【Middleware】☆★之Apache2.2.x+Tomcat6.x+jk2.x做集群配置

 

 

         在实际项目开发中,当访问量过大,而客户又不愿意多花钱的情况下,为保证项目的稳定性,使用开源免费的中间件做集群是一个不错的选择。这就是我写本博的初衷!

 

         第一步:下载Apache 如图所示:

 

 

      现在官方给的最新版本就是2.4.9,但是因为保证稳定性,我采用的是低一个的版本!

 

      第二步:下载mod_jk这个动态库是Apache的一个可选模块,用来搭建JVAV 平台的WEB 服务器时使用

            下载地址:

 

这里选择的是mod_jk-1.2.31-httpd-2.2.3.so,如果http服务器是Apache2.0.X版本,则必须选择mod_jk-1.2.31-httpd-2.0.52.so每个apache的版本,都会有一个特定的jk与之对应!OK?

 

第三步:安装下载好的二进制文件:

 

安装Apache也没有什么难度,就是在安装过程中要配置域名、网址和管理员邮箱之类的信息,这个信息完全可以按照提示,然后修改下填入即可,之后想修改的话直接到配置文件中改就行了。除了这个地方,还要保证机器上的80端口没有被其他程序(如iis)占用。至于安装路径,完全取决于个人爱好。其他的默认就行了。安装成功后,系统右下角的托盘区会有个图标,我们可以通过这个启动apache,如果那个小红点变成绿色,说明服务已经正常启动了(如果服务没有启动起来,说明安装过程中的配置有错误,建议卸载后重装)。如果按照默认,端口是80的话,那打开浏览器,输入:http://localhost/ ,应该可以看到 " It works “的字样。这样就可以进入下一步了。如图所示:

 

 

浏览器效果如图所示:

 

 

第四步:现在是核心配置了

在安装好的Apache中找到httpd.conf文件,如图:

 

 

在其最下面添加如下一行信息:

 

 

在conf文件夹中新建mod_jk.conf文件

配置如下:

 

找到modules文件夹,将下载好的mod_jk-1.2.31-httpd-2.2.3.so文件直接拷贝进去;这里面有好多的xxx.so;如图所示:

 
 

conf文件夹中新建workers.properties文件夹,配置如下:

 

 

 

注:我这里就用了两个Tomcat做示范,当然你用多个Tomcat也没问题,相应的在本机上的port端口不一致,就行,远程不用管,但是要把host配置成远程IP地址,就行了!

下面我们就开始配置Tomcat里面的server.xml文件了,里面有三个端口,分别是Server,Connector,Connector AJP,这三个端口号都要不一致,在这里就不叙述了下面可以下载server.xml文件例子。

 里面两个核心的配置如下:

 

注:一个是配置负载均衡,一个是配置session复制,保证整个服务器session值是一致的

 

配置到这里:基本完成,下面,我们就编写web项目进行测试:

在新建的web项目中,需要在web.xml文件中添加这条信息,distributable元素来告诉servlet/JSP容器,编写的应用将在分布式Web容器中部署!

 

ok,编写一个jsp进行测试了,网上大部分都是这样测试的,我这里也用这种方法测试:

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

 

现在将web应用部署到Tomcat1,Tomcat2中去,记住是加载之后的class文件,然后分别启动tomcat1,Tomcat2,启动顺序无所谓,最后启动Apache

在浏览器上输入:如下图:刷新,后台访问,Tomcat1,Tomcat2

 

我们发现sessionID是没有变化的,后台Tomcat在进行访问切换,

 我们继续输入数据看Tomcat打印的效果:

 

 

由此可见,我们的集群最核心的session复制做成功了,保证多个tomcat的session是一致的,基本完成集群配置,可以使用了,这也是我摸索而来,希望没有误导大家。

 

另外:为什么打印出来Server Info : null  也就是IP地址?这一点也是我郁闷的地方,有朋友看出问题,也可以留言,咱们一起交流!

 

附,为保证页面的图片大小统一,图片经过处理,所以分辨率有些不正常!呵呵....

 源码,配置文件,Apache,jk,下载地址:

 

 

源于

 

转载地址:http://dsgfb.baihongyu.com/

你可能感兴趣的文章
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST07~08-----P5~6
查看>>
solver及其配置
查看>>
JAVA多线程之volatile 与 synchronized 的比较
查看>>
Java集合框架知识梳理
查看>>
笔试题(一)—— java基础
查看>>
Redis学习笔记(三)—— 使用redis客户端连接windows和linux下的redis并解决无法连接redis的问题
查看>>
Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
查看>>