基于透明机制的分布式服务器负载均衡的研究
摘要:本文探讨了分布式网络服务器的负载均衡技术,以解决intornet服务器面临的大量并发访问造成的cpui0的高负载问题。
关键词:分布式服务器;透明性;地址解析
中图分类号tp316.8 文献标识码a 文章编号1674-6708(2010)29-0198-02
o、引 言
随着internet用户的快速增长,网络服务器面对的访问数量快速增加.尤其是网络请求具有突发性,从而造成网络瓶颈,必须采用多服务器和负载均衡技术才能满足访问的需要。
负载均衡是分布式集系统中重要技术。本文提出一种针对分布式集系统中服务器透明性的实现机制。
1、体系结构
本文从硬件组织的角度说,分布式计算集中的节点都是非共享内存的计算机。其内部组成结构对外界用户是透明的,当网络上的客户想访问服务器系统时,需要对服务器端的地址进行相应的处理,使客户端相信它们与一个ip地址通信,从而保证系统的透明性。
2、透明性的实现
负载均衡器的作用分布式并行服务器在网络中只占用一个ip地址和一个mac地址。本文在设计中修改了服务器内各结点的地址解析协议arp,使得整个服务器系统对外界表现为惟一的虚拟ip地址vip和虚拟mac地址vmac
2.1 服务器结点的地址解析协议
arp地址解析协议为ip地址到对应的硬件地址之间提供一种动态映射。arp协议主要负责将局域网中的32ip地址转换为对应的48位物理地址,即网卡的mac地址。要实现虚拟ip地址和虚拟mac地址,需要修改服务器结点的arp请求和应答消息。arp请求和应答消息修改后规则如下:
1)每台主机都会在自己的arp缓冲区;
2)当服务器结点收到arp请求,且此请求询问的ip地址是vip时,服务器结点则返回填充了vip地址和vmac地址的arp应答;
3)当服务器结点收到的arp请求是由服务器组中别的服务结点发出的时候,则返回填充真实ip地址和真实mac地址的arp应答。
2.2 客户端到服务器的请求处理
当服务器端运行修改后的arp协议时,客户端或路由器的arp缓存中就增加有关于服务器vipvmac的映射项。相应的数据包最终会发到vmac地址上,而服务器系统中的所有服务器结点都具有同一个vmac地址,故在服务器各结点内部必须对数据包进行一定的处理,才能实现真正的数据交换。服务器结点对网卡接收数据帧的具体的处理规则如下:
1)客户端向集发起请求,以一个syn报文开始,该请求发送到负载均衡器的客户端口。负载均衡器回应一个对应的ack到客户端口。当客户端收到集的正确应答数据后,此时,客户端和负载均衡器建立了连接。开始数据通信;
2)由负载均衡器中的调度模块选择实际的服务器后,负载均衡器以客户端的身份与实际服务
器进行三次握手;
3)在客户端的角度看,连接请求被隐蔽的延迟了,服务器响应数据请求,由负载均衡器的客户端监听口转发到客户端。
负载均衡器在客户端和服务器之间扮演了一个透明网关的角。
3、调度算法
目前最常用的负载均衡调度算法是权重最少连接法。此算法在计算负载指标时,只考虑各个服务器当前所连接的请求数,没有考虑到不同类型的请求所耗用的服务器资源和网络带宽不同。
改进后的任务分配算法给不同类型的服务请求赋予不同的比例系数,更合理地计算出当前实际服务器的负载指标,实现更有效的负载均衡。当任务分配服务器分配任务时,选择集系统中当前负载指标与权重比最少的服务器。4性能测试与分析
为了测试改进的算法对集系统效率和性能的影响,我们设计了测试实例,对集系统进行了性能以及压力测试。
4.1 测试环境
服务器1和服务器2为两台赛扬900mhz cpu256m内存机器,服务器3和服务器4为两台奔腾4512m内存机器,rtl 8139 100m网卡;网络互连使用100m共享式hub;操作系统为freebsdweb服务器为apache。测试的集系统配置如表1
4.2 测试概述与分析
在客户端,不断生成向集系统发出的用户请求,为了简化测试实例,这里仅检测htfp请求。测试工具使用loadrunner78中文版,模拟多客户向集系统发送htrp请求。
我们构造了一个服务类型数的数据结构和一个服务类型比例系数的数据结构,分别记录当前实际服务器的种类型服务请求数和各种类型服务请求的比例系数。
服务类型数的数据结构:
struct ip lvs_server number
实际连接数
real 1n
服务数
real ran
};
服务类型比例数的数据结构:
struct ip_lvs_server_propordon
实际连接的比例系数
im prop_l
服务的比例系数
int prop m
}
因此,负载指标计算公式为:
load=ln*pmp-l+mn*prop m[11]
实验测试结果一如表2示,a[l0]为客户端发出10http请求;a[100]为客户端发出100http请求;a[1000]为客户端发出1000htrp请求。t1为未使用负载均衡调度算法的平均响应时间,他为使用负载均衡调度算法的平均响应时间。实验测试结果二如表3所示,s1s2s3s4分别为不同配置的4台服务器所处理的http请求数。
可见,使用改进后的任务分配算法能将耗用资源较多的请求更合理地分配到各台服务器上,这说明负载均衡调度算法起了很大的作用,集系统性能有了显著的提高。
5、结 论
本文利用修改地址解析协议的方法给出了基于透明机制的负载均衡模型。并使用权重最少连接调度算法进行了性能分析,得到一些对实际系统设计起到指导作用的结论。