Apache+modproxy布置tomcat集群
一、环境:
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集群的更多相关文章
- Apache+modjk布置tomcat集群
一.版本: Apache: 2.2.14: 下载地址:http://archive.apache.org/dist/httpd/binaries/win32/ Mod_jk:tomcat-connec ...
- apache server和tomcat集群配置三:水平集群下的tomcat集群配置
在jsp文件中加入以下代码,用来测试是否共享session: SessionID: <%= session.getId() %> 之前尝试在linux中,但是因为模拟环境是虚拟机,虚拟机只 ...
- apache server和tomcat集群配置二:垂直负载
垂直负载就是同一个机器中的不同服务器之间的负载.跟水平负载(ip不一样的服务器之间的负载)的最大区别就是要修改tomcat的端口号,避免引起冲突. 还要注意apache中workers.propert ...
- apache server和tomcat集群配置一:水平负载
下载apache server,最新链接http://archive.apache.org/dist/httpd/binaries/win32 当前实验版本2.2.4 下载apache tomca ...
- apache tomcat 集群! (转)
公司需要一个内部测试局域网, 要求可以支持3000并发访问!以前也没做过服务器这方面.临时抱佛脚,查看了N多文档,他人经验,布置好之后,又遇到了N多问题,功夫不负有心人.终于还是完成了要求!观他人的布 ...
- apache tomcat 集群!
公司需要一个内部测试局域网, 要求可以支持3000并发访问!以前也没做过服务器这方面.临时抱佛脚,查看了N多文档,他人经验,布置好之后,又遇到了N多问题,功夫不负有心人.终于还是完成了要求!观他人的布 ...
- Linux+Apache+Tomcat集群配置
参考: http://blog.csdn.net/bluishglc/article/details/6867358# http://andashu.blog.51cto.com/8673810/13 ...
- window xp Apache与Tomcat集群配置--转载
转载地址:http://www.cnblogs.com/obullxl/archive/2011/06/09/apache-tomcat-cluster-config.html 一. 环境说明 Win ...
- Apache+tomcat集群配置
一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://to ...
随机推荐
- 关于初级dp的一些记忆
01背包和数塔都是寒假看的,数塔还算明白,但01背包虽然会做其实也是背下来的,一直不是很清楚它的可行性,昨天老师讲了以后恍然大悟,和数塔类似生成了一颗二叉树: 利用数组/dfs 自下而上/自上而下 ...
- Servlet 与 CGI 的比较
和CGI程序一样,Servlet可以响应用户的指令(提交一个FORM等等),也可以象CGI程序一样,收集用户表单的信息并给予动态反馈(简单的注册信息录入和检查错误).然而,Servlet的机制并不仅仅 ...
- iframe刷新父页面
iframe页面是内嵌到父页面的,当点击iframe页面的服务器控件时,默认只刷新iframe页面,父页面是不会刷新的.若想刷新父页面,可以使用js来实现,如 1. parent.location.r ...
- OC 设计模式
设计模式 一种或几种被所有程序员广泛认同的,有某些特定功能,或者实现某些特殊作用的编码格式 单例模式 键值编码(KVC) 键值观察(KVO) 观察者模式() 工厂模式(工厂方法) ps:MVC &am ...
- 2.strcpy使用注意(2)
分析下述代码: void test2() { char string[10],str1[10]; int i; for(i=0;i<10;i++) { srtr1='a'; } strcpy(s ...
- C语言中的volatile——让我保持原样
volatile译为:易变的.这不是和题目的让我保持原样矛盾了吗?其实不然,在变量前加上该关键字修饰,确实是告诉编译器,这个变量是一个容易改变的变量,不要对它进行优化,每次都要到变量的地址中去读取变量 ...
- 51nod1709复杂度分析
题解: 注意到,如果第j位有贡献,那么从i往上跳2^j,然后不能再跳超过2^j. 因此可以考虑倍增. 代码: #include<bits/stdc++.h> typedef long lo ...
- Java实现哈夫曼编码和解码
最近无意中想到关于api返回值加密的问题,譬如我们的api需要返回一些比较敏感或者重要不想让截获者得到的信息,像如果是做原创图文的,文章明文返回的话则有可能被抓包者窃取. 关于请求时加密的方式比较多, ...
- OC基础:内存(内存管理) 分类: ios学习 OC 2015-06-25 16:50 73人阅读 评论(0) 收藏
自动释放池: @autoreleasepool { } 内存管理机制 谁污染,谁治理 垃圾回收机制:gc(Garbage collection),由系统管理内存,开发人员不需要管理. OC ...
- Object -c基础知识(5)--release 之后 retainCount为何为1
在XCode中加入如下代码: UILabel *label=[UILabel alloc]; [label setText:@"TestLabel"]; NSLog(@" ...