一、环境:

Apache: 2.2.14;

  下载地址:http://archive.apache.org/dist/httpd/binaries/win32/

Tomcat: 7.0.82

JDK1.7

Win7 64位系统

二、Apache设置:

1、修改httpd.conf文件:

LoadModule proxy_module modules/mod_proxy.so

LoadModule negotiation_module modules/mod_negotiation.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so

此段代码前面的注释放开。

注意:需要确保这些so文件在modules文件夹下存在,如果没有则需要到网上下载后并放到modules目录下;

2、将下面这段代码放开注释:

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

3、文件末尾加入代码:

ProxyRequests On

<proxy balancer://cluster>

BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=tomcat1

BalancerMember ajp://127.0.0.1:8109 loadfactor=1 route=tomcat2

</proxy>

4、在conf/extra/httpd-vhosts.conf中添加代码:

<VirtualHost *:80>   // 对应httpd.conf  服务器端口号

ServerAdmin test@163.com

ServerName 127.0.0.1

ServerAlias localhost

ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

ProxyPassReverse / balancer://cluster/

ErrorLog "logs/proxyTest-error.log"

CustomLog "logs/lbtest-access.log" common

</VirtualHost>

ServerAdmin参数对应httpd.conf文件中的ServerAdmin参数内容;

5、启动apache,如果启动不了可以使用命令行启动httpd.exe文件,通过查看报错信息来解决;

三、Tomcat设置:

1、 如果两个tomcat实例是运行在一台机器上,需要修改对应的端口,如果是在两台机器上,则可以不用修改端口;需要修改的端口号如下:

2、增加jvmRoute参数:

3、放开Cluster参数:

4、分别启动tomcat1和tomcat2;

四、测试:

新建一个测试的web工程,在web.xml文件中增加一行:

    <distributable/>

建立测试页面文件index.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);

}

%>

</body>

</html>

启动Apache,在浏览器中打开:http://localhost:80/test/index.jsp,可以看到Apache会把请求负载到tomcat1和tomcat2上,但是session一直没有改变,说明session在两个tomcat之间进行了同步;

Apache+modproxy布置tomcat集群的更多相关文章

  1. Apache+modjk布置tomcat集群

    一.版本: Apache: 2.2.14: 下载地址:http://archive.apache.org/dist/httpd/binaries/win32/ Mod_jk:tomcat-connec ...

  2. apache server和tomcat集群配置三:水平集群下的tomcat集群配置

    在jsp文件中加入以下代码,用来测试是否共享session: SessionID: <%= session.getId() %> 之前尝试在linux中,但是因为模拟环境是虚拟机,虚拟机只 ...

  3. apache server和tomcat集群配置二:垂直负载

    垂直负载就是同一个机器中的不同服务器之间的负载.跟水平负载(ip不一样的服务器之间的负载)的最大区别就是要修改tomcat的端口号,避免引起冲突. 还要注意apache中workers.propert ...

  4. apache server和tomcat集群配置一:水平负载

    下载apache  server,最新链接http://archive.apache.org/dist/httpd/binaries/win32 当前实验版本2.2.4 下载apache  tomca ...

  5. apache tomcat 集群! (转)

    公司需要一个内部测试局域网, 要求可以支持3000并发访问!以前也没做过服务器这方面.临时抱佛脚,查看了N多文档,他人经验,布置好之后,又遇到了N多问题,功夫不负有心人.终于还是完成了要求!观他人的布 ...

  6. apache tomcat 集群!

    公司需要一个内部测试局域网, 要求可以支持3000并发访问!以前也没做过服务器这方面.临时抱佛脚,查看了N多文档,他人经验,布置好之后,又遇到了N多问题,功夫不负有心人.终于还是完成了要求!观他人的布 ...

  7. Linux+Apache+Tomcat集群配置

    参考: http://blog.csdn.net/bluishglc/article/details/6867358# http://andashu.blog.51cto.com/8673810/13 ...

  8. window xp Apache与Tomcat集群配置--转载

    转载地址:http://www.cnblogs.com/obullxl/archive/2011/06/09/apache-tomcat-cluster-config.html 一. 环境说明 Win ...

  9. Apache+tomcat集群配置

    一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://to ...

随机推荐

  1. Java使用FFmpeg处理视频文件指南

    Java使用FFmpeg处理视频文件指南 本文主要讲述如何使用Java + FFmpeg实现对视频文件的信息提取.码率压缩.分辨率转换等功能: 之前在网上浏览了一大圈Java使用FFmpeg处理音视频 ...

  2. python-day10--字符编码

    1.回顾: 软件→操作系统→硬件 2.文本编辑器: 启动:硬盘→内存→运行(cpu) 读文件:硬盘→内存→CPU读 存文件:保存到硬盘中 3.python解释器 启动:硬盘→内存→运行(cpu) 读文 ...

  3. thinkphp查询缓存

    S()函数的使用:  ThinkPHP把各种缓存方式都抽象成统一的缓存类来调用,而且ThinkPHP把所有的缓存机制统一成一个S方法来进行操作,所以在使用  不同的缓存方式的时候并不需要关注具体的缓存 ...

  4. yield 关键字

    yield 关键字向编译器指示它所在的方法是迭代器块.编译器生成一个类来实现迭代器块中表示的行为.在迭代器块中,yield 关键字与 return 关键字结合使用,向枚举器对象提供值.这是一个返回值, ...

  5. Google浏览器设置变更默认搜索引擎为百度

  6. 用Maven构建Mahout项目

    转载请注明出处:http://blog.fens.me/hadoop-mahout-maven-eclipse/ Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, ...

  7. 以太网最大帧和最小帧、MTU

    根据rfc894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步码 + ...

  8. L1-008 求整数段和

    给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中−,其间以空格分隔. 输出格式: 首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字 ...

  9. 去掉“Windows文件保护”

    1.在“开始→运行”对话框中键入“gpedit.msc”,打开“本地计算机策略→计算机配置→管理模板→系统”窗口,找到“Windows文件保护”组,在右侧窗格中双击“设置Windows文件保护扫描”项 ...

  10. NodeJS 难点(网络,文件)的 核心 stream 一:Buffer

    stream应用一图片转存服务 stream github教程 文件操作和网络都依赖了一个很重要的对象—— Stream, 而这个 <node深入浅出> 没有分析的, 所以读完这本书, 在 ...