资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
1 / 5累积:技海拾贝|CUMULATION浅谈通过 GTM 进行 DNS 的智能解析文:东软信息技术服务有限公司 马新元什么是 DNS 的智能解析目前中国的网络南北割据,电信、网通等不同线路的互访颇为困难,而 DNS 智能解析是 针对目前国内电信、联通以及移动等线路互联互通提供的一种解决方案。具备智能解析能 力的 DNS 除了具备一般的基本 DNS 解析功能外,还可以自动识别 DNS 请求发送者的来 源,并根据其将域名智能的解析到双线路机器的网通或电信的 IP 或位于不同 IDC 中机器 的 IP, 以便浏览者就近访问你的网站,而不会因为线路不同而导致访问慢。DNS 智能解析的原理DNS 智能解析的基本原理是识别用户的来路,并且根据用户的来路,通过独有的算法,把用户分配到网站离用户最近的服务器上。例如我们将域名托管在可进行免费 DNS 智能查询的 DNSPod,则 DNSPod 可根据用户的来源,让网通线路的用户访问到网站的网通 IP 或者让沈阳的用户访问到位于沈阳 IDC 机房中的服务器(这一切对用户而言是无感知的),而不需要像早年间很多网站为了保证不同线路的访问质量,建立一个网站的若干镜像站,让用户手动去选择自己要访问的站点。智能 DNS 的实现方式有软件和硬件,软件中有久负盛名的 bind,而硬件中有 F5 的GTM 。同时也有提供 DNS 服务的 DNSPod 等。利用利用 F5 GTM 进行进行 DNS 的智能解析的智能解析F5 GTM 全称为 Global Traffic Management 即全局传输管理,它是一种广域网负载均衡设备,以 DNS 解析为主要工作,可处理多个数据中心的流量分配。与它相对应的还有 LTM 全称为 Local Traffic Management 即本地传输管理,是一种局域网负载均衡设备,以 TCP/UDP 流量分发处理、优化为主要工作,主要处理在一个数据中2 / 5心内的流量分配,可以处理到流量的七层内容。在本文中我们主要讨论如何利用 GTM进行域名的智能解析。在现实的生产环境中,一个有 DNS 智能解析需求的网站,其服务器往往分布在不同的IDC 机房中,这些 IDC 使用不同的线路对外提供服务;或者其服务器位于同一个 IDC机房中,但该 IDC 机房为该服务器提供了不同线路的出口。对应这种情况,在 GTM中将使用某一线路的数据中心抽象为一个概念 Datacenter。在一个 Datacenter 中包含了大量的服务器,GTM 中将其抽象为一个概念 Server。每个服务器可以配置一个或多个 IP,对应具体的这些 IP 以及相关的端口,GTM 将其抽象为一个概念Virtual Server。Datacenter、Server、Virtual Server ,GTM 通过以上三个概念完成了对 IDC 机房中物理网络的描述。那么具体的 Datacenter、Server、Virtual Server 在 GTM 中担任何种角色呢?Virtual Server:GTM 中的最小 object,是 Server 和 Pool 的逻辑成员,其IP 即为 GTM 最终提供解析的结果。Server:用来代表一个服务器实体,类似于 LTM 中的 node,有 bigip server,non-bigip server 两类,隶属于 Datacenter 中,同一 server 不应同时存在于两个 Datacenter 中。Datacenter:组织 Server 的容器,表示一个具体的数据中心。在完成对物理的网络的标示以后,即涉及到如何将不同用户所请求的域名地址正确的映射到具体的 IP 上。这里就涉及到 GTM 的智能解析方式。GTM 通过 wide IP 和pool 来实现这一功能。那么 Wide IP 和 Pool 又是何方神圣?Pool:是一个资源池,用来组织 Virtual Server,是 Wide IP 的配置要素,同一 Virtual Server 可以同时属于多个 Pool。Wide IP:对外呈现 GTM 所负载的智能域名,其下包含一个或多个 Pool。说完了这些比较枯燥的概念,我们用一个具体的例子来说明 GTM 智能解析的工作模式。假设情景:我们有一个网站 http:/www.somewhere.com,该网站在北京和上海分别放置了一台镜像服务器对外提供服务。北京的服务器 IP 为 202.96.1.2 是一个网通地址,上海的服务器 IP 为 116.238.1.2 是一个电信地址。现在我们希望使用网通线路的用户在访问这个网站时,实际访问到的是北京服务器的 IP 地址 202.96.1.2,电3 / 5信线路的用户在访问这个网站时实际访问到的是上海服务器的 IP 地址116.238.1.2。(以上域名及 IP 均为虚构,特此说明)GTM 如何来完成这个需求呢:大体上分为两个阶段:第一阶段,描述物理资源;第二阶段,制定智能解析策略。以下为具体步骤:第一步:建立电信和网通线路的 Datacenter首先我们需要在从我们的网络运营商那里获得网通和电信线路的地址池,并在 GTM 中建立对应的地址池 CNC-Address、CT-Address。其次,我们将分别建立对应网通和电信线路的 Datacenter: DC_CNC,DC_CT。最后我们将网通地址池 CNC-Address 与网通 Datacenter 相对应 ,电信地址池 CT-Address 与电信Datacenter 相对应,这样就基本完成了 Datacenter 的建立。第二步:建立电信和网通线路的 Server我们在 GTM 中创建一个 Server 来表示网通线路的服务器,命名为 server_cnc,将其加入到网通 Datacenter DC_CNC 中,表明该服务器是属于网通 Datacenter 的,并为其创建 IP 地址为 202.96.1.2 的 Virtual Server 用来作为 GTM 最终提供解析的结果。同理,我们创建电信线路的 server,命名为 server_ct,并将其加入电信 Datacenter DC_CT 中,并为其创建 IP 地址为 116.238.1.2 的 Virtual Server 用来作为 GTM最终提供解析的结果。通过以上两步,我们完成了对物理资源的描述,在以下的步骤中,我们将进行智能解析策略的制定。第三步:创建资源池 Pool我们在 GTM 创建一个资源池 Pool_www.somewhere.com , 并将刚才建立的Virtual Server:server_cnc、server_ct 加入到这个池中。在这个新建立的资源池中我们将为这些 Virtual Server 创建规则,以确定当 DNS 请求被本资源池响应时,具体将哪个 Virtual Server 的 IP 作为解析结果返回给用户。在本例中,我们将按照 Topology 的方式来决定具体将哪个 Virtual Server 的 IP 提供给用户。所谓 Topology 的方式,即按照发起 DNS 解析请求者的 IP 的归属来确定使用哪些Virtual Server 来进行响应。GTM 中所定义的 Topology 可以在Continent/Country/IP Subnet/ISP 四个层次进行传入 IP 的分类。本例中我们创建4 / 5了网通线路和电信线路的地址池,那么用户发起的 DNS 解析请求就将按照用户的 IP属于哪一个地址池,来确定是将电信服务器还是网通服务器的 IP 返回给用户。第四步:建立域名到资源池的映射。最后我们创建一个 Wide IP :www.somewhere.com,表明:对外该 GTM 接受所有对该域名的查询请求,并将第三步建立的资源池 Pool_www.somewhere.com 添加到该 Wide IP 中。表明所有对 www.somewhere.com 这个域名的解析都将由资源池 Pool_www.somewhere.com 进行。至此,一个最简化版本的智能解析就完成了。此时一个网通线路的用户在浏览器中输入网站网址 http:/www.somewhere.com,用户的所配置的网通 DNS 将向我们的 GTM 发起该域名的查询请求。我们的 GTM 在接收到该查询请求后,将使用资源池 Pool_www.somewhere.com 对该域名进行解析,由于该域名查询请求的发起者 IP 地址包含在网通地址池中,GTM 就将网通线路服务器的 IP 地址返回给发起查询的网通 DNS,网通 DNS 进一步将该 IP 地址作为查询结果返回给该用户。这样用户事实上最终访问到的服务器即为该网站的网通线路服务器,但整个过程对于用户而言是无感知的。单纯从以上的 DNS 智能解析方式来说,GTM 的智能解析方式与一般的 bind 服务器通过访问控制列表结合视图来进行智能解析的方式差别并不大。但在实际的应用中,GTM 提供了几种比较有特点的功能以提高其智能解析能力。由于篇幅所限,本文将就比较有代表性的功能 Health Monitors 以及 iRule 进行一下说明。其他的系统特性,可以在 http:/ask.f5.com 网站上获取到最新的资料。首先介绍一下 Health MonitorHealth Monitor 一般译为健康检查,在 GTM 中将会在 Pool,以及 Server 中加入对 Virtual Server 的健康检查,以确定该服务器是否可以正常的对外提供服务。例如在 Pool 中使用了健康检查后,如通过健康检查,某 Virtual Server 的服务处于不可用状态,Pool 将会利用已定义的负载平衡策略将其他可用的 IP 返回给用户,以保证在部分服务器宕机的情况下,用户仍可以获得所需服务,从而保证用户的使用体验。GTM 系统中默认创建了几种健康检查的脚本,但是我们也可以根据需要进行自定义健康检查脚本的编写,自定义的健康检查脚本可以根据检测内容的不同,定义检测的类型、时间周期、超时标准,服务端口等信息,满足用户的检测需求。下面简单介绍一下 iRule通过使用 F5 由事件驱动的 iRule,可以定制全局流量的动态分配。GTM 可以深入查看 DNS 消息,向期望的数据中心、池或虚拟服务器分配应用流量。这一功能可以减少5 / 5延迟,加强针对恶意攻击的保护,并改进应用性能。在 GTM 中 iRules 主要使用在Wide IP 模块中,当我们定义了多个资源池的时候,可以设定 iRule,让符合特定条件的流量连接到特定的资源池进行处理。这里所指的特定条件可以是 DNS 查询请求发起者的 IP 地址,也可以是 URI 这样的通用资源标识符。iRule 规则使用的语法为TCL,目前 GTM 可以支持 TCL8.4 版本的语法。以下使用一个小例子来说明 iRules 的用法:下面是一个简单的 iRulewhen DNS_REQUEST if IP:addr IP:client_addr equals 10.10.10.10 pool my_pool当我们为一个 Wide IP 添加了这样的 iRule 以后,每当这个 Wide IP 监听到 DNS 请求发送者的 IP 地址是 10.10.10.10,就会将这个请求包传递给 my_pool 来进行处理。可见,使用 iRule 我们将可以更加灵活的定制智能解析策略。使用智能解析时面临的问题GTM 是通过用户的来源 IP 来返回不同的解释 IP,而实际上,并不是实际用户直接访问我们的 DNS,而是用户所使用的 DNS(比如说沈阳 ADSL 用户的默认 DNS)负责访问我们的 DNS,如果用户自行修改了 DNS,比如说电信的用户硬要用网通的DNS,或者网通的用户使用国外的 DNS(比如 opendns 之类的),就会导致判断失误。对于这种问题,目前尚无较好的解决方法。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号