行业资讯

  • 首页
  • 新闻中心
  • 行业资讯

实现多服务器负载均衡得使用网络地址转换-宇众网络


2021年01月11日

很早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址
,从而使得不同的客户访问不同的服务器,达到负载均衡的目的[1]。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务
器的差异,也不能反映服务器的当前运行状态。 

反向代理服务器可以将请求转发给内部Web服务器,如果代理服务器能够将请求均匀转发给多台内部服务器,就能达到负载均衡的
目的[2]。反向代理方式下能应用优化的负载均衡策略,每次访问很空闲的内部服务器来提供服务。但是随着并发连接数量的增家,
代理服务器本身的负载也变得非常大,很后反向代理服务器本身会成为服务的瓶颈。 
支持负载均衡的地址转换网关中可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,
达到负载均衡的目的[3]。很多硬件厂商将这种技术集成在他们的交换机中,作为他们第四层交换的一种功能来实现,一般采用随
机选择、根据服务器的连接数量或者响应时间进行选择的负载均衡策略来分配负载。然而硬件实现的负载控制器灵活性不强,不能
支持更优化的负载均衡策略和更复杂的应用协议。 
除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,但它依赖于特定协
议,因此使用范围有限。根据现有的这些负载均衡技术,我们选择了使用软件方式实现网络地址转换的负载均衡的方式,以弥补硬
件负载均衡器的不灵活,并应用优化的均衡策略来实现后端服务器负载分担的很优状态。 

2. 负载均衡策略 
为了将负载均匀的分配给内部的多个服务器上,就需求应用一定的负载均衡策略。传统的负载均衡策略并没有考虑到服务请求的不
同类型、后台服务器的不同能力以及随机选择造成的负载分配不均匀等问题。为了使得负载分配十分均匀,就要应用能够正确反映
各个服务器CPU及I/O状态的负载均衡策略[4]。 
客户发起的服务请求类型是多种多样的,按照对处理器、网络和I/O的资源要求,可以简单的将它们分为两个不同类别,以便应用
不同的处理策略: 
静态文档请求:例如普通的文本、图象等静态多媒体数据,它们对处理器负载影响不大,造成的磁盘I/O负载与文档的大小成正比
,主要对网络I/O造成压力。 
动态文档请求:更为常见的请求常常需求服务器预先进行处理,例如搜寻数据库、压缩解压缩多媒体文件等,这些请求需求相当
大的处理器和磁盘I/O资源。 
对于静态文档,每个服务进程占用大致相同的系统资源,因此就可以使用进程数来表示系统负载。而动态文档服务需求进行额外
的处理,其占用的系统资源就超过处理静态请求,因此需求使用一个权重来表示。这样一个很简单的服务器负载表示公式就为: 
其中L为服务器的负载,Ns为静态文档服务进程数,Nd为动态文档服务进程数,而a为每个动态文档服务相对于静态文档服务的
权重,可以在10到100之间进行选择。 
在这个公式中没有考虑服务器硬件的限制,当达到硬件限制的时候,由于资源紧张,服务器的负载就会明显增家。例如由于服务
器内存大小的限制,一些进程就要被交换到硬盘上,使得系统负载迅速增家。考虑了系统硬件限制,则服务器的负载可以表示为: 
新增家的参数 Ll表示这个服务器普通负荷的限度,它要根据每个服务器本身的硬件能力来设置。而b表示超出正常负载时用来限
制分配给服务器任务的权重,应该设置为大于Ll的数值,以表示硬件限制作用。通常在一个服务器集群中,硬件设置越差的服务
器这个权重越要设置的大,以避免在所有的服务器都超负载运行时,硬件很差的服务器反而负载很高。因此b是和本服务器硬件
限制Ll成反比的,则b可以设置为: 
Llmax为服务器集群中很高硬件配置的服务器的Ll值。当确定了每个服务器的负载之后,中心控制负载分配的服务器就能将负载
正确的分发给很空闲的服务器,从而不会象其他的负载分配策略那样会导致负载分配不均匀的情况。 
3. 实现方法及实验结果 
我们的服务器系统由使用快速以太网连接起来的多台FreeBSD系统组成。每台后端服务器上运行一个守护进程来动态获得自己
的负载状态,而使用FreeBSD实现的中心控制网关就通过这些守护进程刷新各个服务器的负载,以进行正确的负载分配。 
 


客服