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

广域网负载均衡多链路广域网负载均衡(1) Inbound 多链路负载均衡算法策略:RTT Topology RoundRobin具体描述:当外部用户访问九州梦网网站时,首先由F5的3DNS 对客户端的

广域网负载均衡

多链路广域网负载均衡

(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 上会针对站点服务器(以www.f5.com.cn 为例) 解析ISP1和ISP2的两个不同的公网地址。

对应于www.f5.com.cn 域名,在3DNS 上配置wideip :www.f5.com.cn ,对应两个Virtual Server:VS1:202.106.83.177,VS2:219.17.66.100。分别属于ISP1和ISP2两条线路分配的IP 地址段。在3DNS 内部,同时定义两个DataCenter 分别与ISP1和ISP2相对应。

用户的访问流程如下:

,

访问的用户在发起DNS 请求时

(1) 首先向其所在运营商的Local DNS 发起www.f5.com.cn 域名的

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) 用户向www.f5.com.cn 网站发起访问。步骤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 动态算法作为优选算法,只要是

到的地址,一律按照动态算法分配,保证系统最大的灵活性。

在实际的运行环境中,可能存在某些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 请求有限定一到相应的表中对应的链路上。 3DNS 所以我们能检测

,

通常,我们采用地理分布算法作为第二算法。当动态检测机制无法检到LocalDNS 就进性的时候,将启动静态算法,将在地址范围列表之内的用户定义到正确的线路上去。

如果用户的LocalDNS 即不可被动态RTT 计算所检测,又不在本机对应的地理分布表中。此时就需要采用全球可用性算法引导用户到默认的线路上。 ③ 全球可用性算法

全球可用性算法主要用于灾难备份系统。通过3DNS 的健康检查算法,可判断各站点或线路的健康状态。并在配置的时候,将同一域名所对应的IP 地址进行排序,在系统正常的时候,仅会有排名第一的服务器对外提供服务。只有在排名第一的服务器无法对外提供服务的时候,由排名第二的服务器接管服务。如果有多线路或者多站点则依次类推。

通常,我们采用全球可用性算法作为第三选择算法。在动态计算和地理分布均没有命中的时候,将所有的用户定义到默认的线路上。

(2) 链路健康检查机制

两台3DNS 分别检查本地端的服务器地址和对端线路的服务器地址。这些服务器地址实际上为BIGIP 上配置的内部服务器的对外服务地址(如下示意图)。

当一条线路出现故障的时候,两台3DNS 服务器均无法检测到对端线路的地 址。所以在每台3DNS 服务器上均只解析本侧线路对应的服务器地址(如下示意图)。

,

但在此时故障线路的

所有的用户请求均会发送到正常线路侧的

正常的线路进行访问。

(3) 系统切换时间

在采用

时间设置。在

生存时间。在用户的

间内将该域名解析对应纪录进行

行域名解析的用户均将获得该纪录。在

LocalDNS

应纪录。

因此,

自行定义)内检查到线路的故障,并只解析正常的线路侧地址。但此时在LocalDNS

LocalDNS

通过正常的线路进行访问。系统检测间隔加上

长时间。通常,系统检测间隔设置为

统切换的整体时间为

(4) 根据带宽负载情况,限制流量3DNS 服务器无法接受请求,根据DNS 的冗余机制, 3DNS ,所以此时所有的用户均将通过 DNS 实现链路切换时,系统的切换时间主要取决于每个域名的TTL 3DNS 系统里,每个域名如www.f5.com.cn 均可设置对应的TTL LocalDNS 得到域名解析纪录后,将在本地在TTL 设定时Cache ,在Cache 期间所有到该LocalDNS 上进TTL 时间timeout 之后,如果有用户到LocalDNS 将重新发起一次请求到3DNS 上获得相当单条线路出现故障时,3DNS 将在系统定义的检查间隔(该时间可Cache 纪录。在TTL 时间timeout 之后,该3DNS 上获得正确的解析,从而引导用户TTL 时间之和则为系统切换的最60秒,而TTL 时间设置为600秒,所以系11分钟。 上请求解析,则此上可能还有未过时的重新发起请求的时候就将从

,

当每条链路上Inbound 的流量超过预先设定的阀值时,会分配流量给其它链路。

标签: