Page1/26©2008A10Networks,Inc.AllRightsReservedPerformancebyDesignA10链路负载均衡解决方案1.概述由于国内各运营商之间的互联互通一直存在很大的问题,采用运营商自身单条互联网出口,在为用户提供IDC主机托管服务和大客户专线接入服务时,会遇到用户抱怨访问速度差的问题。同时,单条链路本身存在单点故障问题。因此,通过在多个数据中心分别拉不同运营商的线路或者同一数据中心或公司网络出口采用多条互联网链路并使用专门的负载均衡设备智能选择最佳链路成为提高服务水平和用户满意度的一种有效方式,我们把多数据中心负载均衡和多链路负载均衡统称为全局负载均衡或者广域网负载均衡。2.需求描述对于全局和链路负载均衡,需要解决两种流量类型的负载均衡以及容灾问题:入向流量(InboundTraffic):从Internet上的客户端发起,到数据中心内部的应用服务的流量。如:Internet上用户访问企业Web网站。对于入向流量,需要根据当前网络延时、就近性等因素,来判断哪一条链路可以对外部用户提供最佳的访问服务。出向流量(OutboundTraffic):从内部网络发起的,对Internet上应用资源的访问。如:内部局域网用户访问Internet上Web网站应用。对于出向流量,需要根据当前链路的就近行、负载情况、和应用服务的重要性等选择最佳的链路。容灾:多数据中心除了可以提高服务质量之外,另外一个重要的目的就是容灾,当一个数据中心出现故障,将所有用户访问由灾备数据中心来处理。Page2/26©2008A10Networks,Inc.AllRightsReservedPerformancebyDesign3.A10LLB负载均衡解决方案3.1.出向流量链路负载均衡(OutboundLLB)相对于入向流量的链路负载均衡,出向流量的链路负载均衡则比较简单。当内部用户发起对外界的访问请求时,链路负载均衡控制器根据链路选择算法选择合适的链路,并对内部用户的IP地址进行NAT转换。出向负载均衡是对每个数据中心内部的机器来而言的,通过放置在每个数据中心出口位置的AX来实现。WebClientLLBControllerIP:1.1.1.1IP:2.2.2.2ISP_ALinkISP_BLinkInternetPrivateIP:192.168.1.10Page3/26©2008A10Networks,Inc.AllRightsReservedPerformancebyDesign图例3采用LLB的Outbound访问实例如图例3所示,内部局域网用户访问外部Web网站时,链路负载均衡控制器的处理过程如下:内部局域网用户在浏览器输入要访问网站的域名,根据DNS返回的域名解析结果,发起对外部服务器的访问请求。LLBController收到用户的访问请求后,根据链路选择算法,选择一条最佳的链路发送访问请求。并根据该链路上设置的NAT地址,对内部用户的请求进行NAT转换。例如,LLBController选择ISP_A作为出向流量的处理路径,则将该客户端的内部地址192.168.1.10转换为1.1.1.1,并作为发起该请求的源地址将请求转发给Web服务器进行处理。Internet上的Web服务器收到请求后,对其进行处理,并将结果返回给LLBController,LLBController对收到的数据包进行转换为内部地址192.168.1.10,并将返回数据包转发给内部客户端。出向流量链路负载均衡不受外部DNS的影响,因此,在处理流程上比较简单。通常,出向流量的链路选择算法建议对国内IP尽可能采用静态绑定,对于国外或国内未知IP采用缺省选择较快线路的方式。3.2.入向全局负载均衡(InboundLLB/GSLB)首先简单介绍一下用户通过互联网络访问Web应用服务器的整个过程。如下图所示,我们将通过客户端访问来说明客户端访问的整个过程。Page4/26©2008A10Networks,Inc.AllRightsReservedPerformancebyDesignInternetWebADNSLDNSClient(1)DNSQuery(2)DNSQuery(3)DNSReply(4)DNSReply(5)TCPConnection图例1Inbound访问实例客户端(Client)在浏览器地址栏中输入,发起对该网站的访问请求。由于客户端不知道地址,因此,客户端向本地DNS(LocalDNS,LDNS)发出域名解析请求,要求LDNS提供地址。LDNS通过递归查询,从上级DNS服务器得到helloworld.com的授权DNS(AuthoritativeDNS,ADNS)服务器IP地址,于是,LDNS向ADNS域名服务器发送域名解析请求,要求对域名进行解析。ADNS将。LDNS将的域名解析结果返回给客户端。Page5/26©2008A10Networks,Inc.AllRightsReservedPerformancebyDesign客户端获得地址,于是,客户端利用这个IP地址发送对域名的访问请求。在多数据中心或者多链路的环境中,通过负载均衡技术控制DNS的解析结果,达到智能选择数据中心和链路的目的。AXGSLB负载均衡技术通过静态或动态路径选择算法,选择最佳的数据中心和链路,然后将域名解析为相应数据中心和链路的IP地址,并返回给客户端。下图为多数据中心的拓扑图:下面是单数据中心多链路负载均衡的拓扑图:Page6/26©2008A10Networks,Inc.AllRightsReservedPerformancebyDesign多数据中心负载均衡和多链路的负载均衡在物理拓扑上看起来不同,但是在实现原理上是一样的。我们仍然通过客户端访问技术来进行选择的。如下图所示,ADNS服务器和Web服务器分别接入A10的负载均衡设备,两条链路ISP_ALink和ISP_Blink分别接入链路负载均衡控制器。在ADNS上将地址。其中,1.1.1.1为ISP_A提供的IP地址,2.2.2.2为ISP_B提供的IP地址。在负载均衡控制器上将这两个地址同时映射为内部的Web服务器地址。此外,将内部的ADNS服务器地址映射为公网IP地址。如果用户没有自己的ADNS,A10网络的AX系列负载均衡器也可以兼做DNS服务器。如下图所示Page7/26©2008A10Networks,Inc.AllRightsReservedPerformancebyDesign图例2采用GSLB技术的Inbound访问实例客户端访问的过程如下:客户端(Client)在浏览器地址栏中输入,发起对该网站的访问请求。如同前面的实例一样,客户端向LDNS发出域名解析请求,要求LDNS提供地址。Page8/26©2008A10Networks,Inc.AllRightsReservedPerformancebyDesignLDNS通过递归查询,从上级DNS服务器得到helloworld.com的ADNS服务器IP地址,于是,LDNS向ADNS域名服务器发送域名解析请求,要求对域名进行解析。AX收到LDNS发来的域名解析请求后,将请求转发给内部的ADNS服务器进行处理。如果是负载均衡器AX自身作为DNS服务器,直接进入第5步。ADNS将地址,并将结果返回给LLBController。AX收到ADNS的域名解析结果或者授权DNS服务器的解析请求后,根据当前所采用的选择算法(如基于IP就近性或者动态探测等)和当前链路的情况,对返回的解析结果进行处理,然后将域名解析结果返回给LDNS。例如,如果判断从ISP_ALink访问快,则将1.1.1.1作为域名解析结果返回给LDNS;若判断从ISP_BLink访问快,则将2.2.2.2作为域名解析结果返回给LDNS。LDNS将的域名解析结果返回给客户端。客户端获得地址,于是,客户端利用这个IP地址发送对域名的访问请求。A10GSLB技术通过对DNS的解析结果进行重新处理,完成了数据中心和链路的智能选择。一般情况下,选择算法分为静态和动态两大类。静态的选路算法一般基于源IP地址进行选路,通过查询客户端IP地址所属的ISP,来选择最佳链路或数据中心,这种方法最直接、最高效,但需要事先将IP地址段按照所属的ISP进行分类并绑定到不同的链路上。动态的算法则是通过动态检测的方法,分析多个链路和数据中心的负载情况、响应时间、链路优先级等状况,通过比较这些指标,返回最佳的服务IP。由于国内运营商见互联互通不是很好,通常建议对国内IP尽可能采用静态绑定,对于国外或国内未知IP采用缺省选择较快线路的方式。针对多数据中心情况的处理:在多数据中心做负载均衡的时候,一般每个数据中心都要放置一台AX,如果设置的是IP就近性判断,首先判断源IP属于哪个运营商,返回同运营商的服务IP为第一选择,其次在多数据中心连接了同运营商线路的情况下,那么将针对不同的源IP,在不同数据中心的AX上设置不同服务IP的优先级,对于不同的源IP,将优先返回地理位置最近的数据中心的Page9/26©2008A10Networks,Inc.AllRightsReservedPerformancebyDesign服务IP。如果还设置的有动态探测,那么多台AX之间会进行通信,每台AX都会探测client的响应时间,然后把探测结果发给收到DNS请求的AX,有该台AX比较探测结果,返回响应时间最快的数据中心的相应服务IP.针对多链路负载均衡的处理:多链路负载均衡与多数据中心的处理过程是一样的,区别在于动态探测直接由同一台AX从不同的链路进行探测比较。另外假设有多条同运营商的链路在同一台AX,不需要判断源IP对同运营商链路的就近性。针对单台AX连接多条链路的情况,AX具有use-rcv-hop-for-resp功能,保证流量从哪条链路进来从哪条链路返回。AX对DNS请求的处理:AX支持两种dns请求的处理方法:DNSServer:由AX负责处理用户的DNS解析请求,将处理后的结果返回给用户,优点是不用修改用户原来DNS的注册IP,缺点是需要用户的DNS做一定的设置,将用户的请求域名转发给AX来处理。DNSProxy:将用户自己的DNSServer在AX上做一个IP映射,用户DNS请求通过AX转发给用户的DNS来解析,然后AX在收到DNS的解析结果后进行智能处理,返回最优的服务IP给用户。优点是不用修改用户DNS的配置,缺点是需要把用户DNS的注册IP配置到AX上面,用户DNS改成别的IP。3.3.链路的健康检查无论是Outbound还是Inbound负载均衡,都涉及到链路的健康检查,AX支持ping,tcp,udp以及Http等多种健康检查方法,可对每条链路对端的网关或者远端的主机等进行检查以决定链路的可用性。链路健康检查为负载均衡第一判断条件,当某条链路出现故障,与该条链路相关的服务IP将不会返回给用户,AX也不会从故障链路转发