读书人

Apache amp; Tomcat集群配备

发布时间: 2012-10-25 10:58:57 作者: rapoo

Apache & Tomcat集群配置

1.??
概述

对于大型网站系统或者访问量较高的应用系统,多用户的并发访问常常会导致服务器的异常甚至不响应,一个web服务器往往无法满足所有的负载。解决这个问题的办法就是把负载分担在多个web服务器上,使系统稳定、快速的运行。均衡负载最常用的方式是集群(cluster),即把多个web服务器节点分布在一个或多个硬件服务器上,已达到分担处理请求的目的。

2.??
原理

对于以tomcat为application server的应用,常见的集群方式是web server(apache)调用连接器(如jk2),通过负载均衡(ajp13),把访问分发到各个tomcat节点,各个节点处理完访问后,把相应的response数据发送给web server,然后由web server把访问结果返回给浏览器(用户)。

Tomcat的集群主要包括三个部分:负载均衡、session同步、webApp(web资源)同步。

2.1.?????
负载均衡

负责request请求的自动分配,根据app server(tomcat)的负载来决定分配方式,常用apache的ajp13(属于tomcat的一个子项目)来处理。

2.2.?????
session同步

即Session
Replication,是集群面临最大的一个问题。

由于http协议的无状态性,对于用户识别以及信息保留一般都通过session来处理,所以各个cluster的节点必须保障session的一致性。同时session的同步还要考虑性能的问题(socket,IO etc…),tomcat中使用tomcat cluster子项目来实现session的同步(基于TCP/IP协议)。

对于超大型网站系统,基于性能方面的考虑,需要实现primary-secondary session replication,(prsp)即实现session的分级同步,减轻session复制对于访问相应的影响。Tomcat5.5以及以前版本没有实现对于prsp的支持,但据说会在下个版本实现。

2.3.?????
webApp同步

即webApp的自动分发。一次分发(deploy)/改动,各个cluster节点自动同步。

对于集群,各个cluster节点的文件资源(resource,包括程序、配置文件、页面、图片、用户上传资源文件等)必须保持一致。对于大型网站或高访问量的应用系统,这种同步必须在特别短的时间(小到可以被忽略)内、不对程序运行造成破坏的情况下进行,所以手工同步是不现实的。

Tomcat5.5以及以前的版本没有对此进行支持,需要自己来实现。

2.4.?????
图示

Apache & Tomcat集群配备

3.??
方案

由于tomcat的web server功能和性能的局限性,采取以下方案:

读书人网 >Apache

热点推荐