目标

了解BIG-IP DNS系统智能解析的重要要素

4.1、智能解析

GSLB(global server load balancing)在域名解析程序中添加了智能解析的特点,直接返回给客户最好的解析结果。比如BIG-IP DNS 可以使用基于拓扑负载均衡(topology-based load balancing)的能力去检查用户的LDNS ip,从而给予他们最优解析结果。持久性(persistence)的特点让用户持续解析同一个ip地址。监控(monitor)可以检查监控健康状况、可用性和虚拟服务的性能等指标,监控还可以收集纳管LTM上vs的详细状态,从而计算出最优解。代理(probe)可以监控LDNS和部署了BIG-IP的数据中心的路径,度量值(metrics)收集完成之后,这些数值将分享到同步组中的所有BIG-IP DNS系统中,让每一个DNS系统都使用相同标准做计算。

在描述智能dns之前需要先了解一下网络拓扑中的组件及功能。

网络拓扑元素

  • 数据中心(data centers)
  • 链路(links)
  • 服务器(servers)

数据中心是一个逻辑单位,你可以将多个dns放入同一个数据中心中,这样在收集数据的时候就会选择数据中心中的一个设备去检测,并同步到整个组内,在这个逻辑数据中心中,我们可以关联链路和服务器,链路就是通往运营商的物理线路或者是链接其他数据中心和本数据中心的线路,一个数据中心可以有多条线路,服务器是数据中心的成员,服务器是virtual servers的载体,可以是F5的设备,也可能是其他品牌的设备,还可以是一个独立的服务器,这些信息都需要手工配置。

逻辑网络元素

  • 虚拟服务器(virtual servers)
  • 池(pools)
  • 宽ip(wide ip)

virtual servers就是一个ip:port的组合,代表server上的一个服务,这个ip地址就是智能dns的可选解析地址。他可能跑在F5的LTM上,也可能跑在非F5的负载均衡设备上,还有可能是一个独立的服务器,比如IIS或者数据库服务。pool是virtual servers的集合,wide ip是FQDN,他可以关联了一个或者多个pool。

一般情况下,GSLB能力是为一个特定的FQDN提供ip。GTM只能提供A、AAAA或者CNAME的响应类型。BIG-IP dns 扩展能力可以提供CNAME、MX、SRV和NAPTR的响应类型,基于此,你可以给诸如手机网络做一些配置一提供更近,更快的服务响应。

4.2、Wide IP

Wide ip是做智能dns的要素,是配置智能dns的第一位的要素。Wide ip将匹配到的FQDN绑定到一个或者多个虚拟服务上,当一个LDNS将解析请求发送到一个Wide ip上时,wide ip将会检测哪个虚拟池有资格响应这个请求,并配合负载算法进行选择虚拟池。

Wide IP有两次负载规则的计算,第一次先选择最优的pool,第二次选择pool中最优的virtual server,然后将virtual server作为最优解回复给客户端。

Big-IP系统使用监控(monitor)和探测器(probe)去监测pool和virtual server的可用性和性能,以此数据作为选择标准。

监控(monitor)和探测器(probes)

监控将会直接或者间接的方式进行检测(间接可能是通过snmp进行检测),如果检测失败,dns就会放弃解析到这个地址。

探测器用于数据中心和客户端LDNS之间进行检测,默认是没有配置的,你需要进行配置。探测器的配置很灵活,可以去除特定LDNS的探测。

4.3、数据中心(data center)

逻辑关系

data center是server的集合,一个server只能关联一个data center。server是virtual server的集合。

配置data center的时候,name信息为必填,可选的是location、contact等。

实验

为智能解析创建一个data center

GUI

路径:DNS ›› GSLB : Data Centers : Data Center List

配置:

  • Name:training_dc
  • Description:seattle
  • Contact:administrator

TMSH

create gtm datacenter training_dc location seattle contact administrator
  • 1

用相同方式创建alternate_dc,位置london。

create gtm datacenter alternate_dc location london contact administrator
  • 1

预期结果:

创建完成之后应该全都是蓝色方块,因为没有数据中心中还没有可用的server。

4.4、服务器(server)

server的设备种类

  • BIG-IP DNS
  • BIG-IP LTM
  • Non-F5 server

4.4.1配置一个BIG-IP DNS系统作为服务器

BIG-IP DNS 系统有两个作用,一个是智能解析,另一个是个收集度量值。当你添加了一个BIG-IP作为一个服务器(server),并且关联了数据中心的时候,你就已经将其配置成探测器,它可以收集并同步度量值到其他BIG-IP DNS 系统中。

你需要配置如下参数:

  • F5设备的名字,ip,关联的数据中心
  • 首选探测器和备选探测器
  • 数据同步方式
  • 是否自动发现virtual server
  • 是否自动发现link

如果这个server在一个nat服务器后边,你需要知道nat之后的地址和nat之前的地址,在上图中,Address位置填写的是nat之后的地址(公网地址),Translation填写的是nat之前的地址(内网地址)。

实验

添加一个Big-IP DNS 作为server

GUI

路径:DNS ›› GSLB : Servers : Server List ›› New Server…

配置:

  • Name:seattle_dns_server
  • Product:BIG-IP System
  • Data Center:training_dc
  • BIG-IP System Devices:Device Name:gtm.com Address:10.10.10.13
  • Health Monitors:bigip

TMSH

create gtm server seattle_dns_server product bigip devices add { gtm.com { addresses add {10.10.10.13}}} datacenter training_dc monitor bigip
  • 1
预期效果

图形界面应该显示一个绿色圆圈,表示识别成功。注意这里的ip地址必须为self ip,不能使用Management ip,否则无法实现自动发现功能。

4.4.2配置一个BIG-IP LTM系统作为服务器

LTM是F5设备中的一个功能,但LTM不仅能作为F5的负载均衡设备,同样可以用作DNS场景中的server,如果将LTM接入到DNS系统中,我们可以使用额外的一些功能,比如可以让LTM提供virtual server的状态和数据中心到LDNS的度量值信息。

你需要配置如下参数:

  • F5设备的名字,ip和关联的数据中心,如果LTM有故障转移功能,你需要添加所有的LTM到server中。v13版本支持添加8个LTM在同一个设备组。早期版本支持2台
  • 一个探测器池和健康检查
  • LTM和GTM数据同步方式
  • 是否需要自动发现virtual servers
  • 是否自动发现link
LTM和GTM之间有nat设备

如下图,中间有个防火墙做了nat配置,在添加server的时候DNS配置中的Address需要配置成nat后的202.168.1.31,而Translation需要使用nat之前的ip10.10.1.31。virtual server也同理。

virtual server的配置方式有两种,一种是自动发现,一种是手工配置,但是如果LTM和GTM之间有NAT,简言之,就是你的配置中使用了Translation,你就没法使用自动发现了。如果想使用自动发现,需要避免nat在这里干扰。

实验

添加一个Big-IP LTM 作为server

GUI

路径:DNS ›› GSLB : Servers : Server List ›› New Server…

配置:

  • Name:london_ltm17_server
  • Product:BIG-IP System
  • Data Center:alternate_dc
  • BIG-IP System Devices:Device Name:ltm.com Address:10.10.17.13
  • Health Monitors:bigip
  • Virtual Server Discovery:enabled

TMSH

create gtm server london_ltm17_server product bigip devices add { ltm.com { addresses add { 10.10.17.13 } } } datacenter alternate_dc monitor bigip virtual-server-discovery enabled
  • 1
预期效果

当建立完成后,你在DNS ›› GSLB : Servers : Server List界面看到的应该是蓝色方块图标,状态时unknow,Virtual Servers的数量应该为0个,虽然你的ltm上有两个可用的vs,但是他也发现不了,因为GTM和LTM之间还没有建立起iQuery的会话。

4.4.3建立iQuery会话

iQuery基础

当BIG-IP DNS 系统和其他系统,比如LTM的建立连接的时候,他们需要使用F5私有的协议,iQuery进行交互数据。使用的代理程序做big3d,他监听tcp 4353端口,并且使用ssl对交互的数据进行加密。在iQuery会话建立之前,BIG-IP DNS系统需要和每一个serve设备交换SSL证书,证书交换是由一个叫bigip_add的脚本执行完成的。如果证书错误或者不在有效期,则不能建立iQuery会话,默认自签名证书是3650天,如果手工更新证书,默认更新有效时间为365天,需要手工调整成3650天。

bigip_add脚本需要在每次有新BIG-IP系统加入到组织中的时候执行一下。脚本会将本地BIG-IP DNS 系统的SSL证书追加到对端/config/big3d/client.crt认证列表中,将对端SSL证书添加到本地的/config/gtm/server.crt认证列表中。

命令:

## LINUX bash
bigip_add [<remote-bigip_selfip>]
## Appliance mode
bigip_add -a <username>@<remote-bigip_selfip>
## TMOS shell
(tmos)# run gtm bigip_add [<remote-bigip_selfip>]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
iQuery排错

你可以使用LINUX bash下的iqdump命令进行排错。

iqdump <remote-bigip_address>
  • 1

如果建立成功,iqdump会回显XML的信息,如下图。

big3d agent

big3d运行在所有的BIG-IP系统中,收集性能信息,持续监控BIG-IP系统,并提供智能解析的ip是否可用,同时他还监控LDNS到域名所在数据中心的路径,一旦收集足够的数据,他就会同步到所有的BIG-IP DNS系统中。

big3d收集的信息:

  • 网络路径来回时间
  • 路径丢包数量
  • 路径上的跳数
  • server的性能
  • virtual server的可用性和性能

在使用big3d的时候,需要确保版本一样,你可以使用big3d_install进行交互式安装。

在使用big3d_install的时候,证书交换如下图所示:

  • 本地BIG-IP DNS 系统的SSL证书拷贝到对端/config/big3d/client.crt认证列表中。
  • 对端SSL证书将会添加到本地的/config/gtm/server.crt认证列表中。

命令:

## LINUX bash
big3d_install <remote-bigip-address>
## TMOS
(tmos)# rum gtm big3d_install <remote-bigip-address>
  • 1
  • 2
  • 3
  • 4

实验

延长证书时长

GUI

路径:System ›› Certificate Management : Device Certificate Management : Device Certificate >> renew

配置:

  • Common Name:gtm.com
  • Lifetime:3650

建立iQuery会话

网页和tmsh都没法处理这一步,需要在LINUX bash上执行bigip_add

LINUX bash

## LINUX bash
config # bigip_add 10.10.17.13
  • 1
  • 2

注意:
在配置的过程中,有可能网络之间有防火墙或者nat,需要对这些设备进行配置,可以使用telnet来确定是否通畅,同时要注意,F5的接口默认是被限制的,需要放通tcp 4353端口,如果由于密钥失效导致无法建立,也可以清除/root/.ssh/known_hosts的相关条目。

iQuery排错

LINUX bash

## LINUX bash
config # iqdump 10.10.17.13
  • 1
  • 2

预期结果

在执行bigip_add之后会输入密码,如果加入成功会出现done的回显,london_ltm17_server的状态会从unknown变成available,图标会从蓝色方块变成绿色圆圈,这表明iQuery会话建立完成,同时看到virtual servers显示为2,表明自动发现成功,如下图。

在使用iqdump的时候,会看到<getconfig_element>、<server>、<vip>等数据,这表明已经成功传输数据。

如果建立不起来iQuery会话,可能是由于ssh会话建立不起来,我们可以使用rm /root/.ssh/know_hosts清除一下,再重试bigip_add,还有可能是4353端口没有开放,我们需要在Network ›› Self IPs的位置放开4353端口,并通过telnet检查是否开通成功,当然还有可能是证书失效,我们需要更新证书并重试bigip_add。

如果是自动发现不成功,可能由于你在配置DNS服务器作为server的时候,使用了Management ip进行会话的建立。

4.4.4配置一个非F5设备作为server

有的时候vs并不是通过F5负载均衡进行暴露的,而是一个真实的服务器或者其他品牌的负载均衡,但不论如何提供服务的,我们都可以将其添加到server中。

你需要配置如下参数:

  • server名字,ip,位置
  • 健康检查
  • server上的virtual server

实验:

添加一个非F5的设备

GUI

路径:DNS ›› GSLB : Servers : Server List ›› New Server…

配置:

  • Name:seattle_host1_server
  • Product:Generic_Host
  • Address List:172.16.20.3
  • Data Center:training_dc
  • Health Monitors:tcp
  • Virtual Server Address:172.16.20.3
  • Virtual Server Port:80

预期结果:

添加完成之后,需要等几分钟,server和virtual server图标会变成绿色圆圈,即为成功。

4.4.5定义链路(links)和路由转发器(routers)

Links是连接数据中心和互联网的链路,BIG-IP DNS 跟踪链路的性能,链路性能直接影响后端池、数据中心, wide ip和分布式应用的可用性。big3d收集和分析链路的属性,这些数据用于智能dns选路的依据,如果带宽不一样,你还可以使用权重来定义多条链路的承载量。

如果数据中心只有一个链路,就不需要去配置他了,如果有多个链路,你需要配置,因为他可以被监控,监控数据将会影响解析结果。

链路监控

种类:

  • bigip_link:这种监控获取一些数据,比如吞吐,而不仅仅是链路up/down状态,这种数据是从TMM的mcpd进行获得。
  • gateway_icmp:使用ICMP协议进行监控,可以使用gateway_icmp去监控一个池子中的成员,从而监测可用性。

4.4.6wide ip pool

池子代表的是一个或者多个虚拟服务(virtual server)的集合,虚拟服务就是一个ip:port。只有预先被定义好的或者被自动发现的virtual server才能被调用。一个virtual server可以属于多个pool,一个pool可以被一个或多个wide ip调用。

wide ip pool参数

可用的类型(tpye):
  • A
  • AAAA
  • CNAME
  • MX
  • NAPTR
  • SRV
三个层级的负载均衡:
  • preferred(首选)
  • alternate(备用)
  • fallback(回退)

默认使用preferred,只有当preferred不能选择出一个有效的结果的时候,才会使用alternate的算法,比如,preferred使用RTT算法的时候,LDNS发送了一个请求,但是检测数据还没有收集完路径数据,则会使用alternate,alternate尽量静态算法,比如轮询、权重等。如果alternate也没能计算出一个有效结果时候,则会使用fallback算法,fallback算法是不会关心解析结果是否可用,他只是回复一个结果而已。相关算法会在后续详细介绍。

配置TTL:

默认30s,你可以手工修改ttl,他将会作为dns解析的ttl值。

Fallback Ip Address:

使用后备 ip 可防止将查询传递到本地 BIND。通常在没有开启BIND的时候使用后备ip地址。

Dynamic Ratio:

在使用动态负载的情况下,由于收集度量值需要一些时间,在这段时间内,解析的结果可能会是相同的ip地址,这造成了流量不均衡,为了避免这种情况,我们可以是用动态权重(dynamic ratio),当开启了这个能力,他会将部分流量分担到次优ip上。

可以使用dynamic ratio算法有:

  • Round Trip Time
  • Vs Score
  • Completion Rate
  • Hops
  • Kilobytes/Second
  • VS Capacity
  • Quality of Service
  • Least Connections

返回多个解析:

默认BIG-IP直接一个最优的结果,你可以使用Maximum Answers Returned回复最多500个最优解。

Verify Member Availability:

正常情况下,wide ip只解析monitor健康检测成功的ip,如果你有某些需求,不关心健康检测结果,你可以去掉Verify Member Availability的对勾选项,这样他会使用所有pool中的virtual server。

实验

创建一个wide ip pool

GUI

路径:DNS ›› GSLB : Pools : Pool List ›› New Pool…

配置:

  • Name:train10_http1_pool
  • Type:A
  • Member List:列表中勾选

TMSH

create gtm pool a train10_http1_pool members add { london_ltm17_server:/Common/a london_ltm17_server:/Common/vs_10.10.10.10 seattle_host1_server:172.16.20.3 }
  • 1
预期结果

我们可以使用show gtm pool a train10_http1_pool detail命令进行查看,会发现他们的状态都是可用的(available),其中两个london的vs是通过bigip获得的健康检查结果,seattle的vs是通过tcp监控获得的健康检查结果。

4.4.7 配置 Wide IP

可用的类型(tpye):
  • A
  • AAAA
  • CNAME
  • MX
  • NAPTR
  • SRV

一般情况,wide ip一般关联1-2个pool,pool的类型需要和wide ip的类型是一致的。

如图,www.f5.com是解析结果是一个A记录,使用轮询的负载均衡算法,关联了一个pool,这个pool包含三个virtual server,分别是216.34.94.32、192.65.100.106、207.17.117.20,当被请求时候,会通过二次负载的算法找到一个最优解,第一次是通过wide ip 找最优pool,第二次是从pool中找最优vs。

Wide ip参数:
Name:

Wide IP 的name是必须参数,这个就是你想要智能解析的dns域名,你可以使用通配符在wide ip name中,*代表多个字符,?代表单个字符,这可以帮你减少别名的数量。举个例子,www.f5.com是最精确的请求,智能匹配到www.f5.com这个域名,而ww?.f5.com可以匹配到www1.f5.com和wwa.f5.com,*.f5.com则可以匹配到以f5.com结尾的所有域名。

Alias:

别名,如果配置了别名,则在匹配到别名的时候使用关联的wide ip策略进行解析,如果其他的wide ip和别名同时可以处理一个请求,则会优先按照wide ip的策略进行处理。

Load Balancing Method:

wide ip一般会关联多个pool,这里的负载均衡策略是针对第一次wide ip进行pool选择时候配置的。

Persistence:

持久性功能,当开启,相同的源地址将会解析到同一个解析记录,这适用于有状态应用,可以配置TTL用于配置时间,同时可以针对ip地址范围进行持久性配置。

Last Resort Pool:

只有在所有pool都不能使用的情况下,才会启用Last Resort Pool,这个pool通常配置致歉服务器。

在使用Last Resort Pool的时候,你需要注意wide ip关联的pool不能使用Return to DNS作为fallback负载均衡的策略,否则不能生效。

实验

创建一个wide ip

GUI

路径:DNS ›› GSLB : Wide IPs : Wide IP List ›› New…

配置:

  • Name:www.train10.com
  • Type:A
  • Pool List:train10_http1_pool

TMSH

create gtm wideip a www.train10.com pools add { train10_http1_pool }
  • 1
测试

当使用dig +short @10.10.10.50 www.train10.com进行请求的时候,他会在pool其中使用配置的轮训方式进行交替响应,但是这个轮询结果也取决于你的cpu个数,因为每一次响应都是由一个cpu进行的处理,轮训算法也是基于当前cpu做的,所以假设F5有4个cpu,你访问的前四次可能都是一个结果。因为这四次被四个不同cpu处理。

在Statistics ›› Module Statistics : DNS : GSLB ›› Pools : train10_http1_pool : A中,可以看到每一个请求都是被preferred负载算法处理了,使用的是pool配置好的轮询算法。

配置完别名,比如*.abc.com,则使用dig +short @10.10.10.50 wwws.abc.com进行解析,会发现解析结果和www.train10.com的解析结果是一样的。但是w.asd.com是不能解析的,因为匹配不到wide ip或者别名。

4.4.8状态信息和统计信息

黑色的圆形是手工点击disable,黑色菱形是手工点击offline,红色菱形是由于检测失败,蓝色方块是未知状态,比如没有配置监控,绿色圆形表示状态正常。

F5 GTM DNS 知识点和实验 4 -智能DNS基础相关推荐

  1. F5 GTM DNS 知识点和实验 3 -加速dns解析

    第三章:加速dns解析 目标: 了解一个请求是如何发送到一个dns资源池中的,并且了解如何监控资源池中成员的健康状态 使用dns缓存对dns请求进行加速 使用dns express进行对dns请求进行 ...

  2. linux+dns的acl,DNS服务器之三:DNS高级用法(DNS转发、ACL、智能DNS及日志系统) | 旺旺知识库...

    前面两篇DNS文件讲解了基本的安装配置和主从复制: 本文将深入讲解DNS服务器bind98的高级用法,主要包括: DNS转发配置 ACL应用与配置 使用bind实现智能DNS BIND日志系统介绍 一 ...

  3. Linux随笔16-主从DNS服务搭建以及智能DNS服务搭建、基于CentOS7.6编译安装MySQL-5.7.32

    Contents 1. DNS主从服务器搭建 1.1. DNS简介 1.2. DNS主从服务搭建 1.2.1. 主DNS服务器配置 1.2.2. 从DNS服务器配置 1.2.3. Web服务器准备 1 ...

  4. DNS服务之智能DNS

    前言和实验背景 智能DNS是一个很关键的应用,也是直观体现工资的一项技能.智能DNS现在的技术已经非常的成熟,而且可以进化成CDN(内容分发网络).基本掌握了智能DNS和CDN的技术,就代表你已经成为 ...

  5. 【案例分享】华为防火墙出接口方式的单服务器智能DNS配置

    介绍出接口方式的单服务器智能DNS的配置举例. 组网需求 如图1所示,企业部署了一台ISP1服务器对外提供Web服务,域名为www.example.com.ISP1服务器的私网IP地址为10.1.1. ...

  6. 实验十一 DNS 协议分析实验

    实验十一 DNS 协议分析实验 1.DNS 协议简介 DNS 是域名系统 (Domain Name System)的缩写,是一种分层次的.基于域的命名方案, 主要用来将主机名和电子邮件目标地址映射成I ...

  7. mysql与dns_借助mysql和DNS view实现智能DNS(centos6.3 x64环境)

    开篇说明 关于智能DNS和CDN的东西可以看我之前的一篇博文 上次的博文简单使用了BIND的视图功能实现了简单的智能dns,此篇博文结合了mysql实现真正意义上的智能DNS系统 需要准备东西 首先y ...

  8. 烂泥:智能DNS使用与配置

    公司的业务现在已经扩展到海外,对外提供的统一接口都是通过域名来解析的,但是海外用户访问国内接口的话,你懂的,很慢的.为了提高域名解析的速度,打算使用智能DNS功能,来解决海外用户域名解析慢的问题. P ...

  9. bind dlz mysql rpm_智能DNS --BIND DLZ+MYSQL

    智能DNS --BIND DLZ+MYSQL 一.概念介绍: 1.智能DNS: 智能DNS就是根据用户的来路,自动智能化判断来路IP返回给用户,而不需要用户进行选择. 智能DNS与普通DNS区别: 普 ...

  10. 互联网dns架构实现智能dns实现

    互联网dns架构实现&&智能dns实现 实验环境:准备8台虚拟机,具体ip配置如下图 实验目的:互联网DNS工作原理的简单实现(域名解析.只缓存DNS服务器.DNS子域委派和转发.主从 ...

最新文章

  1. Cube painting UVA - 253
  2. git简明教程:基本操作命令
  3. Beautiful Sequence CodeForces - 1264B(暴力)
  4. Ajax — 第四天
  5. mysql查找表shoe table,mysql命令行常用命令
  6. 【华为云技术分享】《跟唐老师学习云网络》 - Kubernetes网络实现
  7. python类型检查_python【数据类型检查】
  8. antd 上传进度_antd upload 如何控制进度条 官方的例子里都没有设置onprogress 可是有的例子有进度条 有的例子却没有...
  9. Unity无缝切换场景
  10. 用GetData软件自动读取图中的数据
  11. mysql数据库的用户是什么_mysql 数据库用户管理
  12. 斗地主洗牌发牌——排序版
  13. AutoCAD 2007官方.NET教程(一)(C#版)
  14. 浅谈可带病投保的“税优险”
  15. VB 对数据库access的模糊查询代码
  16. CATIA 二次开发 C#
  17. Android Device Monitor 工具位置
  18. React 项目性能分析及优化
  19. java基础之重写父类_繁星漫天_新浪博客
  20. 我的世界1.8.9作弊java_我的世界超强作弊代码大全 掌控整个世界

热门文章

  1. 个人虚拟化集群搭建教程
  2. Win7下安装Windows SDK
  3. 在北邮 bbs上看到一个理解指针,指针数组不错的题目
  4. Python获取并输出当前日期时间
  5. 因为星期三有计算机课的英语,34  (五年级上册)第二单元 我星期里的每天--英汉对...
  6. python 类的执行中保部存值_python 生成有效的四要素
  7. 山东省软件设计大赛参赛经验
  8. 使用springboot实现redis作为mysql缓存
  9. SEO内页优化,SEO内容优化,内页快速SEO优化
  10. 首席架构师的领导力和管理能力