Apache+Tomcat部署负载均衡(或集群)
本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的。后来想了想,这样不便于没有用过Apache的朋友来学习本文内容。于是干脆加大篇幅,让对Apache不了解的朋友能对Apache有个初步的认识,阿帕奇。
如果对集群概念不了解,可以看一下之前写的一篇:WebLogic部署集群和代理服务器 这篇对集群的概念解释的比较细致,与weblogic集群的不同之处在于,它对各个子服务器上应用的部署,是由weblogic容器自动完成的。而tomcat则需要手动去拷贝项目。
一、负载均衡网络拓扑图。

一、Apache服务器的安装及配置。
1.先网上下载Apache服务器安装版,双击安装,直接下一步下一步不需要做任何配置。
2.安装好以后打开安装目录,找到conf目录打开

1.手动创建两个文件
mod_jk.conf
#================从这里复制================
#加载mod_jk Module 注意文件名根据实际情况而填
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so #指定 workers.properties文件路径
JkWorkersFile conf/workers.properties #指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /*.do controller
JkMount /*WEB-INF controller
JkMount /*j_spring_security_check controller
JkMount /*.action controller
JkMount /servlet/* controller
JkMount /*.jsp controller
JkMount /*.do controller
JkMount /*.action controller
JkMount /* controller
#================文件内容================
workers.properties #================从这里复制================
#server 列表
worker.list = controller,tomcat1,tomcat2 #========tomcat1========
worker.tomcat1.port=9101
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #========tomcat2========
worker.tomcat2.port=9102
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 #========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=0
#================到这里截止================
2.修改httpd.conf文件内容
打开httpd.conf文件,最后一行加上:Include conf/mod_jk.conf
Apache默认端口是80,如果需要改端口直接找到该文件下Listen 80字段,把这个80改掉就可以了。
3.添加mod_jk-1.2.31-httpd-2.2.3.so插件
下载mod_jk-1.2.31-httpd-2.2.3.so文件添加到modules文件夹下。这个so文件是配置负载均衡必须要用到的插件。
配到这里Apache这块就不用去动了。
三、Tomcat服务器的安装及配置。
1.下载tomcat后直接解压得到。

2.打开conf文件夹下的server.xml文件修改以下内容保证两台tomcat的相应端口不冲突:
第一处:port
<Server port="9011" shutdown="SHUTDOWN">
第二处:port、redirectPort 注意编码格式需设置成gbk,否则存在乱码问题
<Connector port="9001" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="9441"
URIEncoding="GBK"/>
第三处:port对应Apache配置文件中配置的port、redirectPort,注意编码
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
替换成:
<Connector port="9101" protocol="AJP/1.3" redirectPort="9441"
URIEncoding="GBK
minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000"
acceptCount="300" maxThreads="300" maxProcessors="1000" minProcessors="5"
useURIValidationHack="false" ompression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />
第四处:jvmRoute对应Apache配置文件中配置的tomcat名
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
第五处:只改蓝色标记的port
在<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">下面添加以下字段:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
bind="127.0.0.1"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4001"
selectorTimeout="100"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" timeout="60000"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
四、应用部署及运行
1.将项目拷贝到所有tomcat下的webapps文件夹下。
2.找到tomcat服务器bin目录下的startup.bat文件,双击启动tomcat
3.启动完所有tomcat之后启动Apache:直接点击图标启动

五、session复制
打开项目中WEB-INF文件夹下的web.xml文件,倒数第二行加入<distributable/>

五、测试页
创建以下文件放到项目中,用于测试负载均衡和session复制
文件名:Test.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body> <%
System.out.println("SessionID:" + session.getId());
%> Server Info: <%
out.println(request.getServerName() + " : " + request.getServerPort()+"<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.print("<b>Session 列表</b><br>");
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="test.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部署负载均衡(或集群),如果有在同一台电脑上部署多组集群的需求的话,还需要在配置上做一些改动。可以参考我的另一篇文章:同台电脑部署多组Tomcat负载均衡(或集群)
Apache+Tomcat部署负载均衡(或集群)的更多相关文章
- Apache +Tomcat的负载均衡与集群配置
实验拓扑图: 一.搭配环境 (1).Tomcat的安装和配置 Tomcat_a的ip:192.168.55.229 Tomcat_b的ip:192.168.55.231 Tomcat的需要安装jdk和 ...
- 基于Apache的Tomcat负载均衡和集群(2)
反向代理负载均衡 (Apache+JK+Tomcat) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的.这种代理方式 ...
- apache的tomcat负载均衡和集群配置 "
略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务 ...
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
Apache配置负载均衡和集群使用mod_jk的方式比较多,但是mod_jk已经停止更新,并且配置相对复杂.Apache2.2以后,提供了一种原生的方式配置负载均衡和集群,比mod_jk简单很多. 1 ...
- 基于nginx的tomcat负载均衡和集群
要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...
- 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)
1.熟悉几个组件 1.1.apache —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...
- Dubbo负载均衡与集群容错机制
1 Dubbo简介 Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. 作为一个轻量级RPC框架,D ...
- apache+tomcat配置负载均衡,实现http与websocket接口分压
一.应用场景 在生产环境中,应用服务器(此文以tomcat为例)不免面临高访问量的压力,相比而言web服务器(此文以apache为例)能够承担更大的并发量.Apache本身带有一些模块,可以完成对应用 ...
- apache + tomcat 负载均衡分布式集群配置
Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...
随机推荐
- fedora 18 源码编译 android 4.0.1
1.编译环境: 系统:fedora 18 KED 桌面 (Fedora-18-i686-Live-KDE.iso) 处理器:酷睿i5双核 内存: 4GB 硬盘:46GB java版本:java ve ...
- Java发展的时间表
Java发展的时间表. (版本号 名称 中文名 发布日期) JDK 1.1.4 Sparkler 宝石 1997-09-12 JDK 1.1.5 Pumpkin 南瓜 1997-12-13 JDK 1 ...
- [置顶] github简单使用
git的介绍可以看这里 http://zh.wikipedia.org/wiki/GitHub 安装和使用参考的这个 http://www.cnblogs.com/cocowool/arch ...
- HDOJ/HDU 2717 Catch That Cow 一维广度优先搜索 so easy..............
看题:http://acm.hdu.edu.cn/showproblem.php?pid=2717 思路:相当于每次有三个方向,加1,减1,乘2,要注意边界条件,减1不能小于0,乘2不能超过最大值. ...
- C语言笔记之结构体
结构的本质是C语言的一种数据抽象,通俗的说,是基本数据类型的重组. 为什么要重组呢?由于基本数据类型不够用了.为什么不够用了呢?由于须要的信息类型太多了. 这是一个非常大的话题.信息本来是没有什么类型 ...
- Fitnesse使用系列二
决策表 Fitnesse中提供了好几种表格样式,前面说了.表格是运行測试的关键.从字面看.表格描写叙述的是測试用例.从运行角度看,表格为后端的代码(fitnesse里称作fixture)提供了包名.类 ...
- HTML5系列之——applicationCache对象
ApplicationCache主要简单介绍: applicationCache对象实现HTML5相应WEB离线功能.以下我们来主要解说applicationCache对象的一些主要功能和方法 app ...
- oracle 之 内存—鞭辟近里(一)
oracle 之 内存—鞭辟近里(一) 今天是2013-07-8日,这几天一直都在寻找一本深入研究oracle内存的书籍,期间一波三折弄的自己神魂颠倒,但是还是被我拿下了,感谢支持我的朋友,这周打算把 ...
- 浅谈Storm流式处理框架(转)
Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据.但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂. 有需求也就有创造,在Hadoop基本奠定了大数据霸 ...
- 10招让你成为杰出的Java程序员(转)
如果你是一个热衷于技术的 Java 程序员, 那么下面的 10 个要点可以让你在众多 Java 开发人员中脱颖而出. 1. 拥有扎实的基础和深刻理解 OO 原则 对于 Java 程序员,深刻理解 Ob ...