现在的位置: 首页 > 综合 > 正文

负载均衡背景知识

2018年04月04日 ⁄ 综合 ⁄ 共 1702字 ⁄ 字号 评论关闭

   Ø 负载均衡的目的是创建一个系统:将来自实际运行服务的物理服务器中的“服务”(用户访问站点)进行虚拟化处理,在大量物理服务器之间实现负载均衡,并使这些服务器对外界看起来犹如一个大服务器,为用户提供高可用性、高扩展性、可预测的应用服务。

高可用性:一个站点即使在一个或多个系统瘫痪的情况下仍保持可用和可接入的能力。服务虚拟化为高可用性提供了机会。

高扩展性:服务器能够动态适应负载的增加而不影响现有性能的能力。

可预测性:指能够控制如何交付服务以及何时交付服务以实现高可用性和性能等方面的能力

 

 

Ø 负载均衡器的萌芽期:在专用的负载均衡设备实现商用之前,许多人尝试利用当时已有技术实现高扩展性和高可用性的目标。采用DNS轮询(Domain Name System:域名系统)是最常用的技术,DNS轮询技术采用让DNS每个名称解析请求能够使用多个IP地址以不同顺序应答的方式实现。域名系统 (DNS) 是将人可读的名称 (www.example.com) 转换为机器可识别的IP地址的服务。DNS轮询技术的原理图如下1

1:DNS轮询原理图

由上图可以发现,从可扩展性的角度来看,该方法具有优良的可扩展性:新增服务器后只需在DNS的域名列表中新增一个IP即可。从可用性角度来看,该方法几乎没有可用性的任何保证:首先无法对服务器进行健康检查,当列表中IP对应的服务器当掉时,DNS轮询时还是会把服务导向该服务器;其次外部浏览器可以缓存或者记忆名称的解析结果,导致多次接入时重复指向同一台服务器。

    总的来说,DNS轮询方法由于不具有对服务器工作状态的解析能力,只能提供一种不可控制的负载分配,无法实现真正意义上的负载均衡。

   

Ø 负载均衡器的发展:基于应用的负载均衡解决方案在小规模范围表现良好。这类解决方案是在应用服务器的应用软件或操作系统上直接部署负载均衡能力。大部分解决方案设计到基本的网络欺骗,其中典型的方法是让集群中的所有服务器监听(接收)除自身物理地址外集群IP,所谓集群就是在同一网段内的计算机的集合,集群IP是指用来表示该集群的IP。该方法的示意图如下图2:

     

图2:基于应用的负载均衡

    采用这种方法实现负载均衡的步骤如下:

① 用户连接服务时,用户连接到集群IP,而非物理服务期的物理IP.

② 集群中最先对连接请求作出响应的服务器把用户重定向到物理IP(可以是自己的IP地址,或者是另一个服务器的IP). 此时会话建立。 

这种方法的核心步骤是上面的第2步:应用开发人员可以使用大量的信息确定客户连接到哪个IP地址。例如,当集群中的每个服务器维护每个服务器正在服务的会话数量时,可以将新请求定向到利用率最低的服务器。当步骤1发生时,可以采用这个策略实行步骤2。

该方案的优点是扩展性强,只需构建一台服务器,并将其加到集群中,这样就可以进行扩容了。然而,由于集群成员之间需要互相保持联系以获得其它服务器的连接信息,随着新服务器加入该网络中,集群成员服务器间的网络流量将会呈现指数型增长。因此该方法适用于较小规模的集群,在集群扩展到一定规模,一般是5-10台服务器后,流量就开始影响最终用户的业务流量以及服务器本身的处理器能力。

Ø 负载均衡器的成熟:基于网络的负载均衡方案采用一些具有强大功能的基于网络的设备,且这些设备与应用无关,位于应用服务器的外部,因此能够采用更直接的网络技术实现负载均衡。从本质上讲,这些设备会向外部世界展现一个虚拟服务器地址,而当用户试图连接时,它会将连接通过双向网络地址转换(NAT)转移到最适合的真正的服务器上。该方案的示意图如下图3:

图3:基于网络的负载均衡

如上图,负载均衡设备可以确切的控制哪个服务器接收哪个连接,并且采用“健康状态监视器”(Health Monitor)监控日益提高的网络复杂性,保证应用服务器能够根据需要进行响应。如果某个服务器当机,就会自动停止向该服务器发送流量。

参考材料:KJ Salchow,Jr 《负载均衡:向应用交付控制器演进》From http://www.f5.com.cn/resources.html

抱歉!评论已关闭.