1、F5 3DNS+BIGIP多链路接入解决方案于应 13501703580F5 公司上海办事处2005-10-12F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 2目 录1. 前言 .22. 需求描述 .33. 系统设计 .33.1 3DNS 多链路设计结构图: 43.2 网络拓扑结构说明 53.3 系统逻辑结构 63.4 同一组服务器对外多地址服务原理 73.5 3DNS 分配算法及运行机制 83.5.1 RTT 算法运行机制: .93.5.2 地理分布算法 113.5.3 全球可用性算法 123.6 链路健康检查机制 123.7 系统切换时间 143.8 服务器负载均衡 14
2、4. 3DNS 与现有系统的融合 .174.1 改变上级注册授权域 DNS 服务器地址 174.2 不改变上级注册授权域 DNS 服务器地址 185. 系统安全性考虑 .186. 成功案例 .19F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 31. 前言在原 Chinanet 分为北方 China Netcom 和南方 China Telecom 之后。由于南北网络之间的互联问题。出现了从南方用户访问北方网站或北方用户访问南方用户访问速度较慢的问题。其出现的根本原因为南北网络的互通互联接点拥塞,造成用户丢包、延迟较大,从而导致访问缓慢,甚至对于一些应用根本无法访问。2. 需求
3、描述对于一个运行关键业务的电子商务网站来说,保持用户的访问速度和访问的成功率非常重要。需要一套系统来解决南方和北方用户的访问问题。以下是一张实测数据表测试项目 网通北京 ADSL 用户访问 12 月 2 日凌晨 1 时广东电信用户访问,宽带用户,带宽未知,12 月2 日 16:30网通北京 ADSL用户访问,12 月2 日 16:00上海 ADSL 宽带用户访问,12 月 2 日 20:00DNS Result 202.xxx.xxx.209 219.xxx.xxx.11 202.xxx.xxx.209 219.xxx.xxx.11网通 电信 网通 电信 网通 电信 网通 电信Number o
4、f hits: 72 69 4 76 52 47 19 35Requests per Second1.20 1.15 0.07 1.27 0.87 0.78 0.32 0.58Socket Connects73 70 5 77 53 48 20 36Total Bytes Sent (in KB)14.19 13.47 0.96 14.96 13.61 12.23 3.87 7.03Bytes Sent Rate (in KB/s)0.24 0.22 0.02 0.25 0.23 0.20 0.06 0.12Total Bytes Recv (in KB)4148.24 4001.90 256
5、.58 4388.54 3019.94 2703.26 21.73 39.83Bytes Recv Rate (in KB/s)69.12 66.68 4.28 73.12 50.32 45.05 0.36 0.66表中可以看出,对于同一个站点,一个用户分别从两条线路进行访问,得出的访问速度差异是非常大的。最大的差值在广东电信分别访问站点的两条线路,其速度差异接近 20 倍。F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 43. 系统设计通常用户系统原有结构设计图在系统原有系统结构中,采用单条接入线路,一个或多个 DNS 服务器,这些服务器对于同一个域名均解析为同一个地址。3.
6、1 3DNS 多链路设计结构图:非冗余结构:F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 5在非冗余结构下,系统中需要增加两侧接入路由器、三台 3DNS 设备和一台 BIGIP 设备作为多线路接入设备。冗余结构:在冗余结构中,则采用两台 3DNS 和两台 BIGIP 实现了系统的全冗余,同时,在 BIGIP 下端,可采用防火墙和核心交换机冗余保证系统的进一步可靠性。F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 63.2 网络拓扑结构说明在原系统接入中,增加一条线路,并采用相应的接入路由器,将两台3DNS 服务器分别接在两台接入路由器上,负责用户的 DNS 访
7、问请求。引导用户使用最快的链路进行访问站点。同时,3DNS 负责检查两条线路的健康状态,一旦检测到线路的中断,则停止相应线路的地址解析。在接入路由器之后,采用了 F5 BIGIP 作为多链路接入设备,在 BIGIP 上配置多个 IP 对应每条线路分配的 IP 网段。这些 IP 同时对应后端的一台或多台服务器。实现服务器组的对外统一服务。根据每个系统的需求,可以采用非冗余结构或者冗余结构。3.3 系统逻辑结构3DNS 上采用 DataCenter、 VS、和 WideIP 来标识系统中的各元素,系统逻辑结构图如下:其中:3DNS 配置: VS:表示各线路真实对外提供服务的 IP 地址,在本系统中
8、, VS 为BIGIP 上虚拟的后端服务器地址。 WideIP:表示外部用户访问的统一域名,每个 WideIP 均与相应的两个或多个 VS 相对应,对于每一个 LocalDNS 的请求,3DNS 均会选择一个或多个相应的 VS 地址返回。WideIP 主要负责 A 记录的解析。 DataCenter:用于标识线路或数据中心,位于同一条线路侧的所有F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 7VS、3DNS 均位于同一个 DataCenter。 NameSurfer/BIND:在 3DNS 内部用于解析非动态域名,提供标准 DNS服务器的所有功能。包括 SOA、NS、MX 和
9、 A 记录的解析。BIGIP 配置: VS:表示对应于各线路的服务地址,该地址为虚拟地址 Pool:用于对后端的服务器分组,在同一组内可以是一个或多个服务器组成的负载均衡组。BIGIP 将对 VS 的访问根据预先定义的算法分配到 Pool 中的每个 Node 节点上。 Node:标识每一台真实的服务器地址和提供服务的端口。3.4 同一组服务器对外多地址服务原理由于采用了多条链路接入,则此时必将面临将系统中的一台或多台服务器同时对多条链路提供服务的问题。在系统设计中,我们采用了 F5 BIGIP 来实现了多出口接入。如图:F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 8在 BI
10、GIP 实现多链路接入的时候,采用了 BIGIP 上的 AutoLastHop 技术。对于每条线路,在 BIGIP 上均配置一个与线路分配网段对应的 IP 地址,这些IP 地址均映射到后端的一台或同一组服务器。当用户访问不同地址的时候,BIGIP 上将建立每个请求与来源设备 Mac 地址的对应关系表。即将每个用户的请求连接和上端的路由器 MAC 地址进行对应,在服务器数据返回的时候,则根据该对应表将返回的数据包发送到相应的路由器,避免了数据往返通路不同的问题。3.5 3DNS 分配算法及运行机制3-DNS控制器采用了完善的负载平衡算法和业界最先进的流量分配方法:F5 3DNS+BIGIP 多链
11、路接入方案F5 公司上海办事处 9 循环 全球可用性 LDNS持续性 应用可用性 地理分布 虚拟服务器容量 最少连接 Pkt/sec(数据包/每秒) KB/sec(千字节/每秒) 往返时间 中继段(hop) 数据包完整率 用户定义服务质量(QoS) 动态比率 LDNS循环 比率 随机在 3DNS 的每个 WideIP 中,可以选择三种算法,这三种算法按照预定的优先级进行排列。在通常情况下,选择 RTT 动态计算方法作为系统的优选算法,即所有的 LocalDNS 请求均被 3DNS 计算其就近性,以保证绝大部分用户访问的最优化性。而 Topology 算法则作为 RTT 动态计算的补充算法,在
12、RTT 计算方式没有结果的时候,将用户请求定义到其本网的线路上。Global Availability 算法作为系统的默认算法,将所有无法计算结果并且不在 Topology 范围之内的LocalDNS 请求,定义到系统的默认线路上。3.5.1 RTT 算法运行机制:通过 3DNS 的 RTT 就近性算法会自动运算生成一个 ldns 就近分布表,通过这个动态的表,每个客户上来都会提供一个最快速的链路进行访问,由于站点有网通和电信的两条广域网线路。在 3DNS 上会针对站点服务器 (以F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 为例) 解析网通和电信的两个不同的公网地址。对应
13、于 域名,在 3DNS 上配置 wideip:,对应两个 Virtual Server:VS1:202.106.83.177,VS2 :219.17.66.100。分别属于网通和电信两条线路分配的 IP 地址段。在 3DNS 内部,同时定义两个 DataCenter分别与网通和电信相对应。用户的访问流程如下:访问网银的用户在发起 DNS 请求时(1) 首先向其所在运营商的 Local DNS 发起 域名的DNS 请求。步骤 2(2) 运营商的 Local DNS 服务器通过递归算法查找到工行的主、辅DNS 服务器。步骤 3 和 4。(3) 接受到请求的 3DNS 首先查询在本地是否有该 L
14、ocalDNS 的就近性表项,如果存在,则直接给 LocalDNS 返回速度最快的服务器地址。如果不存在,则通知另外一台 3DNS 发起对该 LocalDNS的查询。步骤 5。F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 11(4) 两台 3DNS 分别对 LocalDNS 进行 Probe。例如网通侧 3DNS 查询该 LocalDNS 的 RTT 时间为 150ms,而电信侧 3DNS 查询同一LocalDNS 的 RTT 时间为 300ms,则此时在两台 3DNS 内都形成了该 LocalDNS 的对应就近性表记录。(5) 接受到 LocalDNS 请求得 3DNS 根
15、据系统的就近性表返回相应的DataCenter 内的 WEB 服务器地址。步骤 6。(6) 在用户 LocalDNS 获得地址后,将该地址返回给用户。步骤 7(7) 用户向 网站发起访问。步骤 8。通过以上流程可以看出,通过动态计算方式,可以最为准确的估算出用户LocalDNS 与两条线路之间的速度。通过 3DNS 之间的信息交互,在两台 3DNS上形成就近性表,并根据该表返回用户的最佳访问地址。3DNS 可以选择多种测试方法判断对 local DNS 的 RTT 时间, 包括: DNS_Dot: 向 local DNS 发起一个包含”.”的测试, 也就是向目标LocalDNS 请求 roo
16、t 清单,该解析一般默认配置的 DNS 服务器均提供支持。 DNS_REV: 向 local DNS 发起 LocalDNS 本机 IP 的 PTR 请求 UDP:发起一个 UDP 的包, 看是否回应 TCP:发起一个 TCP 的包看是否回应 ICMP:发起一个 ICMP 的 ping 包, 看是否回应在以上各检测方式中,无论目标系统返回那种类型的数据包,3DNS 均可认为是有效数据包而记录数据包往返时间,最终形成就近性表。针对一个 local DNS 的 RTT 结果:ldns address 61.136.178.229cur_target_state 419446729F5 3DNS+B
17、IGIP 多链路接入方案F5 公司上海办事处 12ttl 2419199probe_protocol tcppath datacenter “CNC“cur_rtt 189850cur_hops 0cur_completion_rate 10000cur_last_hops 0path datacenter “TEL“cur_rtt 57209cur_hops 0cur_completion_rate 10000cur_last_hops 0通常情况下,我们选择 RTT 动态算法作为优选算法,只要是 3DNS 能检测到的地址,一律按照动态算法分配,保证系统最大的灵活性。在实际的运行环境中,可能
18、存在某些 LocalDNS 无法检测的情况,所以我们可以采用地理分布算法作为动态 RTT 算法的有效补充。3.5.2 地理分布算法在 3DNS 上,可以根据用户的 LocalDNS 地址来决定给用户返回那个地址。在 3DNS 上可配置多个自定义区域,并将这些区域与链路相对应。当用户的LocalDNS 发起请求连接 3DNS 的时候,3DNS 将根据 LocalDNS 所位于的区域返回给 LocalDNS 适当的链路侧服务器地址,引导用户从正确的线路进行访问。在该算法下,需要收集各运营商的 IP 地址网段表。将网段进行整理后输F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 13入
19、到 3DNS 内形成自定义区域表。一个典型的 topology 表结构如下:topology / 4 Items/ server ldns scoredc.“CNC“ 202.106.0.0/16 100dc.“TEL“ 219.172.0.0/16 100dc.“CNC“ 200.100.0.0/16 100这样,就将所有从表中 ldns 网段内的 LocalDNS 请求有限定一到相应的表中对应的链路上。通常,我们采用地理分布算法作为第二算法。当动态检测机制无法检到LocalDNS 就进性的时候,将启动静态算法,将在地址范围列表之内的用户定义到正确的线路上去。如果用户的 LocalDNS 即
20、不可被动态 RTT 计算所检测,又不在本机对应的地理分布表中。此时就需要采用全球可用性算法引导用户到默认的线路上。3.5.3 全球可用性算法全球可用性算法主要用于灾难备份系统。通过 3DNS 的健康检查算法,可判断各站点或线路的健康状态。并在配置的时候,将同一域名所对应的 IP 地址进行排序,在系统正常的时候,仅会有排名第一的服务器对外提供服务。只有在排名第一的服务器无法对外提供服务的时候,由排名第二的服务器接管服务。如果有多线路或者多站点则依次类推。通常,我们采用全球可用性算法作为第三选择算法。在动态计算和地理分布均没有命中的时候,将所有的用户定义到默认的线路上。3.6 链路健康检查机制两台
21、 3DNS 分别检查本地端的服务器地址和对端线路的服务器地址。这些服务器地址实际上为 BIGIP 上配置的内部服务器的对外服务地址。F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 14当一条线路出现故障的时候,两台 3DNS 服务器均无法检测到对端线路的地址。所以在每台 3DNS 服务器上均只解析本侧线路对应的服务器地址。但在此时故障线路的 3DNS 服务器无法接受请求,根据 DNS 的冗余机制。F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 15所有的用户请求均会发送到正常线路侧的 3DNS,所以此时所有的用户均将通过正常的线路进行访问。3.7 系统切换时间在
22、采用 DNS 实现链路切换时,系统的切换时间主要取决于每个域名的TTL 时间设置。在 3DNS 系统里,每个域名如 均可设置对应的TTL 生存时间。在用户的 LocalDNS 得到域名解析纪录后,将在本地在 TTL 设定时间内将该域名解析对应纪录进行 Cache,在 Cache 期间所有到该 LocalDNS上进行域名解析的用户均将获得该纪录。在 TTL 时间 timeout 之后,如果有用户到 LocalDNS 上请求解析,则此 LocalDNS 将重新发起一次请求到 3DNS 上获得相应纪录。因此,当单条线路出现故障时,3DNS 将在系统定义的检查间隔(该时间可自行定义)内检查到线路的故
23、障,并只解析正常的线路侧地址。但此时在LocalDNS 上可能还有未过时的 Cache 纪录。在 TTL 时间 timeout 之后,该LocalDNS 重新发起请求的时候就将从 3DNS 上获得正确的解析,从而引导用户通过正常的线路进行访问。系统检测间隔加上 TTL 时间之和则为系统切换的最长时间。通常,系统检测间隔设置为 60 秒,而 TTL 时间设置为 600 秒,所以系统切换的整体时间为 11 分钟。3.8 服务器负载均衡BIG/IP利用虚拟IP地址(VIP由IP地址和TCP/UDP应用的端口组成,它是一个地址)来为用户的一个或多个目标服务器(称为节点:目标服务器的IP地址和TCP/U
24、DP应用的端口组成,它可以是 internet的私网地址)提供服务。因此,它能够为大量的基于TCP/IP 的网络应用提供服务器负载均衡服务。BIG/IP连续地对目标服务器进行L4到L7合理性检查,当用户通过VIP请求目标服务器服务时,BIG/IP根椐目标服务器之间性能和网络健康情况,选择性能最佳的服务器响应用户的请求。如果能够充分利用所有的服务器资源,将所有流量均衡的分配到各个服务器,我们就可以有效地避免“不平衡”现象的发生。F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 16BIGIP是一台对流量和内容进行管理分配的设备。它提供12种灵活的算法将数据流有效地转发到它所连接的服
25、务器群。而面对用户,只是一台虚拟服务器。用户此时只须记住一台服务器,即虚拟服务器。但他们的数据流却被BIGIP灵活地均衡到所有的服务器。这12种算法包括: 轮询(RoundRobin ):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP 就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常。 比率(Ratio):给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。 优先权(Priority
26、):给所有服务器分组,给每个组定义优先权,BIG/IP用户的请求,分配给优先级最高的服务器组(在同一组内,采用轮询或比率算法,分配用户的请求);当最高优先级中所有服务器出现故障,BIG/IP才将请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 17 最少的连接方式(LeastConnection):传递新的连接给那些进行最少连接处理的服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。 最快模式(Fastest):传递连接给那些响应
27、最快的服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。 观察模式(Observed):连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。 预测模式(Predictive):BIG/IP 利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器相应用户的请求。(被big/ip进行检测) 动态性能分配(DynamicRatio-AP
28、M):BIG/IP收集到的应用程序和应用服务器的各项性能参数如CPU、内存和磁盘的占用情况,动态调整流量分配。动态性能分配可通过标准SNMP 或服务器端插件完成。 动态服务器补充(DynamicServerAct.):当主服务器群中因故障导致数量减少时,动态地将备份服务器补充至主服务器群。 服务质量(QoS):按不同的优先级对数据流进行分配。 服务类型(ToS):按不同的服务类型(在TypeofField中标识)对数据流进行分配。 规则模式:针对不同的数据流设置导向规则,用户可自行编辑流量分配规则,BIG/IP利用这些规则对通过的数据流实施导向控制。当出现流量“峰值”时,如果能调配所有服务器的
29、资源同时提供服务,所谓的“峰值堵塞”压力就会由于系统性能的大大提高而明显减弱。由于 BIGIP优秀的负载均衡能力,所有流量会被均衡的转发到各个服务器,即组织所有服F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 18务器提供服务。这时,系统性能等于所有服务器性能的总和,远大于流量“峰值” 。这样,即缓解了“峰值堵塞”的压力,又降低了为调整系统性能而增加的投资。4. 3DNS 与现有系统的融合考虑到 DNS 系统变动的复杂性,3DNS 在与现有系统 DNS 服务器配合的时候可以采用两种方式。最佳的方式是将站点的所有域名解析均放置到 3DNS上进行解析,优点是可以充分利用 3DNS
30、的动态用户引导和强大的图形化管理界面,缺点是需要变动上级注册授权域 DNS 服务器地址。另外一种方式是将需要进行动态指向的域名分配到 3DNS 上进行解析,优点是对现有系统的变动较小,缺点是系统中存在多级、多台 DNS 服务器,不利于统一管理。两种方式分别对应不同的配置方式。对于一个域名中的所有记录,我们可以分为动态和静态记录两种,其中静态记录是相对不变的 DNS 解析记录,如 SOA、MX、NS 等记录类型;而动态记录则为需要用户通过两条链路进行访问的域名记录,通常情况下为 A 记录。4.1 改变上级注册授权域 DNS 服务器地址在每个域名注册的时候,均需要提供主辅 DNS 服务器,通常采用
31、提供域名注册提供商的 DNS 服务器或者自建 DNS 服务器。在一个完整的域名解析中,通常包含:SOA 记录 ,如: 86400 IN SOA . (2004122932 10800 3600 604800 86400 )A 记录,如: IN A 202.106.83.177MX 记录,如:F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 19 IN MX 5 202.106.83.178在 3DNS 中,可实现所有以上记录的解析。3DNS 上配置有完整的 BIND域名服务器系统,并且支持 NameSurfer 图形化界面管理。可以更为方便的管理静态记录。而对于需要做动态解析的记
32、录,通常是系统中的 A 记录,在 3DNS 中则通过 WideIP 配置方式实现。每个 WideIP 即是一个域名,并对应多位于不同链路(DataCenter)的 Virtual Server IP 地址。在用户访问 WideIP 的时候,则 3DNS将通过预先定义的算法给用户的 LocalDNS 返回相应的域名与 IP 对应记录。4.2 不改变上级注册授权域 DNS 服务器地址当条件限制,无法改变上级域名注册授权域 DNS 服务器地址的时候,则需要对系统原有授权域服务器配置进行修改,将动态记录委派到 3DNS 上进行解析。以 为例,配置方式如下:原 DNS 服务器系统配置: IN A 20
33、2.106.83.177更改为:www IN CNAME .wip IN NS .wip IN NS IN A IN A 219.172.65.109同时,在 3DNS 上配置 WideIP 对应不同的服务器地址。这样,当用户 LocalDNS 在请求 时,则将再次发送一个请求到 3DNS 请求 对应的地址,在获得 对应地址后,将 域名与 对应的地址进行捆绑,返回给发起 DNS 请求的用户,从而实现了对用户请求的引导。F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 205. 系统安全性考虑3-DNS 包含众多固有的安全特性,能够有效保护您的站点免受一般攻击,并为
34、其提供更强大的保护。3-DNS 发运时缺省设置为较高级安全模式,并提供了以下特性: 可根据对通信源、目的地或端口的监视结果,利用数据包过滤功能限制或拒绝网站发出或接到的访问。 3-DNS控制器采用远程命令行界面进行配置;并采用安全外壳(SSH)进行加密。 3-DNS控制器非常强大,能够有效防御一般攻击: Thwarts teardrop攻击 保护自己和服务器免受ICMP攻击 不运行SMTPd、FTPd、Telnetd或任何其它可被攻击的端口监控程序3DNS 本身也具有强大的解析能力,在正常配置下,3DNS 非递归查询可每秒钟解析 35000 个记录。通常的攻击很难达到 3DNS 的上限。在实际情况中,还可以通过在路由器上设置 ACL 访问控制列表来进一步增强系统的安全性。6. 成功案例 多链路接入及镜像站点中国工商银行总行网上银行接入系统中国农业银行总行网上银行接入系统中国交通银行总行网上银行接入系统招商银行总行网上银行接入系统光大银行总行网上银行接入系统腾讯(QQ)网站F5 3DNS+BIGIP 多链路接入方案F5 公司上海办事处 21 CDN蓝汛,ChinaCacheT CDN中国网通 SCDN华奥星空 CDN