心访问控制。
在GTM内部,可以有以下算法保证用户始终访问到最佳的数据中心节点。
? 循环 ? 全球可用性 ? LDNS持续性 ? 应用可用性 ? 地理分布 ? 虚拟服务器容量 ? 最少连接
? Pkt/sec(数据包/每秒)? KB/sec(千字节/每秒) ? 往返时间 ? 中继段(hop) ? 数据包完整率
? 用户定义服务质量(QoS)? 动态比率 ? LDNS循环 ? 比率 ? 随机
第 6 页 共 23 页
在实现优选算法的同时,GTM还将动态检查每个数据中心的业务实际运行状态。如果发现某个数据中心的某个业务出现故障,则将其和其相关业务从DNS解析选择组中去除,而只返回给客户端仍然正常工作的数据中心业务地址。
1.3 网上银行链路虚拟化(链路负载均衡)
由于采用了多条链路接入,在实现链路虚拟化的时候,必将面临将系统中的一台或多台服务器同时对多条链路提供服务的问题。在系统设计中,我们采用了F5 BIG-IP LTM/LC来实现了多出口接入。
如图:
在BIG-IP LTM/LC实现多链路接入的时候,采用了BIG-IP LTM/LC上的
第 7 页 共 23 页
AutoLastHop技术。对于每条线路,在BIG-IP LTM/LC上均配置一个与线路分配网段对应的IP地址,这些IP地址均映射到后端的一台或同一组服务器。当用户访问不同地址的时候,BIG-IP LTM/LC上将建立每个请求与来源设备Mac地址的对应关系表。即将每个用户的请求连接和上端的路由器MAC地址进行对应,在服务器数据返回的时候,则根据该对应表将返回的数据包发送到相应的路由器,避免了数据往返通路不同的问题。
通过AutoLastHop技术,BIG-IP LTM/LC得以内部的单台或者一组服务器对外映射成为多个服务IP地址和服务端口,以提供DNS解析选择。
当一个系统中没有GTM 存在时,BIG-IP LC将自行负责DNS 解析,自动将用户引导到最佳的链路上。同时,BIG-IP LC对每一条接入链路的健康状态进行检查,一旦发现某一条链路发生故障,则对外停止该链路上的所有服务地址的解析。保证用户访问的持续性。
第 8 页 共 23 页
1.4 数据中心和链路虚拟化的配合
当网上银行系统存在多个数据中心,并且一个或多个数据中心存在多条链路时,在系统设计中就会同时存在GTM 与LC。GTM与LC之间采用iQuery协议进行加密通讯。该协议采用443端口,采用标准SSL加密通讯协议对传输内容进行封装。在协议层全部采用业界标准XML进行数据传输。
?通过iQuery协议,GTM可以从BIG-IP LC上获得以下主要信息:
Virtual Server定义:通过配置Auto Discovery,GTM可以自动从LC上获取所有的VS定义和Link定义,从而不需要在GTM 中对这些配置进行重新定义和配置。当在LC上进行VS的添加或删除时,GTM可以自动在配置中对这些VS进行添加和删除,以供WideIP算法进行选择。
Link Throughput: 链路的带宽使用状态,即每条链路实际使用的带宽大小,GTM获得该信息之后,可以通过带宽负载均衡算法对用户的访问请求进行动态调整分配,使每条链路的带宽使用保持平衡。同时,在GTM上也可以通过限制每条链路的使用带宽来调整分配算法,避免单条链路使用带宽达到其极限值,避免网络层丢包造成用户访问失败。该设置也适用于不同的数据中心之间的链路选择。
Link Status:链路的通断状态。即每条链路的当前健康状态。GTM获得该信息后,则可以通过链路当前的健康状态决定是否将新的用户请求分配到该链路上。如果发现链路故障,则将该链路关联的所有VS设置为不可用状态,并停止将新的用户分配到这些VS上,从而避免用户访问失败。
VS Connections: 每条链路上每个应用的当前并发连接数。GTM获得该信息后,可以通过负载均衡算法和上限设置方法平衡每条链路上各个应用的实际分配连接数,避免单个VS 在单条链路上的连接数过高而导致用户访问失败。该设置也适用于不同的数据中心之间的链路选择。
第 9 页 共 23 页
VS Kilobytes/Second: 即每条链路上的VS的流量值。GTM获得该信息后,可以通过负载均衡算法和上限设置的方法平衡每条链路上各个应用的实际适用带宽,避免单个VS在单条链路上的连接数过高而导致用户访问失败。该设置也适用于不同数据中心之间的链路选择。
?在GTM 从LC上获取信息的同时,也可以驱动LC 进行 Round Trip Time算法的探测工作
当GTM 收到一个Local DNS请求时,会首先查找本地的RTT表。如果请求的Local DNS 在该表中,则直接返回RTT 值最小的链路上的VS给Local DNS。
ldns {
address 61.136.178.229 cur_target_state 419446729 ttl 2419199 probe_protocol tcp path {
datacenter \ cur_rtt 189850 cur_hops 0 cur_completion_rate 10000 cur_last_hops 0 } path {
datacenter \ cur_rtt 57209 cur_hops 0 cur_completion_rate 10000 cur_last_hops 0 }
第 10 页 共 23 页