服务器负载均衡算法有很多(持续性的和非持续性的),包括轮循算法、最少连接算法、响应时间算法、散列算法、最少连接失误算法,链路带宽算法等等。此外实际服务器(Real Server)可以被分配不同的加权值来调整被分配的流量。比如性能高的大型服务器可配置较大的加权值,而为性能较低的小型服务器设置较小的加权值。为了避免服务器因过载而崩溃,可为实际服务器指定最大连接阈值来避免该服务器过载。任何服务器可被指定为另一台服务器的备份服务器或溢出服务器,从而进一步保证了应用可用性。
非持续性算法(Non-Persistent):
一个客户端的不同的请求可能被分配到一个实际服务组中的不同的实服务器上进行处理。主要有轮循算法、最少连接算法、响应速度算法等。
-轮循算法(Round Robin):
说明:
每一次来自网络的请求轮流分配给内部中的每台服务器,从1至N然后重新开始。
举例:
此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且
平均服务请求相对均衡的情况;
-最少连接算法(Least Connection):
说明:
客户端的每一次请求服务在服务器停留的时间都可能会有较大的差异,随着工作时间的加长,如果采用简单的轮循或随机均衡算法,每一台服务器上的连接进程可能会产生极大的不同,这样的结果并不会达到真正的负载均衡。最少连接数均衡算法对内部中有负载的每一台服务器都有一个数据记录,记录的内容是当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。
举例:此种均衡算法适合长时间处理的请求服务。
-响应速度算法(Response Time):
说明:
负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。
举例:
此种均衡算法能较好地反映服务器的当前运行状态,但最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。
持续性算法(Persistent):
从一个特定的客户端发出的请求都被分配到一个实服务组中的同一个实服务器上进行处理。主要包括:
A.基于IP的算法
-Persistent IP (pi):基于用户IP地址来选择服务器。
-Hash IP (hi) :基于用户IP地址的HASH值,来选择服务器
-Consistent Hash IP (chi):
B.基于报头/请求的算法
-Hash Header (hh):基于用户请求报中HTTP报头来选择服务器;
-Persistent Hostname (ph) :基于用户请求报中HTTP报头的Hostname的HASH值,来选择服务器;
-Persistent URL (pu):基于对URI Tag 和值的静态对应关系来选择服务器。
-SSL Session ID (sslsid):基于SSL会话ID来选择服务器。
C.基于Cookie的算法
-Persistent Cookie (pc) : 选择服务器基于用户请求包用Cookie Name / Value 的静态对应关系;
-Hash Cookie (hc) :选择服务器基于用户请求包用Cookie Name / Value 的Hash 值对应关系;
-Insert Cookie (ic) :选择服务器基于负载均衡器 向服务器响应包中插入Cookie;
-Re-write Cookie (rc):选择服务器基于负载均衡器向服务器响应包中重写Cookie值。(必须为重写指定Cookie值的偏移量
|
J2EE应用服务器
J2EE是一个利用JAVA技术开发和部署企业应用的开放架构。这个架构下,企业应用开发者可以自由选择其应用驻留的应用服务器。目前,比较流行的J2EE应用服务器主要有BEA公司的WebLogic、IBM公司的Websphere和Oracle公司的iAS。
WebLogic是BEA公司的J2EE应用服务器,WebLogic集群技术可以通过一组服务器共同工作,在多台机器间复制应用表示层和应用逻辑层,实现关键业务系统的负载分布。WebLogic把负载按一定策略分配到集群中所有的服务实例,从而使每个服务实例都能充分发挥能力,这可以通过其提供的WLS Proxy Plug-in或者单独的负载均衡硬件来实现。注意:WebLogic可以复制HttpSession对象和有状态的会话EJB,但由于WebLogic对于Session状态的处理采用横向镜像存储方式,因此建议使用WebLogic负载均衡时,不要同时使用硬件负载均衡。
Websphere是IBM公司的J2EE应用服务器,利用多台Websphere应用服务器可以构成高扩展性服务器集群,对于发向Websphere服务器集群的客户端请求,Websphere可以实现动态的负载均衡。由于Websphere中对于Session状态的处理采用纵向共享存储方式,因此采用硬件负载均衡时,Websphere集群超过两节点也可以正确工作。
IAS是Oracle公司基于J2EE标准的应用服务器,用来开发、部署和管理互联网应用。IAS的负载均衡实质上是指如何能够跨单个CPU或多个CPU中的多个Oracle9iAS实例分布来自客户机的请求。IAS可以提供HTTP服务器上的负载均衡和J2EE容器中的负载均衡(Servlet和EJB容器实例使用多种负载均衡算法对请求进行负载均衡,并且提供了适用于RMI和SOAP请求的负载均衡增强功能),最后IAS还可以与第三方负载均衡产品(如Big-IP和Alteon)结合提供适用于非会话状态和会话状态的负载均衡。
总之,WebLogic、Websphere和Oracle iAS都提供了负载均衡技术,能够很好的实现负载均衡和故障迁移功能,可以把多台机器联合起来形成一个庞大稳固的企业应用。