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或确定域名不存在。