负载均衡
[图]Apusic1.1 实现负载均衡 蓝森林 http://www.lslnet.com 2000年12月21日 21:40
第一节 负载均衡简介 一、 负载均衡的定义 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。
如果你发现你的Web站点负载量非常大时,应当考虑使用负载均衡技术来将负载平均分摊到多个内部服务器上。如果有多个服务器同时执行某一个任务时,这些服务器就构成一个集群(clustering)。使用集群技术可以用最少的投资获得接近于大型主机的性能。 三、 类型 目前比较常用的负载均衡技术主要有: 1. 基于DNS的负载均衡
2. 反向代理负载均衡
3. 基于NAT的负载均衡技术
一、 使用Apusic负载均衡器的系统结构 本文前面的插图是一个典型的使用Apusic负载均衡器的负载均衡服务集群的系统结构。 在这个系统中,我们可以看出,Apusic负载均衡器是用Apusic 1.1实现的,也就是说,负载均衡器和其他APUSIC服务器没有多少区别,不同的是它上面没有安装应用系统,并且使用不同的配置文件,它只是专门提供负载均衡服务。客户通过访问负载均衡器的Web服务,来访问整个集群的资源。真正存放Web应用的是服务器1和服务器2,当然还可以更多,只需要修改负载均衡器的配置文件即可添加和删除,也可以使用负载均衡器的配置工具,详细内容可参考第三小节"配置"。 用户请求达到负载均衡器后,负载均衡器将它分配到某个Apusic应用服务器上,让这个应用服务器为此用户提供服务。
负载均衡器和其他APUSIC服务器没有多少区别,不同的是它上面没有安装应用系统,并且使用不同的配置文件。因此它的安装方法和安装一个Apusic应用服务器是一样的,请参考第一章"Apusic Application Server 的安装配置"。
在APUSIC安装目录下找到文件config/loadbalancer.conf,它的内容一般是这样的: <CONFIG>
<SERVICE CLASS="com.apusic.logging.FileLogger" NAME="Logger:type=file,name=Log">
<SERVICE CLASS="com.apusic.servlet.http.loadbalancer.LoadBalancer">
<SERVICE CLASS="com.apusic.servlet.http.tcp.TCPEndpoint" NAME="Endpoint:type=tcp,service=LoadBalancer"/>
<SERVICE CLASS="com.apusic.servlet.http.ssl.SSLEndpoint" NAME="Endpoint:type=ssl,service=LoadBalancer"/>
</CONFIG> 大家可以和APUSIC应用服务器的配置文件config/apusic.conf比较一下,可以发现少了一些东西,但多了一个LoadBalancer服务。其中有一个重要的属性BackendServers定义了集群中的服务器,这是一个用逗号分隔的服务器地址列表,包括主机名和端口号,负载均衡器将根据这个列表采取循环或随机的策略来选择服务器。负载均衡器和内部服务器启动的先后次序无关紧要,负载均衡器将总是选择目前可用的内部服务器,并周期性地检测内部服务器是否正常工作。 当用这个配置文件启动APUSIC应用服务器时,这台服务器就成为一个负载均衡器。 另外,还可以使用负载均衡器的配置工具来增加、删除或修改它所管理的应用服务器。
启动命令行为: java com.apusic.server.Main -config config/loadbalancer.conf 由于剔除了EJB,JMS,JDBC等组件,负载均衡器有更多的资源来处理负载,将客户的请求转发到内部服务器上,并将内部服务器的回应转发给客户。另外,APUSIC负载均衡器还可以结合其他负载均衡技术,例如基于DNS和基于NAT的负载均衡。以DNS为例,你可以在集群系统中安装多个 负载均衡器,每个负载均衡器都和内部服务器有连接,并配置DNS,使所有的负载均衡器都映射到同一个域名,这样当用户使用域名访问系统时,DNS会首先将域名映射到其中一个负载均衡器的IP地址,用户将请求发到指定IP地址的负载均衡器上,而此负载均衡器再将请求转发到一个内部服务器上. 五、 对Apusic 应用服务器的要求 在使用负载均衡器之前,首先要在集群中所有的服务器上安装APUSIC应用服务器,安装方法和在单独一台服务器上安装是一样的,但注意在安装应用系统时要在所有服务器上都保持一致,如果有条件可以采用一个共享硬盘组。安装完成后启动服务器,并测试应用系统能否正常工作。如果只有一台机器,也可以测试APUSIC的集群功能,可以启动多个服务器进程,但它们的各种服务的侦听端口都不能有冲突。
利用Apusic 1.1建立的负载均衡集群有一个很重要的特点,APUSIC实现了分布式Session管理,这是实现Web服务器集群的关键,由于Web应用被分布到多台服务器上运行,因此保存在Session中的共享数据必须完全保持一致。APUSIC没有使用共享数据库来保存Session数据,虽然这种方式能保证Session数据的一致性,但由于Session的变化是很频繁的,对数据库将造成很大的压力,最终将成为整个系统的瓶颈。APUSIC使用一种分布式Session服务,每个服务器管理自己所产生的Session,当Web应用从一台服务器迁移到另一台服务器时,Session也会自动进行迁移,这样使得对Session的管理被均匀地分布到所有的服务器上,任何一台服务器失效并不会使Session丢失。对应用开发者来说,要保证分布式Session能够正常工作,在Session中只能保存实现了java.io.Serializable的数据,否则Session将无法完成迁移。 总之,如果你的Web应用中使用了session,它在Apusic负载均衡集群中不受任何影响,可以正常使用,同时,还能享受到Apusic负载均衡集群给您的应用带来的高度的安全和最大的速度。 摘自:http://www.apusic.com |