全局负载均衡与CDN网络简介

1.  背景

       由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度需求也相应地增大,使得单一的服务器设备难以承担。在此情况下,如果替换全部现有设备去做大量的硬件升级,将造成现有资源的浪费,而且再面临下一次业务量的提升时,又将导致再一次硬件升级的高额成本投入,甚至最新设备也无法满足业务量增长的需求。

负载均衡(又称为负载分担),英文名称为Load Balance,其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

通常负载均衡可以分为两个层次:全局负载均衡(Global Server Load Balance, GSLB)和服务器负载均衡(Server Load Balance, SLB)。全局负载均衡是指对分别放置在不同的地理位置的服务器群间作负载均衡。服务器负载均衡是指对本地的服务器群做负载均衡。

2.  全局负载均衡

全局负载均衡主要用于在多个区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度。

2.1.  服务器群选择

对于全局负载均衡而言,其核心就是服务器群的选择。对于某个特定的客户,应该将其定向到哪一个服务群?应该使用什么标准来进行这种选择?一般情况下,主要考虑两个因素:临近程度和负载大小。

临近机制主要考察服务器群与用户之间的物理距离。选择地理位置最接近用户的服务器集群,可以减少服务响应到达用户所经过的中转次数,从而降低中转节点对服务质量的影响。常见的有两种方式,一种是静态配置,例如根据静态的IP地址配置表进行IP地址到服务器群的映射。另一种方式是动态的检测,例如实时地探测到目标IP的距离(可以采用到达目标IP经过的跳数作为度量单位),然后比较探测结果进行选择。

负载机制比较各个服务器群的负载,确定由哪一个服务器群来响应请求。在全局负载均衡中,考察的是服务器群的负载,而不是单个服务器的负载,因此,需要更多地考虑普遍的问题,比如,需要考虑站点的最大连接数、站点的平均响应时间、服务质量等。

2.2.  常见实现方式

常见的GSLB实现方式有三种: DNS轮询、HTTP重定向、IP欺骗(又称三角传输)。这三种实现方式都是在用户通过域名来访问目标服务器时,由GSLB设备进行智能决策,将用户引导到一个最佳的服务IP

2.2.1.   基于DNS的GSLB

用户访问某个网站时,需要首先通过域名解析服务(DNS)获得网站的IP。域名解析通常不是一次性完成的,常常需要查询若干不同的域名服务器才能找到对应的IP。如下图所示,用户首先在本地配置一个本地DNS服务器地址,本地DNS服务器收到DNS请求后若不能解析,会将请求转发给更高一级的DNS服务器直到找到域名对应的IP或确定域名不存在。

图 域名解析过程

对于加入了GSLB的情况,一个GSLB设备(可能是一个4层交换机)会最终代替DNS服务器完成域名解析。下图展示两种流程的不同。

(a)   普通访问流程

(b)   加入GSLB的情况

图 全局负载均衡流程与普通访问流程对比

这种方案的优点是:实现简单、实施容易、成本低。其缺点是:当GSLB设备采用“用户就近访问”的原则作为选择最优服务器的策略时,会存在判断不准的现象。原因是在这种策略下,GSLB设备是根据用户IP地址和内容服务器IP地址比较来判断其就近性的,但由于DNS响应是通过本地DNS服务器到达用户的,GSLB设备实际上只能得到用户的本地DNS服务器地址,若用户指定的DNS服务器IP不能正确代表用户的实际位置,就会出现判断不准的现象。

2.2.2.   基于HTTP重定向的GSLB

为了解决基于DNS实现方式判断不准的问题,又出现了基于HTTP重定向的GSLB。这种方案中GSLB使用HTTP重定向技术,将用户访问重定向到最合适的服务器上。

图 基于HTTP重定向的GSLB工作流程

       使用基于HTTP重定向方案,首先在DNS中将GSLB设备的IP地址登记为域名的A记录(既域名对应的IP)。如上图所示,用户首先通过DNS得到GSLB设备的IP地址,此时用户以为这就是站点服务器的IP,并向其发送HTTP请求。GSLB设备收到HTTP请求后使用一定策略选择一个最合适的服务器,然后GSLB设备向用户发送一个HTTP重定向指令(HTTP302),并附上选出的服务器的IP地址。最后,用户根据重定向IP访问站点的服务器。

       这一方案的优点是:由于直接向用户发送HTTP重定向指令,可以得到用户的真实IP,从而解决了判断不准确的问题。其缺点是只能为HTTP访问重定向。

2.2.3.   基于IP欺骗的GSLB

HTTP重定向方案解决了判断不准确的问题,但只能针对HTTP协议应用使用。对于HTTP协议以外的访问,就需要使用基于IP欺骗(又称三角传输)的GSLB。

基于IP欺骗(三角传输)的GSLB工作流程

       基于IP欺骗的方案同样需要首先将GSLB设备的IP地址在DNS中登记为域名的A记录,这样用户对该域名的请求包都会先发送到GSLB设备。如上图所示,GSLB设备首次收到服务请求包后,会选择一个最合适的服务器,并将服务请求包发送到该服务器。服务器在向用户发送响应包时,将其源IP地址字段改为GSLB设备的IP,发送给用户。

这样,整个过程对用户来说,感觉到的只是GSLB设备在为其提供服务,并不知道其中经历这样一个三角传输的过程。而且这种方案可以对所有类型的访问如HTTP、FTP等进行重定向,但其速度和效率相对比前两种方案要差一点,因为用户所有的访问请求都通过三个点才能响应,经历了更多的路径和处理,所以其主要作为HTTP重定向方案的补充方案在同一GSLB设备中实现。

2.3.  服务器群选择策略

上文中介绍的三种方案,解决了如何将用户引导到指定服务器群的问题,而在此之前首先需要使用某种方式选出最适合用户的服务器群,也就是GSLB在选择服务器群时所采用的策略。接下来介绍一些常用的GSLB策略。

1)     地理区域或用户自定义区域:将若干条IP地址前缀划分一个区域为。根据用户本地DNS的IP地址,将特定IP范围的用户优先分配到某个通过健康检查的站点。

2)     IP地址权重:可以为DNS应答中的每个IP地址分配权重,权重决定与其他候选IP相比分配到该IP的流量比例。

3)     往返时间(Round Trip Time, RTT):RTT策略是基于区域之外最常用的策略。有两种模式的RTT测量:Active RTT测量与Passive RTT测量。在实际部署中,由于网络限制和性能原因,Active RTT往往无法使用,Passive RTT更实用一些。

a) Active RTT 测量:

当GSLB Controller收到来自LDNS的DNS请求时,GSLB Controller会通知所有站点负载均衡设备对该LDNS进行RTT测量。根据采集到的RTT值,GSLB Controller会选择RTT值最小的站点的VIP返回给LDNS。

由于Active RTT采用DNS Query或ICMP进行RTT测量,在有些网络中可能会被安全策略所过滤而无法工作。

Active RTT测量会产生额外的DNS Query或ICMP流量,在有些网络中用户不希望有太多类似的非用户流量。

b) Passive RTT测量:

Passive RTT测量指从内容站点收到一个用户发出连接请求(发送TCN SYN)到接收到用户的确认(收到TCP ACK)所经历的时间。而不是简单的PING的响应时间,可以更精确的衡量访问最快的站点。

Passive RTT测量不会主动去进行测量,也不会产生额外的数据流量,而是在用户向返回的VIP建立连接时进行采集。

Passive RTT的测量值真正反映了用户的上网感受,在运营商网络中也不会产生额外流量。也不会受到其他运营商或网络的安全策略的影响。 

3.  内容分发网络

使用GSLB设备可以为用户选择最合适的服务器群,但受Web服务器的负荷和传输距离等因素的影响,响应速度依然经常不能满足用户的需求。这一问题的解决方案就是在传输网络上利用缓存技术使得Web服务数据流能够就近访问。内容分发网络(CDN)正是这种思想的一个实现,CDN使用GSLB设备将用户引导到最合适的缓存节点(距离近,负载低),使得用户在访问静态内容时获得更好的体验。

3.1.  CDN简介

内容分发网络(Content Delivery Network, CDN)其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。

图 CDN原理图

3.2.  CDN组成

一个CDN网络主要由以下几部分组成:内容缓存设备、内容分发管理设备、本地负载均衡交换机、GSLB设备和CDN管理系统,其网络结构如下图所示:

图 CDN网络结构

其中,内容缓存设备Cache用于缓存内容实体和对缓存内容进行组织和管理。当有用户访问该客户内容时,直接由各缓存服务器响应用户的请求。

内容分发管理设备主要负责核心Web服务器内容到CDN网络内缓存设备的内容推送、删除、校验以及内容的管理、同步。

GSLB设备则实现CDN全网各缓存节点之间的资源负载均衡,它与各节点的SLB设备保持通信,搜集各节点缓存设备的健康状态、性能、负载等,自动将用户指引到位于其地理区域中的服务器或者引导用户离开拥挤的网络和服务器。还可以通过使用多站点的内容和服务来提高容错性和可用性,防止因本地网或区域网络中断、断电或自然灾害而导致的故障。

CDN管理系统实现对全网设备的管理,对系统的配置。它不仅能对系统中的各个设备进行实时监控,对各种故障产生相应的告警,还能实时观测到系统中总的流量以及各节点的流量,并保存在系统的数据库中,作为统计分析的基础数据,并对日志文件进行管理、报告,作为计费的基础数据。

3.3.  CDN工作流程

CDN网络结合了GSLB与缓存技术,其工作流程如下图所示:

图 CDN工作流程

用户访问某个站点的内容时,若该站点使用了CDN网络,则在用户会在域名解析时获得CDN网络GSLB设备的IP地址。GSLB设备根据其预设的选择策略(如,地理区域、用户时间等)为用户选择最合适的内容缓存节点,并且使用某种方式(如,基于DNS、基于HTTP重定向、基于IP欺骗的方式等)导引用户访问所选的内容缓存节点。

用户继续向缓存节点发出请求,若缓存中包含请求的内容,则直接返回给用户,否则从核心Web服务器中获取该内容,缓存后返回给用户。这样当用户再次访问相同内容或其他用户访问相同内容时,可以直接从缓存中读取,提高了效率。

没有更多推荐了,返回首页