Apache + Tomcat 的群集配置
(文档编写: 刁超雄 2007-9-5)
使用群集和负载均衡的整体架构如下:
(图片来自:onjava.com)
中间由一台服务器做负载均衡(Load Balancer),它将所有请求,根据一定的负载均衡规则发送给指定的群集服务器(Cluster),群集服务器拥有着相同的状态和相同的应用程序,并且他们的Session是相互复制的,这样,不管访问哪台服务器都具有相同的结果,即使一台服务器崩溃掉以后,可以由其他集群服务器继续负责应用程序的运行。
Tomcat中如何配置群集,我们假设有如下场景,一台负载均衡服务器负责请求的均衡,群集服务器A和群集服务器B组成一个群集,当某个群集服务器崩溃后,另外一台继续负责应用程序的运行。
一.配置Tomcat5.5.12群集服务器A
修改Tomcat配置文件server.xml
1.群集服务器A的端口号与B不冲突,即使Server Port,Connector,Coyote/JK2 AJP Connector的端口号唯一
2.在Host元素下增加以下内容:
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessi
useDirtyFlag="true"
notifyListeners>
<!--每个群集服务器都需要有相同的Membership配置. 一个广播地址决定一个Tomcat 群集,群集中的Tomcat服务器必须能从同一个广播地址中接收广播信息-->
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<!--tcpListenAddress:本机IP地址服务器将此地址广播给其他群集服务器-->
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="10.1.2.161"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicati
ackTimeout="15000"
waitForAck="true"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
</Cluster>
3.修改Web应用程序配置文件web.xml
在web.xml文件中<web-app>元素下增加以下内容:
<!--此应用将与群集服务器复制Session-->
<distributable/>
二. 配置Tomcat5.5.12群集服务器B
与群集服务器A配置基本相同,唯一不同的地方就是server.xml文件中
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="10.10.13.145"
tcpListenPort="4002"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
tcpListenAddress应为本机地址,如果两台群集服务器在一台机器上,则端口号要不同
注意:B的其他端口不要与A冲突。
三. 群集服务器具体配置结果
Mcast*用于广播,所有群集服务器需要填写相同的配置
tcpListen*本机的IP,群集服务器启动时,会将自己的IP和端口号广播出去,其他群集服务器收到后,响应广播发出者。
四.测试群集
启动群集服务器A,再启动群集服务器B会显示群集服务器的信息,表示群集服务器配置成功
五. 配置负载均衡服务器Apache2.2.3
现在虽然群集已经有了相同的状态,但需要不同的IP地址才能访问到服务器A与B,现在我们配置一台负载均衡服务器来实现统一的入口访问,和负载的均衡。
下载Apache服务器2.2.4 ( http://httpd.apache.org/download.cgi )
{可以参考文档 http://lamp.linux.gov.cn/Apache/ApacheMenu/index.html
对apache服务器安装和配置}
修改conf/httpd.conf文件
将以下Module的注释去掉
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
并增加以下元素
ProxyRequests Off
ProxyPass /helloworld balancer://mycluster stickysession=jsessionid nofailover=On
<Proxy balancer://mycluster>
BalancerMember http://10.10.13.145:9080/helloworld
BalancerMember http://10.10.13.145:10080/helloworld smax=1 loadfactor=20
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
</Location>
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
</Location>
其中
ProxyPass /helloworld balancer://mycluster stickysession=jsessionid nofailover=On
<Proxy balancer://mycluster>
BalancerMember http://10.10.13.145:9080/helloworld
BalancerMember http://10.10.13.145:10080/helloworld smax=1 loadfactor=20
</Proxy>
ProxyPass为代理转发的Url,即将所有访问/helloworld的请求转发到群集balancer://mycluster
BalancerMember为群集的成员,即群集服务器A或B,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember。
(可以同时配置几个站点)
配置好后,启动Apahce服务器,访问localhost/hellworld就会看到群集服务器中应用返回的结果。恭喜你,负载均衡和群集已经配置成功了。
-à 如果Apache 无法启动,或许可以通过设置尝试解决:
1.网上邻居 >> 本地连接 >>属性 >> internet协议(TCP/IP) >> 属性 >> 高级 >> wins标签 >> 去掉启用LMhosts查询前的勾.
参考: Apache Cluster配置文件httpd.conf
…….
……
LoadModule proxy_module modules/mod_proxy.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_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule rewrite_module modules/mod_rewrite.so
ProxyRequests Off
#设定第一个域名的群集
ProxyPass /NewWebDesign balancer://mycluster stickysession=jsessionid nofailover=On
<Proxy balancer://mycluster>
BalancerMember http://10.1.2.193:8088/NewWebDesign
#BalancerMember http://10.1.2.117:8088/NewWebDesign
BalancerMember http://10.1.2.161:8080/NewWebDesign
BalancerMember http://10.1.2.161:8088/NewWebDesign smax=1 loadfactor=20
</Proxy>
#设定第二个域名的群集
ProxyPass /students balancer://studentscluster stickysession=jsessionid nofailover=On
<Proxy balancer://studentscluster>
BalancerMember http://10.1.2.193:8088/students
#BalancerMember http://10.1.2.117:8088/students
BalancerMember http://10.1.2.161:8080/students
BalancerMember http://10.1.2.161:8088/students smax=1 loadfactor=20
</Proxy>
#设定第三个域名的群集
ProxyPass /gwt balancer://gwtcluster stickysession=jsessionid nofailover=On
<Proxy balancer://gwtcluster>
BalancerMember http://10.1.2.193:8088/gwt
#BalancerMember http://10.1.2.117:8088/gwt
BalancerMember http://10.1.2.161:8080/gwt
BalancerMember http://10.1.2.161:8088/gwt smax=10 loadfactor=20
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
</Location>
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
</Location>
.
……
……
其他相关的参考文档:
群集技术
就像冗余部件可以使你免于硬件故障一样,群集技术则可以使你免于整个
系统的瘫痪以及操作系统和应用层次的故障。一台服务器集群包含多台拥有共享数
据存储空间的服务器,各服务器之间通过内部局域网进行互相连接;当其中一台服
务器发生故障时,它所运行的应用程序将与之相连的服务器自动接管;在大多数情
况下,集群中所有的计算机都拥有一个共同的名称,集群系统内任意一台服务器都
可被所有的网络用户所使用。一般而言,群集和高可用性结合的服务器可将运行提
升至99.99%。群集技术不仅仅能够提供更长的运行时间,它在尽可能地减少与既定
停机有关的停机时间方面同样有着重要意义。例如,如果使用群集,你可以在关闭
一台服务器的同时,不用与用户断开即可进行应用,硬件,操作系统的"流动升级
"。集群系统通过功能整合和故障过渡技术实现系统的高可用性和高可靠性,集群
技术还能够提供相对低廉的总体拥有成本和强大灵活的系统扩充能力。
http://www.360doc.com/showWeb/0/0/305047.aspx
Apache2.2+Tomcat5.5负载均衡+集群配置
http://www.360doc.com/showWeb/0/0/207324.aspx
Clustering and Load Balancing in Tomcat 5, Part 1
http://www.onjava.com/pub/a/onjava/2004/04/14/clustering.html?page=1
Clustering and Load Balancing in Tomcat 5, Part 2
http://www.360doc.com/showWeb/0/0/207707.aspx
Tomcat群集配置
http://lamp.linux.gov.cn/Apache/ApacheMenu/index.html
Apache HTTP Server Version 2.2 文档 [最后更新:2007年2月5日]
分享到:
相关推荐
为了配置Apache和Tomcat群集,你至少需要一台开发服务器。实际生产环境中,可能需要多台服务器以实现真正的群集效果。 **3 软件环境** - **操作系统**: Red Hat Enterprise Linux Server 5.4 - **远程终端工具**: ...
### Apache+Tomcat+Linux集群和负载均衡 在IT领域,Apache+Tomcat+Linux集群与负载均衡技术是实现高可用性、高性能Web服务的重要手段之一。本文将围绕这一主题展开详细讨论,涵盖关键技术概念、配置流程及注意事项...
Apache作为前端Web服务器,负责接收用户请求并根据配置策略将请求转发给后端的多个Tomcat实例,而JK模块是Apache与Tomcat之间的连接器,负责处理两者之间的通信。 首先,Apache服务器是开源的HTTP服务器,它的功能...
### Atang群集软件与Tomcat Linux配置实例详解 #### 引言 在现代IT环境中,高可用性和负载均衡是确保应用程序稳定运行的关键因素。Atang群集软件结合Tomcat服务器在Linux平台上的配置,是一种常见且高效的方法,...
Apache代理tomcat群集 1. 安装配置apr和 apr-util文件 这两个开发包最好到相应apache的镜像站目录去下载。http://apache.dataguru.cn/apr/ 安装编译apache的开发包arp和apr-util,记得在安装的时候要指定路径,因为...
Apache+Tomcat+Session+Memcache 高性能群集搭建 J2EE性能调优 Jboss的优化配置 Memcached分布式缓存 Nginx+Tomcat 动静分离 Nginx+tomcat集群Memcached+Session复制 高性能高并发服务器架构 基于nginx的tomcat负载...
4. 配置mod_jk:将mod_jk模块添加到Apache中,编辑mod_jk.conf配置文件,指定Tomcat实例的位置。 5. 设置负载均衡:在mod_jk.conf中定义worker节点,根据需求设置负载策略,如轮询、最少连接等。 6. 启动和测试:...
FineReport 群集配置方案是基于 Linux 平台使用 Apache+Tomcat+JK 实现负载均衡和群集的完整过程。这篇文章将详细介绍从编译、部署到配置的整个过程,并解决了在实现过程中遇到的问题。 Apache 服务器是在 Linux ...
本手册详细介绍了在Windows 2008操作系统上配置NLB(网络负载均衡)、Apache 2.2和Tomcat 5的集群环境的步骤和要点。以下是根据手册内容整理出的详细知识点: 1. 环境准备:需要有两台安装Windows 2008 R2操作系统...
【Nginx+Tomcat+Session 高性能群集搭建】是现代Web服务架构中常见的一种方式,尤其在处理高并发、大流量场景时。Nginx以其高性能、轻量级和反向代理能力而备受青睐,而Tomcat作为Java应用服务器,常用于运行Java ...
Apache+tomcat群集下session的复制.doc,Apache+Tomcat群集既可两台机器上实施,又可在同一台机器上实施.
综上,Apache、Tomcat和Linux的联合优化涉及多个层面,需要综合考虑服务器硬件、应用特性、系统配置等多个因素,通过细致的调整和持续的监控,才能确保服务器达到最佳运行状态。同时,定期的性能测试和维护也是保持...
我们来开始配置Tomcat群集吧! 系统环境 操作系统 :WindowsXP Java运行环境 :JDK1.5 Tomcat服务器 :Tomcat5.5 Apache服务器 :Apache2.2 开始配置: 1、我们先以普通的方式配置tomcat1、tomcat2 {配置Java...
我们来开始配置Tomcat群集吧! 系统环境 操作系统 :WindowsXP Java运行环境 :JDK1.5 Tomcat服务器 :Tomcat5.5 Apache服务器 :Apache2.2 开始配置: 1、我们先以普通的方式配置tomcat1、tomcat2 {配置Java...
我的博客:hi.baidu.com/fgfd0<br><br>我们来开始配置Tomcat群集吧! <br>系统环境 <br>操作系统 :WindowsXP <br>Java运行环境 :JDK1.5 Tomcat服务器 :Tomcat5.5 Apache服务器 :Apache2.2 <br> ...
标题中的“tomcat7+apache...综上所述,这个压缩包文件的内容涵盖了从基础的Apache和Tomcat安装,到复杂的集群配置、负载均衡和高并发优化等多个层面的知识,对于理解和实施基于Apache和Tomcat的集群环境非常有帮助。
以上就是使用Apache和Tomcat实现负载均衡的基本步骤和一些高级配置。对于初学者,通过提供的配置截图和案例,可以逐步理解和实践这些概念,从而掌握Web服务器的负载均衡技术。记住,实践是检验理论的最好方式,所以...
windowXP下搭建nginx-1.7.10和apache-tomcat-8.0.18的集群 已经配置好,下载后直接启动三个tomcat和nginx,然后访问http://localhost/即可。