第一节 负载均衡简介
一、负载均衡的定义
负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。
二、负载均衡的作用
如果你发现你的Web站点负载量非常大时,应当考虑使用负载均衡技术来将负载平均分摊到多个内部服务器上。如果有多个服务器同时执行某一个任务时,这些服务器就构成一个集群(clustering)。使用集群技术可以用最少的投资获得接近于大型主机的性能。
三、类型
目前比较常用的负载均衡技术主要有:
1. 基于DNS的负载均衡
通过DNS服务中的随机名字解析来实现负载均衡,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们也就访问不同地址上的Web服务器,从而达到负载均衡的目的。
2. 反向代理负载均衡
使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的。这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。Apusic负载均衡器就属于这种类型的。
3. 基于NAT的负载均衡技术
网络地址转换为在内部地址和外部地址之间进行转换,以便具备内部地址的计算机能访问外部网络,而当外部网络中的计算机访问地址转换网关拥有的某一外部地址时,地址转换网关能将其转发到一个映射的内部地址上。因此如果地址转换网关能将每个连接均匀转换为不同的内部服务器地址,此后外部网络中的计算机就各自与自己转换得到的地址上服务器进行通信,从而达到负载分担的目的。
第二节 Apusic负载均衡器的安装使用
一、使用Apusic负载均衡器的系统结构
本文前面的插图是一个典型的使用Apusic负载均衡器的负载均衡服务集群的系统结构。
在这个系统中,我们可以看出,Apusic负载均衡器是用Apusic 1.1实现的,也就是说,负载均衡器和其他APUSIC服务器没有多少区别,不同的是它上面没有安装应用系统,并且使用不同的配置文件,它只是专门提供负载均衡服务。客户通过访问负载均衡器的Web服务,来访问整个集群的资源。真正存放Web应用的是服务器1和服务器2,当然还可以更多,只需要修改负载均衡器的配置文件即可添加和删除,也可以使用负载均衡器的配置工具,详细内容可参考第三小节"配置"。
用户请求达到负载均衡器后,负载均衡器将它分配到某个Apusic应用服务器上,让这个应用服务器为此用户提供服务。
二、安装
负载均衡器和其他APUSIC服务器没有多少区别,不同的是它上面没有安装应用系统,并且使用不同的配置文件。因此它的安装方法和安装一个Apusic应用服务器是一样的,请参考第一章"Apusic Application Server 的安装配置"。
三、配置
在APUSIC安装目录下找到文件config/loadbalancer.conf,它的内容一般是这样的:
第三节 在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负载均衡集群给您的应用带来的高度的安全和最大的速度。