整理网站负载均衡架构

来源:互联网 发布:卖旧电脑数据怎么处理 编辑:程序博客网 时间:2024/06/03 17:46

1. DNS域名解析流程




2. DNS轮询解决方案:

     DNS服务器将解析请求按照A记录的顺序,逐一的分配到不同的IP上,这样就完成了简单的负载均衡。
    在DNS服务器上配置多个A标签,当有请求来的时候,第一条分配到第一个A记录所在地址,第二天分配到第二个A记录所在地址,以此类推。

优点:        

        基本上无成本,因为往往域名注册商的这种解析都是免费的;         部署方便,除了网络拓扑的简单扩增,新增的Web服务器只要增加一个公网IP即可

缺点:        

        健康检查,如果某台服务器宕机,DNS服务器是无法知晓的,仍旧会将访问分配到此服务器。修改DNS记录全部生效起码要3-4小时,甚至更久;        
        分配不均,如果几台Web服务器之间的配置不同,能够承受的压力也就不同,但是DNS解析分配的访问却是均匀分配的。用户群的分配不均衡导致DNS解析的不均衡。
        会话保持,如果是需要身份验证的网站,在不修改软件构架的情况下,这点是比较致命的,因为DNS解析无法将验证用户的访问持久分配到同一服务器。虽然有一定的本地DNS缓存,但是很难保证在用户访问期间,本地DNS不过期,而重新查询服务器并指向新的服务器,那么原服务器保存的用户信息是无法被带到新服务器的,而且可能要求被重新认证身份,来回切换时间长了各台服务器都保存有用户不同的信息,对服务器资源也是一种浪费。
 

3. 全局负载均衡系统(GSLB) Global Server Load Balance

作用: 实现在广域网上不同地域的服务器间的流量分配,保证使用最佳的服务器服务离自己最近的客户,从而保证访问质量。
特点:对服务器和链路进行综合判断来决定由哪个地点的服务器来提供服务,实现异地服务器群服务质量的保证。
分类:
               基于DNS实现: 在返回DNS解析结果的过程中进行只能决策,给用户返回一个最佳的服务IP
               基于应用重定向实现: 在负载均衡设备收到用户应用请求并选择最佳服务IP后,通过应用层协议将用户请求重定向到所选择的最佳服务IP。这种方式用于只支持应用重定向的协议(HTTP、MMS),且性能差。
               基于IP地址伪装实现:
               基于主机路由注入实现

  

上图中,中心控制节点配置一台GSLB Controller及数台指定域名(abc.com)的授权DNS服务器,GSLB Controller除了进行GSLB控制外还可以对DNS服务器及其他应用服务器进行负载均衡。设置2个站点(以中国电信和中国网通为例)提供应用服务。其工作流程如下:
1)        用户发起请求访问http://www.abc.com,关于www.abc.com 的DNS请求被送往 Local DNS服务器;
2)        Local DNS通过根DNS服务器查询到abc.com 的授权DNS服务器,Local DNS向授权DNS服务器发DNS请求。
3)        GSLB Controller 截获DNS服务器返回的应答,并基于一组策略选择最佳的站点VIP 地址,返回给Local DNS服务器。
GSLB Controller也可以根据事先定义的策略返回CNAME记录,在大规模的多级GSLB设计中会用到这种方式。Local DNS会递归发送DNS请求到负责指定CNAME域的下一级GSLB Controller。
4)        Local DNS服务器返回该DNS应答到用户。
5)        用户根据解析到的IP地址建立连接进行正常访问。
 
随着web应用的不断发展,客户对于业务的稳定性、可靠性等也提出更高的要求,已不再局限于IDC内部的服务器虚拟化。很多人都清楚,国内各大运营商之间数据互访的效果不尽如意,而作为使用者,特别是要求业务及时响应的企业用户,一方面要考虑异地IDC的数据容灾,另一方面要实现就近性访问,提高客户访问体验,这时,全局负载均衡GSLB是一个很好的解决方案。

GSLB的作用类似DNS,可以将GSLB设备当作一台DNS,所有设置在这台设备上的域名都能解析出A记录。但它又多出了一个重要的功能,智能化。在上面图中可以看到GSLB充当了一台DNS的作用,用于解析相关的DNS。

从GSLB处理流程可以看出,其核心在GSLB策略。接下来简单介绍一下常用的一些GSLB策略。
1)        各内容站点的“健康状况”
GSLB Controller对各内容站点负载均衡设备上定义的VIP或服务器(没有本地负载均衡的情况)进行第四层TCP/UDP健康检查和第七层应用健康检查。未能通过健康检查的站点不会被选为最佳的内容节点。
2)        地理区域或用户自定义区域
一个区域为若干条IP地址前缀。根据用户本地DNS的IP地址,将特定IP范围的用户优先分配到某个通过健康检查的站点。值得一提的是,由于DNS本身的工作原理所限,GSLB Controller只能看到用户本地DNS的IP地址,而不是用户终端的IP地址。当用户使用错误的本地DNS(如教育网用户配置网通的DNS服务器)时,GSLB Controller返回的DNS应答将不是最佳的站点。这是基于DNS的GSLB的一个弱点,但由于绝大部分运营商现在限制其他运营商的客户使用自己的DNS,出现这种错误配置的比例非常小。
3)        IP地址权重
可以为DNS应答中的每个IP地址分配权重,权重决定与其他候选IP相比分配到该IP的流量比例。
4)        站点(Site)权重
可以为每个Site分配权重,权重决定与其他候选Site相比分配到该Site的流量比例。
5)        会话能力阈值
通过厂商自由的GSLB协议,GSLB Controller可以获得每个站点负载均衡设备当前可用会话数和会话表大小的最大值,当前会话数/最大会话数比值超过定义的阈值时,该站点不再被选择。
6)        活动服务器
指一个GSLB节点绑定到一个VIP上的活动真实服务器数量。可以配置策略优先选择活动服务器最多的IP地址。
7)        往返时间(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测量不会主动去进行测量,也不会产生额外的数据流量,而是在用户向返回的VIP建立连接时进行采集。
-       Passive RTT测量指从内容站点收到一个用户发出连接请求(发送TCN SYN)到接收到用户的确认(收到TCP ACK)所经历的时间。而不是简单的PING的响应时间,可以更精确的衡量访问最快的站点。
-       Passive RTT的测量值真正反映了用户的上网感受 ,在运营商网络中也不会产生额外流量。也不会受到其他运营商或网络的安全策略的影响。
与基于区域的策略相同,用户配置错误的DNS时,基于RTT的选择也将不是最佳的。
8)        当前可用会话数
9)        站点管理优先级(Admin Preference)
为每个站点预设优先级,选择优先级较高的站点。
10)           最少选择
选择从前被选择的次数最少的节点。
11)     轮询(Round Robin)
采用轮询方式选择站点。

4. 全局负载均衡系统详解    

通常负载均衡可以分为两个层次:全局负载均衡(Global Server Load Balance, GSLB)和服务器负载均衡(Server Load Balance, SLB)。全局负载均衡是指对分别放置在不同的地理位置的服务器群间作负载均衡。服务器负载均衡是指对本地的服务器群做负载均衡。
 
     常见的GSLB实现方式有三种: DNS轮询、HTTP重定向、IP欺骗(又称三角传输)。这三种实现方式都是在用户通过域名来访问目标服务器时,由GSLB设备进行智能决策,将用户引导到一个最佳的服务IP。

基于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设备中实现。

参考自:

http://www.cnblogs.com/and/p/3366400.html

http://blog.csdn.net/u010340143/article/details/9062213

http://virtualadc.blog.51cto.com/3027116/624466

0 0