Tomcat集及负载均衡配置
在单一的服务器上执行Web应用程序有一些重大问题,当网站的请求量越来越大,单一服务器终究无法满足需要处理的负荷量,所以就显得有点力不从心;而且还存在的问题是会产生单点故障,如果该服务器宕掉,那么网站就无法运作。不论是因为要有较佳的扩充性还是容错能力,我们都会想在一台以上的服务器上执行Web应用程序。所以,这时候我们就需要用到集这一门技术。
1 术语介绍
1.1 集
集是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来,一个集就像是一个服务实体,但事实上集由一组服务实体组成。与单一服务实体相比较,集提供了以下两个关键特性:
可扩展性--集的性能不限于单一的服务实体,新的服务实体可以动态地加入到集,从而增强集的性能。
高可用性--集通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。
1.2 负载均衡
负载的基础是集,集就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同的硬件构成的计算机。如一个提供Web服务的集,对外界看来是一个大Web服务器。负载均即把负载压力根据某种算法合理分配到集中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
2 常用负载均衡技术
常用手负载均衡技术有以下几种
HTTP重定向
DNS负载均衡
反向代理负载均衡
IP负载均衡(NAT)
直接路由
IP隧道
本文介绍的是第三种使用apahce+tomcat的反向代理的负载均衡,使用代理服务器可以将请求转发全内部的Web服务器,让代理服务器均匀地转发给多台内部web服务器之一上,从而达到负载均衡目的。这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。
在负载均衡中Session共享有两种模式:session复制和粘性session。下面对这两种模式进行介绍。
1) Session复制:在所有的Tomcat实例中都保有一份会话状态数据。当一个Tomcat实例宕
掉时,由于至少还有另一个Tomcat实例保有一份会话状态数据,因为数据不会丧失。但性能会有所降低。
2) 粘性Session:粘性session表示来自同session的所有请求都由相同的Tomcat实例来处理,这种情况下,如果Tomcat实例或所执行的服务器机器失效,也会丧失session数据(即等同于被迫于注销)。即使在集系统中还有其他Tomcat实例存活,也不会复制会话数据。这样可以提高集性能的一种方案,但不具备容错能力。
本文采用粘性session方式。
3 集架构图
图31集架构图
4 配置环境
Apache Http server 2.2.16
Tomcat 5.5.26(Tomcat6也一样)
JDK 1.6.21
各tomcat实例需在同一网段下
各tomcat实例的服务器时间一致
所有的session attributes必须实例java.io.Serializable接口
5 配置过程
5.1 Apache配置
1. 在代理服务器上安装Apache Http Server 2.2版本。
2. 修改Apache配置文件\Apache2.2\fTomcat配置,注释掉以下内容:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
tomcat虚拟主机怎么设置
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
3. 到<IfModule dir_module></IfModule>加上index.jsp
<IfModuledir_module>
DirectoryIndex index.html index.jsp
</IfModule>
4. 在文件的最下面加入
ProxyRequests Off
5. 设置apache2.2的虚拟主机,先在f中引入配置虚拟主机的控制文件,将配置文件中默认的配置信息放开即可。
# Virtual hosts 
Include conf/f
6.
<VirtualHost *:80>
ServerAdmin huqiwen@pisoft 
ServerNamelocalhost
ServerAliaslocalhost 10.180.85.55   
ProxyPass/ balancer://cluster/ lbmethod=byrequestsstickysession=JSESSIONID nofailover=Off 
ProxyPassReverse / balancer://cluster/   
<proxy balancer://cluster>
        BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 
        BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=jvm2
</proxy>
</VirtualHost>
修改conf/f文件,在最下面加入虚拟主机的配置信息

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。