1.1 GTM分配算法及运行机制
GTM控制器采用了完善的负载平衡算法和业界最先进的流量分配方法:
循环
全球可用性
LDNS持续性
应用可用性
地理分布
虚拟服务器容量
最少连接
Pkt/sec(数据包/每秒)
KB/sec(千字节/每秒)
往返时间
中继段(hop)
数据包完整率
用户定义服务质量(QoS)
动态比率
LDNS循环
比率
随机
以及最新的有第三方地址(Quova)信息资源数据库导入和支持DNSSEC功能
在GTM的每个WideIP中,可以选择三种算法,这三种算法按照预定的优先级进行排列。在通常情况下,选择Topology计算方法作为系统的优选算法,即所有的LocalDNS请求均被GTM计算其就近性,以保证绝大部分用户访问的最优化性。而RTT动态计算则作为Topology计算的补充算法,在Topology计算方式没有结果的时候,将用户请求定义到其本网的线路上。Global Availability 算法作为系统的默认算法,将所有无法计算结果并且不在Topology围之的LocalDNS请求,定义到系统的默认线路上。
1.1.1 地理分布算法
在GTM上,可以根据用户的LocalDNS地址来决定给用户返回那个地址。在GTM上可配置多个自定义区域,并将这些区域与链路相对应。当用户的LocalDNS发起请求连接GTM的时候,GTM将根据LocalDNS所位于的区域返回给LocalDNS适当的链路侧服务
器地址,引导用户从正确的线路进行访问。
由于F5公司已经有多个运营商详细的地址段信息,因此通过对运营商的IP地址网段的信息输入到GTM形成自定义区域表。
一个典型的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就进性的时候,将启动静态算法,将在地址围列表之的用户定义到正确的线路上去。
1.1.2 全球可用性算法
全球可用性算法主要用于灾难备份系统。通过GTM的健康检查算法,可判断各站点或线路的健康状态。并在配置的时候,将同一域名所对应的IP地址进行排序,在系统正常的时候,仅会有排名第一的服务器对外提供服务。只有在排名第一的服务器无法对外提供服务的时候,由排名第二的服务器接管服务。如果有多线路或者多站点则依次类推。
通常,我们采用全球可用性算法作为第三选择算法。在动态计算和地理分布均没有命中的时候,将所有的用户定义到默认的线路上。
1.1.3 RTT算法运行机制:
通过3DNS的RTT就近性算法会自动运算生成一个ldns就近分布表,通过这个动态的表,每个客户上来都会提供一个最快速的链路进行访问,由于站点有网通和电信的两条广域网线路。在3DNS上会针对站点服务器(以www.f5..cn为例)解析网通和电信的两个不同的公网地址。
对应于www.f5..cn域名,在3DNS上配置wideip:.f5..cn,对应两个Virtual Server:VS1:202.106.83.177,VS2:219.17.66.100。分别属于网通和电信两条线路分配的IP地址段。在3DNS部,同时定义两个DataCenter分别与网通和电信相对应。
用户的访问流程如下:
访问网银的用户在发起DNS请求时
(1) 首先向其所在运营商的Local DNS发起www.f5..cn域名的DNS请求。步骤2
(2) 运营商的Local DNS服务器通过递归算法查找到工行的主、辅DNS服务器。步骤3和4。
(3) 接受到请求的GTM首先查询在本地是否有该LocalDNS的就近性表项,如果存在,则直接给LocalDNS返回速度最快的服务器地址。如果不存在,则通知另外一台GTM发起对该LocalDNS的查询。步骤5。
(4) 两台GTM分别对LocalDNS进行Probe。例如网通侧3DNS查询该LocalDNS的RTT时间为150ms,而电信侧GTM查询同一LocalDNS的RTT时间为300ms,则此时在两台GTM都形成了该LocalDNS的对应就近性表记录。
(5) 接受到LocalDNS请求得GTM根据系统的就近性表返回相应的DataCenter的WEB服务器地址。步骤6。
(6) 在用户LocalDNS获得地址后,将该地址返回给用户。步骤7
(7) 用户向www.f5..cn发起访问。步骤8。
通过以上流程可以看出,通过动态计算方式,可以最为准确的估算出用户LocalDNS与两条线路之间的速度。通过GTM之间的信息交互,在两台GTM上形成就近性表,并根据该表返回用户的最佳访问地址。
GTM可以选择多种测试方法判断对local DNS的RTT时间, 包括:
DNS_Dot: 向local DNS发起一个包含”.”的测试, 也就是向目标LocalDNS请求root清单,该解析一般默认配置的DNS服务器均提供支持。
DNS_REV: 向local DNS发起LocalDNS本机IP的PTR请求
UDP:发起一个UDP的包, 看是否回应
TCP:发起一个TCP的包看是否回应
ICMP:发起一个ICMP 的ping 包, 看是否回应
在以上各检测方式中,无论目标系统返回那种类型的数据包,GTM均可认为是有效数据包而记录数据包往返时间,最终形成就近性表。
针对一个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动态算法作为优选算法,只要是GTM能检测到的地址,一律按照动态算法分配,保证系统最大的灵活性。
在实际的运行环境中,可能存在某些LocalDNS无法检测的情况,所以我们可以采用地理分布算法作为动态RTT算法的有效补充。
1.2 链路健康检查机制
两台GTM分别检查本地端的服务器地址和对端线路的服务器地址,两台GTM通讯是采用证书加密的方式进行。GTM检查的这些服务器地址实际上为BIGIP上配置的部服务器
的对外服务地址。
当一条线路出现故障的时候,两台GTM服务器均无法检测到对端线路的地址。所以在每台GTM服务器上均只解析本侧线路对应的服务器地址。
但在此时故障线路的GTM服务器无法接受请求,根据DNS的冗余机制。所有的用户请求均会发送到正常线路侧的GTM,所以此时所有的用户均将通过正常的线路进行访问。
1.3 系统切换时间
在采用DNS实现链路切换时,系统的切换时间主要取决于每个域名的TTL时间设置。在GTM系统里,每个域名如www.f5..cn均可设置对应的TTL生存时间。在用户的LocalDNS得到域名解析纪录后,将在本地在TTL设定时间将该域名解析对应纪录进行Cache,在Cache期间所有到该LocalDNS上进行域名解析的用户均将获得该纪录。在TTL时间timeout之后,如果有用户到LocalDNS上请求解析,则此LocalDNS将重新发起一次请求到3DNS上获得相应纪录。
因此,当单条线路出现故障时,3DNS将在系统定义的检查间隔(该时间可自行定义)检查到线路的故障,并只解析正常的线路侧地址。但此时在LocalDNS上可能还有未过时的Cache纪录。在TTL时间timeout之后,该LocalDNS重新发起请求的时候就将从GTM上获得正确的解析,从而引导用户通过正常的线路进行访问。系统检测间隔加上TTL时间之和则为系统切换的最长时间。通常,系统检测间隔设置为60秒,而GTM的TTL默认时间设置为30秒,所以系统切换的整体时间为小于2分钟,同时可以根据具体情况调整检测时间的间隔。
1.4 服务器负载均衡
BIG/IP利用虚拟IP地址(VIP由IP地址和TCP/UDP应用的端口组成,它是一个地址)来为用户的一个或多个目标服务器(称为节点:目标服务器的IP地址和TCP/UDP应用的端口组成,它可以是internet的私网地址)提供服务。因此,它能够为大量的基于TCP/IP的
网络应用提供服务器负载均衡服务。BIG/IP连续地对目标服务器进行L4到L7合理性检查,当用户通过VIP请求目标服务器服务时,BIG/IP根椐目标服务器之间性能和网络健康情况,选择性能最佳的服务器响应用户的请求。如果能够充分利用所有的服务器资源,将所有流量均衡的分配到各个服务器,我们就可以有效地避免“不平衡”现象的发生。
BIGIP是一台对流量和容进行管理分配的设备。它提供12种灵活的算法将数据流有效地转发到它所连接的服务器群。而面对用户,只是一台虚拟服务器。用户此时只须记住一台服务器,即虚拟服务器。但他们的数据流却被BIGIP灵活地均衡到所有的服务器。
这12种算法包括:
Ø 轮询(RoundRobin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常。
Ø 比率(Ratio):给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP就把其从服务器
队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
Ø 优先权(Priority):给所有服务器分组,给每个组定义优先权,BIG/IP用户的请求,分配给优先级最高的服务器组(在同一组,采用轮询或比率算法,分配用户的请求);当最高优先级中所有服务器出现故障,BIG/IP才将请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。
Ø 最少的连接方式(LeastConnection):传递新的连接给那些进行最少连接处理的服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
Ø 最快模式(Fastest):传递连接给那些响应最快的服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
Ø 观察模式(Observed):连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
Ø 预测模式(Predictive):BIG/IP利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片,其性能将达到最佳的服务器相应用户的请求。(被big/ip进行检测)
Ø 动态性能分配(DynamicRatio-APM):BIG/IP收集到的应用程序和应用服务器的各项性能参数如CPU、存和磁盘的占用情况,动态调整流量分配。动态性能分配可通过标准
SNMP或服务器端插件完成。
Ø 动态服务器补充(DynamicServerAct.):当主服务器群中因故障导致数量减少时,动态地将备份服务器补充至主服务器群。
Ø 服务质量(QoS):按不同的优先级对数据流进行分配。
Ø 服务类型(ToS):按不同的服务类型(在TypeofField中标识)对数据流进行分配。
Ø 规则模式:针对不同的数据流设置导向规则,用户可自行编辑流量分配规则,BIG/IP利用这些规则对通过的数据流实施导向控制。
当出现流量“峰值”时,如果能调配所有服务器的资源同时提供服务,所谓的“峰值堵塞”压力就会由于系统性能的大大提高而明显减弱。由于BIGIP优秀的负载均衡能力,所有流量会被均衡的转发到各个服务器,即组织所有服务器提供服务。这时,系统性能等于所有服务器性能的总和,远大于流量“峰值”。这样,即缓解了“峰值堵塞”的压力,又降低了为调整系统性能而增加的投资。
因篇幅问题不能全部显示,请点此查看更多更全内容