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日]
分享到:
相关推荐
该文档简单描述了RHEL上Apache 和 Tomcat群集配置过程 适用于所有开发服务部署人员
Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程
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负载...
Apache+tomcat群集下session的复制.doc,Apache+Tomcat群集既可两台机器上实施,又可在同一台机器上实施.
集群配置; 压缩包内置: 1、apache 相关安装包 2、tomcat 相关安装包 3、集群环境搭建文档
在Linux中用Apache+Tomcat+JK实现负载均衡和群集的完整过程,亲测OK。
我们来开始配置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> ...
随着IT行业的发展,linux服务器在企业中应用广泛,人们对linux上的应用服务要求也越来越高,早先的apache服务器、apache有优点也 有不足,apache渐渐不能满足人们的要求,目前nginx被大量采用做高性能web服务器,...
windowXP下搭建nginx-1.7.10和apache-tomcat-8.0.18的集群 已经配置好,下载后直接启动三个tomcat和nginx,然后访问http://localhost/即可。
它将会话存储到Redis中,以便在Tomcat服务器群集之间轻松分配HTTP请求。 在这里,会话被实现为非粘性的(意味着,每个请求都可以转到集群中的任何服务器,这与Apache提供的Tomcat集群设置不同。) 请求会话将立即...
Tomcat-Redis-Cluster-Enabled-Session-Manager Redis会话管理器是可插入的。 它用于将会话存储到Redis中,以便在Tomcat服务器... Apache Tomcat 7 资料下载: 启用了Tomcat Redis群集的会话管理器可用 前提条件: j
Tomcat群集,提供故障转移群集,负载平衡群集,tomcat群集。 包括apache和tomcat Web服务器。 需要复制并在服务器上运行。
集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序...
Apache Tomcat服务器(8.0或更高版本)。 Jedis(支持Redis 3.0.0或更高版本)。 具有WebSocket支持的浏览器。 ##安装## 将jedis.jar (尝试jedis.jar编译)添加到WebContent/WEB-INF/lib折叠中,或简单地...
测试的时候请放在tomcat的webapps目录内。启动tomcat后会自动部署。访问的时在浏览器输入http://127.0.0.1:8080/TestProject/showInfo.do即可访问。页面会显示网站当前部署的物理目录以及当前的SessionID。
不过Tomcat协作jboss和apache可以实现j2ee应用服务器功能 一般来说考虑stucts等架构tomcat就可以了,但假如考虑EJB的话,WebLogic是比较好的选择。 扩展性: 用WebLogic运行标准的java可能并不是最好的方式,...
零件无限MRP微服务 Parts Unlimited MRP Microservices是一个虚构的外包制造资源计划(MRP)应用程序,用于培训目的,基于Gene Kim,Kevin Behr和George Spafford撰写的...前端服务-运行Apache Tomcat,并使用Hyst