当前位置:文档之家› 广域网负载均衡原理简单介绍

广域网负载均衡原理简单介绍

广域网负载均衡
多链路广域网负载均衡
(1)Inbound多链路负载均衡算法策略:RTT+Topology+RoundRobin
具体描述:
当外部用户访问九州梦网网站时,首先由F5的3DNS对客户端的LDNS进行RTT(Round Trip Time)探测,对比从两条链路返回的探测结果(可以从统计列表中看到),选择一条返回值小的链路IP地址返回给客户端,从而客户端再发起访问请求;当F5的3DNS探测不到客户端的LDNS(由于LDNS安全防护等原因)时,F5的3DNS自动启用Topology算法,来静态匹配客户端的LDNS地理位置,从而根据客户端的来源,返回正确的A记录;当探测不到的LDNS又不在地址列表中时,F5 3DNS自动启用Global Availability 算法作为默认算法,将所有无法计算结果并且不在Topology范围之内的LocalDNS请求,定义到系统的默认线路上。

F5 的3DNS具备二十多种Inbound算法,可以根据需要进行组合。

①RTT算法运行机制:
通过3DNS的RTT就近性算法会自动运算生成一个ldns就近分布表,通过这个动态的表,每个客户上来都会提供一个最快速的链路进行访问,由于站点有ISP1和ISP2的两条广域网线路。

在3DNS上会针对站点服务器(以 为例)解析ISP1和ISP2的两个不同的公网地址。

对应于域名,在3DNS上配置wideip:,对应两个Virtual Server:VS1:202.106.83.177,VS2:219.17.66.100。

分别属于ISP1和ISP2两条线路分配的IP地址段。

在3DNS内部,同时定义两个DataCenter分别与ISP1和ISP2相对应。

用户的访问流程如下:
访问的用户在发起DNS请求时
(1)首先向其所在运营商的Local DNS发起域名的DNS请求。

步骤2
(2)运营商的Local DNS服务器通过递归算法查找到工行的主、辅DNS服务器。

步骤3和4。

(3)接受到请求的3DNS首先查询在本地是否有该LocalDNS的就近性表项,如果存在,则直接给LocalDNS返回速度最快的服务器
地址。

如果不存在,则通知另外一台3DNS发起对该LocalDNS
的查询。

步骤5。

(4)两台3DNS分别对LocalDNS进行Probe。

例如ISP1侧3DNS查询该LocalDNS的RTT时间为150ms,而ISP2侧3DNS查询同一
LocalDNS的RTT时间为300ms,则此时在两台3DNS内都形成
了该LocalDNS的对应就近性表记录。

(5)接受到LocalDNS请求得3DNS根据系统的就近性表返回相应的DataCenter内的WEB服务器地址。

步骤6。

(6)在用户LocalDNS获得地址后,将该地址返回给用户。

步骤7
(7)用户向网站发起访问。

步骤8。

通过以上流程可以看出,通过动态计算方式,可以最为准确的估算出用户LocalDNS与两条线路之间的速度。

通过3DNS之间的信息交互,在两台3DNS上形成就近性表,并根据该表返回用户的最佳访问地址。

3DNS可以选择多种测试方法判断对local DNS的RTT时间, 包括:
●DNS_Dot: 向local DNS发起一个包含”.”的测试, 也就是向目标
LocalDNS请求root清单,该解析一般默认配置的DNS服务器均提供支
持。

●DNS_REV: 向local DNS发起LocalDNS本机IP的PTR请求
●UDP:发起一个UDP的包, 看是否回应
●TCP:发起一个TCP的包看是否回应
●ICMP:发起一个ICMP 的ping 包, 看是否回应
在以上各检测方式中,无论目标系统返回那种类型的数据包,3DNS均可认为是有效数据包而记录数据包往返时间,最终形成就近性表。

针对一个local DNS 的RTT结果:
ldns {
address 61.136.178.229
cur_target_state 419446729
ttl 2419199
probe_protocol tcp
path {
datacenter "CNC"
cur_rtt 189850
cur_hops 0
cur_completion_rate 10000
cur_last_hops 0
}
path {
datacenter "TEL"
cur_rtt 57209
cur_hops 0
cur_completion_rate 10000
cur_last_hops 0
}
}
通常情况下,我们选择RTT动态算法作为优选算法,只要是3DNS能检测到的地址,一律按照动态算法分配,保证系统最大的灵活性。

在实际的运行环境中,可能存在某些LocalDNS无法检测的情况,所以我们可以采用地理分布算法作为动态RTT算法的有效补充。

②地理分布算法
在3DNS上,可以根据用户的LocalDNS地址来决定给用户返回那个地址。

在3DNS上可配置多个自定义区域,并将这些区域与链路相对应。

当用户的LocalDNS发起请求连接3DNS的时候,3DNS将根据LocalDNS所位于的区域返回给LocalDNS适当的链路侧服务器地址,引导用户从正确的线路进行访问。

在该算法下,需要收集各运营商的IP地址网段表。

将网段进行整理后输入到3DNS内形成自定义区域表。

一个典型的topology表结构如下:
topology { // 4 Items
// server ldns score
dc."CNC" 202.106.0.0/16 100
dc."TEL" 219.172.0.0/16 100
dc."CNC" 200.100.0.0/16 100
}
这样,就将所有从表中ldns网段内的LocalDNS请求有限定一到相应的表中对应的链路上。

通常,我们采用地理分布算法作为第二算法。

当动态检测机制无法检到LocalDNS就进性的时候,将启动静态算法,将在地址范围列表之内的用户定义到正确的线路上去。

如果用户的LocalDNS即不可被动态RTT计算所检测,又不在本机对应的地理分布表中。

此时就需要采用全球可用性算法引导用户到默认的线路上。

③全球可用性算法
全球可用性算法主要用于灾难备份系统。

通过3DNS的健康检查算法,可判断各站点或线路的健康状态。

并在配置的时候,将同一域名所对应的IP地址进行排序,在系统正常的时候,仅会有排名第一的服务器对外提供服务。

只有在排名第一的服务器无法对外提供服务的时候,由排名第二的服务器接管服务。

如果有多线路或者多站点则依次类推。

通常,我们采用全球可用性算法作为第三选择算法。

在动态计算和地理分布均没有命中的时候,将所有的用户定义到默认的线路上。

(2)链路健康检查机制
两台3DNS分别检查本地端的服务器地址和对端线路的服务器地址。

这些服务器地址实际上为BIGIP上配置的内部服务器的对外服务地址(如下示意图)。

当一条线路出现故障的时候,两台3DNS服务器均无法检测到对端线路的地址。

所以在每台3DNS服务器上均只解析本侧线路对应的服务器地址(如下示意图)。

但在此时故障线路的3DNS服务器无法接受请求,根据DNS的冗余机制,所有的用户请求均会发送到正常线路侧的3DNS,所以此时所有的用户均将通过正常的线路进行访问。

(3)系统切换时间
在采用DNS实现链路切换时,系统的切换时间主要取决于每个域名的TTL 时间设置。

在3DNS系统里,每个域名如均可设置对应的TTL 生存时间。

在用户的LocalDNS得到域名解析纪录后,将在本地在TTL设定时间内将该域名解析对应纪录进行Cache,在Cache期间所有到该LocalDNS上进行域名解析的用户均将获得该纪录。

在TTL时间timeout之后,如果有用户到LocalDNS上请求解析,则此LocalDNS将重新发起一次请求到3DNS上获得相应纪录。

因此,当单条线路出现故障时,3DNS将在系统定义的检查间隔(该时间可自行定义)内检查到线路的故障,并只解析正常的线路侧地址。

但此时在LocalDNS上可能还有未过时的Cache纪录。

在TTL时间timeout之后,该LocalDNS重新发起请求的时候就将从3DNS上获得正确的解析,从而引导用户通过正常的线路进行访问。

系统检测间隔加上TTL时间之和则为系统切换的最长时间。

通常,系统检测间隔设置为60秒,而TTL时间设置为600秒,所以系统切换的整体时间为11分钟。

(4)根据带宽负载情况,限制流量
当每条链路上Inbound的流量超过预先设定的阀值时,会分配流量给其它链路。

相关主题