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

第一步:下载Apache 》http://httpd.apache.org/download.cgi#apache22如图所示:

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

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

下载地址:

http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/

这里选择的是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进行测试了,网上大部分都是这样测试的,我这里也用这种方法测试:

<%@ 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>

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

在浏览器上输入:http://127.0.0.1/test/test2.jsp如下图:刷新,后台访问,Tomcat1,Tomcat2


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


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

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

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

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

文件下载地址:

源码,配置文件,Apache,jk,下载!

博客地址:http://1936625305.blog.51cto.com/6410597/1406268

转载于:https://blog.51cto.com/8751106/1588192

Web开发:Apache2.2.x+Tomcat6.x+jk2.x做集群配置相关推荐

  1. tigase集群配置搭建官方方法-xmpp通讯协议配备tigase集群开发简单省事-哇谷即时通讯IM源码服务-哇谷即时通讯源码

    tigase集群配置搭建官方方法-xmpp通讯协议配备tigase集群开发简单省事-哇谷即时通讯IM源码服务 哇谷即时通讯IM云-即时通讯源码-音视频会议-直播-短视频-企业即时通讯办公-聊天app- ...

  2. 大数据开发技术课程报告(搭建Hadoop完全分布式集群操作集群)

    文章目录 大数据开发技术课程报告内容及要求 一. 项目简介和实验环境 二. 虚拟机的各项准备工作 三. 安装JDK并配置环境变量 四. 安装Hadoop并配置环境变量 五. 配置Hadoop完全分布式 ...

  3. terracotta3.7.7+apche2.2+tomcat6集群配置

    terracotta是一家美国公司做的集群框架.是分布式缓存线性扩展平台.它巧妙得隐藏了多个分布式JVM带来的复杂性,使得java对象能够透明得在多个JVM集群中进行分享和同步,并能够进行持久化. t ...

  4. Python之web开发(error):python使用django框架搭建网站之文件配置

    error list: 1.Error:please enable Django support for the project 2:django.core.exceptions.Improperly ...

  5. java sessionstate_在Java Web开发中自定义Session

    Session在存储安全性要求较高的会话信息方面是必不可少的,对于分布式Web应用自定义Session支持独立的状态服务器或集群是必须的.本文就来教大家如何在Java Web开发中自定义Session ...

  6. 第七章 Web开发实战2——商品详情页

    本章以京东商品详情页为例,京东商品详情页虽然仅是单个页面,但是其数据聚合源是非常多的,除了一些实时性要求比较高的如价格.库存.服务支持等通过AJAX异步加载加载之外,其他的数据都是在后端做数据聚合然后 ...

  7. 移动web开发DRP问题

    DPR dpr问题是移动端web开发上需要注意的问题,用大白话说就是,代码中所设置的像素值实际上是虚拟像素,手机屏幕上的像素实际为物理像素,原始的手机,虚拟像素与物理像素是1:1覆盖的,但随着移动端屏 ...

  8. OpenResty学习——第七章 Web开发实战2——商品详情页

    本文转自https://blog.csdn.net/jinnianshilongnian/article/details/84704211,好文要顶,感谢博主分享! 本章以京东商品详情页为例,京东商品 ...

  9. Firefox火狐浏览器web开发调试开启强制刷新缓存模式

    Firefox火狐浏览器web开发调试开启强制刷新缓存模式 最近做项目的时候,在火狐浏览器发现缓存难清理,用Ctrl+F5 Ctrl+R 等在谷歌和IE浏览器的快捷键没用,搜索了一下,发现火狐清理缓存 ...

  10. 找工作面试_求职面试和获得Web开发工作的提示

    找工作面试 In this one-on-one episode of the Versioning Show, Tim and David discuss the ins and outs of j ...

最新文章

  1. 交换机知识--集群管理
  2. 亿级别记录的mongodb批量导入Es的java代码完整实现
  3. IPFS: NAT traversal(NAT穿越)
  4. C++ 数据结构-图相关操作的算法思路
  5. anaconda打不开没反应_为什么账户总是有点击没对话?无非这2个原因
  6. Matlab 图像处理的一些杂记
  7. Hystrix中的批量(折叠)请求
  8. JavaScript toLocaleString()时间转化为字符串
  9. [极客大挑战 2019]EasySQL
  10. 安川机器人编程加电弧_安川焊接机器人编程
  11. 删除ELK中的数据。。
  12. MySQL 客户端工具
  13. 韩顺平Java基础入门笔记-第一章
  14. 目标检测、语义分割性能指标
  15. 再见beycond comapre,适合程序员使用的免费文件对比工具——CCompare1.14
  16. dpdk bond口学习笔记
  17. 哨兵2号Sentinel-2已经完成大气校正的L2A级遥感影像产品的下载方法
  18. 我的一年AI算法工程师成长记
  19. HDOJ 2080 数学
  20. mysql项目练习_mysql练习项目

热门文章

  1. PyTorch:Embedding初始化及自定义
  2. 1003 我要通过! (20 分)—PAT (Basic Level) Practice (中文)
  3. Android8.1系统Led的控制从底层到上层的实现
  4. ubuntu系统无法连接识别到adb设备和fastboot设备解决方法
  5. win10开机出现两个系统
  6. eclipse修改java编译的版本
  7. 为何 Emoji 能给产品设计(营销)带来如此大的数据增长?
  8. cmd窗口连接mongodb服务端
  9. H5 表格标签基本使用
  10. JS - Object and Property的删除用法