第六章:负载智能dns解析

6.1两层负载均衡(two-tiered load balancing)

当BIG-IP dns接收到一个dns请求,他会使用两层负载均衡的方法选择一个最好的解析结果。
1、第一次尝试,使用wide IP 的负载方法选择最好的pool池子。
2、第二次尝试,使用pool的负载方法选择最好的virtual server。

每个pool池的三个层级轮训方法

执行顺序如下:

  • preferred:最优的负载方法。包含动态和静态方法。
  • alternate:当preferred因为缺少度量值(metric)导致不能使用时候选择的方法,包含动态和静态,但不能基于path。通常这里选用静态。
  • fallback:当alternate因为缺少服务器度量值(server metric)时候选用的方法。

最优解当然是通过preferred的负载方法计算得出,但是当度量值(metric)还没有收集完成,动态负载均衡算法无法使用,这时候就需要使用alternate的静态算法,但是也可能由于到vs的网络不通,导致无法检测vs是否可用,这时候,fallback作为兜底方法将会被启用。

全球负载均衡默认设置

注:仅翻译,并未测试。

  • respect fallback dependency:如果开启,并且需要使用fallback进行负载均衡,则会基于virtual server的状态进行回复,如果关闭(默认),并且使用fallback负载方案,则可能回复一个不可用virtual server。
  • ignore path ttl:如果开启,将忽略path ttl,这适用于基于path负载的方法,如果关闭(默认),一旦ttl超时,他就不能作为度量值进行解析。
  • verify virtual server availability:如果开启(默认),在解析这个请求之前,dns系统先检查virtual server的可用性。

6.2静态负载方法

  • round robin
  • ratio
  • global availability
  • static persist
  • drop packet
  • topology
  • falback ip
  • return to dns
  • none

round robin:

​ 轮询,就是顺序调用pool和pool member,如下图。

ratio:

权重,高权重的将会获得更多次选择。如下图。他的执行顺序是先逐个取值,进行一轮之后,再进行第二轮,对于3号,第一轮权重值被取完,则不进行第二轮取值。以此类推。

global availability:

这种算法下,big-ip总是会使用第一个pool和第一个vs进行回复,所以你配置的pool和pool member顺序尤为重要。只有第一个vs不能用,才会选择第二个vs。但是当第一个vs恢复,又会将第一个vs作为最优解进行回复。如下图。

总是使用第一个可用的pool和virtual server,你可以调整顺序。如果pool1先故障,之后又恢复,则会向用户发送pool2,然后又继续发送pool1。

static persist:

这个算法只能用于pool中,和global availability相似,static persist总是使用第一个可用的vs,但是不同的是他会对每一个ldns进行哈希,哈希过后,vs的顺序是不一样的,然后再取第一个可用vs作为最优解。

当1号不可用,则会使用序列中的第二个vs作为最优解。

drop packet:

如果vs都不可用,期望啥都不回复,则可以在alternate上使用drop packet。这种情况dns会尝试解析,但如果失败,就啥都不回复,ldns等待超时然后请求其他的dns。

fallback ip:

只回复fallback ip,这个ip在回复之前是不会做可用性检查的。如果你想在preferred和alternate不可用的时候使用fallbcak ip,你可以配置这个负载方法。

topology:

基于拓扑的响应,取决于配置。后边详细讲。

return to dns:

使用bind中对应域名的记录解析

6.3动态负载方法

  • round trip time
  • Completion rate
  • hops
  • least connnection
  • kilobytes per second
  • cpu
  • packet rate
  • virtual server capacity
  • virtual server score
  • quality of service

round trip time:

RTT使用数据中心到ldns最快的节点作为最优解,这些度量值都是由big3d同步到各个设备上。RTT是不能使用在alternate中的。如果RTT的计算结果相同,则会在相同的结果中轮询作为最优解。

Completion rate:

和RTT很像,Completion rate选择丢包和超时最少的vs作为最优解,同样他也不能作为alternate负载算法。

hops:

选择一个从datecenter到ldns条数最少的节点作为最优解,它使用traceroute工具去测量跳数。

least connnection:

使用vs连接数最少的节点,他是通过bigip从F5设备上获得的数据,通过snmp从非F5设备上获得的数据。

kilobytes per second :

使用流量最小的节点。他是通过bigip从F5设备上获得的数据,通过snmp从非F5设备上获得的数据。

cpu:

使用cpu最小的节点。他是通过bigip从F5设备上获得的数据,通过snmp从非F5设备上获得的数据。

packet rate:

和least connnection相似,使用数据包速率最少的节点,他是通过bigip从F5设备上获得的数据,通过snmp从非F5设备上获得的数据。

virtual server capacity:

基于pool池中可用vs个数去配置权重,然后进行负载。

virtual server score:

只能用于ltm上配置了score的vs。

quality of service:

你可以使用以上多个度量值进行综合定义,去进行负载均衡,下图就是说你可以使用哪些度量值决定qos的算法。和其他的动态算法一样,如果其中一个度量值没有收集完数据,qos是无法进行计算的。

举个例子,比如,我们对virtual server capacity 和round trip time定义了权重,分别是20和10.

其中,vs_100.10.10.1的得分通过公式

(6*20+3*10)/(20+10)=5
  • 1

算得为5,以此类推,分别是上图的结果,所以最优解是100.10.10.3。

6.4负载均衡算法列表(网上的)

忘记是网上找的还是官网的文档,写的不错

静态负载均衡算法

算法 描述 使用场景
drop packet 丢弃DNS请求 确保GTM不将DNS解析成不可用的IP
fallback IP 将DNS请求解析成指定的IP,即fallback IP ,GTM不监控这个IP可用性 当主用和备用都不可用时,GTM就会用fallback IP回应DNS请求,不管fallback IP 是否可用。相当于逃生通道
global availability 顺序分配,只有前面的IP不可用时,才会将DNS解析到后面的服务器 服务器之间性能或其他方面不同,有偏好承载业务的服务器
None 如果备用的负载分担方式是none,GTM直接跳过备用方式,使用fallback定义的方式进行负载分担;如果fallback方式是none,且配置了多个pool,直接使用下个pool;如果所有pool都不可用,返回一个pool的聚合地址;如果所有地址池的首选的负载均衡方式都已经配置,且备选和fallback方式为none,当首选负载分担方式无法选出IP时,使用下一个可用的pool 未想到使用该方式的场景
ratio 按权重将DNS请求分配到不同的服务器 用于服务器之间性能不同,或者对某些服务器有偏好的情况
return to DNS 使用本地DNS回应域名解析请求 用于临时将一个pool从服务中移除
round-robin 轮询
static persist 根据哈希算法,将相同的IP地址的请求解析到相同的VS上 用于特定源地址解析到相同的VS上场景
topology 根据DNS请求中的地理位置信息,返回和请求地理相近的域名解析,需要预先配置拓扑的记录 期望用户请求访问同区域或同数据中心的资源

动态负载均衡算法

动态负载算法根据big3d agent收集的当前性能的指标和指定的算法,返回指定IP。

算法 描述
completion rate 如果一个VS和客户LDNS在数据包交互过程中保持最小的丢包或最少的超时包,GTM将使用该VS回应DNS请求
CPU GTM使用当前CPU利用率最小的VS作为DNS请求的回应
hops GTM使用 和客户之间路由跳数最小的VS作为DNS请求的回应
kbyte/s 使用当前处理流量最少的VS作为DNS请求的回应
least connection 使用最小连接数的VS作为DNS请求的回应
packet rate 使用处理包数量最少的VS作为DNS请求的回应
Qos GTM在配置了针对每个VS的测量后,使用Qos分数最高的VS作为DNS请求的回应
RTT 使用和客户LDNS RTT最短的 VS作为DNS请求的相应
VS score 配置了如果VS使用了LTM,可以使用VS score 最高的VS作为DNS请求的回应
VS capacity 如果配置了多个pool,根据每个pool可用的VS分配权重,权重最高的pool接收最多流量,同样pool中权重最高的server接收最流量,该算法所有的pool的server 都会接受到流量。

6.5 日志 LOG

你可以使用linux 的syslog,也可以使用高速日志存储系统,高速的日志服务器可以选择splunk,remote high-speed syslog等。高速日志系统各组件关系如下,高速日志系统搭建不做介绍。

日志输出内容

日志输出样式

实验

修改wide ip的日志选项

GUI

路径:DNS ›› GSLB : Wide IPs : Wide IP List ›› Properties : www.train10.com : A

配置:

  • Load-Balancing Decision Log:全部勾选

TMSH

modify gtm wideip a www.train10.com load-balancing-decision-log-verbosity { pool-member-selection pool-member-traversal pool-selection pool-traversal }
  • 1
修改log profile

GUI

路径:DNS ›› Delivery : Profiles : Other : DNS Logging ›› New…

配置:

  • Name:local_dns_logging_profile
  • Log Publisher:default-ipsec-log-publisher
  • Log Responses:enable

TMSH

 create ltm profile dns-logging local_dns_logging_profile log-publisher default-ipsec-log-publisher enable-response-logging yes
  • 1
更新dns profile

GUI

路径:DNS ›› Delivery : Profiles : DNS ›› Properties : dns

配置:

  • Logging:enabled
  • Logging Profile:local_dns_logging_profile

TMSH

modify ltm profile dns dns enable-logging yes log-profile local_dns_logging_profile
  • 1
测试

使用

for i in `seq 1000`;do sleep 1;dig @2.2.2.1 +short www.train10.com;done
  • 1

发起访问,再通过System ›› Logs : Local Traffic查看日志,或者使用 tail -f /var/log/ltm进行查看。

6.6 手工恢复

在使用global availability的负载算法时候,会出现一个问题,假设最优解此时不可用了,则会使用第二个vs作为最优解,但如果第一个vs恢复,则dns解析结果又会变为第一个vs,这种情况,如果发生中断的应用无法从主站点和辅助站点之间复制数据,就可能出现数据错误问题,这时应该由管理员判断恢复时间,比如找一个流量最小的时候进行恢复,从而减小影响面。

示例

正常情况写解析的地址是A和X但是当两个vs失效,则会解析成B和Y,但是A和X的图标会变得不一样,A会变成黑色菱形,而X会变成红色菱形,此时如果A和X恢复,左侧的会继续解析成B,并且A的图标变成黑色圆形,但是右侧的会解析成X,并且X的图标会变成绿色圆形。

只有管理员手工恢复才能将A的图标变为绿色圆形。

配置位置

6.7 基于拓扑的负载

如果你的数据中心在多个国家或者大洲有建设,那么基于拓扑的负载均衡是最好的选择,你可以配置ip的地理位置,或者使用F5提供的地理信息数据,再或者你可以购买第三方的数据库,dns将会提供一个最近的vs作为最优解。

基于拓扑的负载均衡算法可以用于wide ip选择pool池,也可以应用在pool池选择vs的时候。

配置步骤:

  • 创建一个区域(可选)
  • 创建拓扑记录
  • 将基于拓扑的负载均衡算法应用于wide IP或者pool

如果在wide IP选择一个pool池的时候,没有对应的拓扑记录,则会使用轮询的算法进行负载,如果在pool选一个vs的时候,没有找到对应的拓扑记录,则会使用alternate负载均衡算法。

big-ip 使用ip geolocation database存储ip地理信息,默认的数据库中提供ipv4的大洲、国家、市县、运营商和组织信息,提供ipv6的大洲和国家信息。

默认的数据库文件被存放在/usr/share/GeoIP/文件夹下,更新的话请参照http://downloads.f5.com,把下载的文件放置在/shared/GeoIP/文件夹中。

自定义记录

你还可以自定义,topology的记录存储在bigip_gtm.conf下。格式如下:

  • an ldns request source statement
  • a destination statement
  • an operator
  • a weight

其中source和destination可以是大洲、国家、运营商,子网等信息,operator可以填入is或者is not,weight作为权重,在多条记录同时被匹配上时weight值高的将会被选为最优解。

理解topology的匹配规则

拓扑记录的顺序取决于配置内容和是否打开了最长匹配。

最长匹配开启之后,为确保查询最快,会自动更改拓扑记录的顺序,将最长匹配记录放在列表最顶端,而最短匹配放在底部。

选取过程

先根wide ip的配置去匹配拓扑数据destination信息,再通过operator(is OR is not)进行判断ldns ip是否满足source的配置,如果满足就得分,如果不满足就不得分,最后选择的跟高的条目作为最优解。

基于拓扑从wide ip中选pool

例子:

在这个例子中,wide ip 使用基于拓扑的负载均衡算法去选择最优解,当一个请求发来,会先根据wide ip的配置发现有两个pool池作为备选,分别是p1和p2,这时匹配到两个拓扑条目,再查找ldns ip是否是欧洲地址,进行比较,如果是欧洲地址,则第一条得分高,返回vs1,如果不是欧洲地址,则第二条得分高,返回vs2。

上边这个配置是一个有问题的配置,我们来看一下,当一个请求发来,会先根据wide ip的配置发现有两个pool池作为备选,分别是p1和p2,这时匹配到两个拓扑条目,当ldns ip不是100.10.17.20的时候,第一条没有匹配上,所以不得分,第二条匹配上,所以得5分,所以第二条作为最优解。但是如果ldns ip 是100.10.17.20的时候,第一条匹配上,得4分,第二条因为是0.0.0.0/0,表示所有,所以第二条得5分,5分优于4分,所以依然会将第二条作为最优解,显然这不是我们想要的结果,我们只要调整第一条的score值到6,就可以避免这种情况出现。

再看下一个例子,这个例子的每一个score都是5,你通过上边相同的解析过程会发现ip为100.10.17.20的ldsn最优解会在p1、p2、p3中间轮询,而ip为100.10.17.0/24的ldsn最优解会在p2、p3中间轮询,其他的ldns最优解是p3。这样也是不符合预期的,我们应该将明细的score值调高,这样才能返回唯一的最优解。

基于拓扑从pool中选vs

选择过程和wide ip选择pool是一样的,如果ldns ip在150.0.0.0/8内,则选择seattle作为最优解,否则选择london作为最优解。

这个配置,由于它指定了,只有vs是10.10.18.0/24的,且ldns是美国的,才会得分,其他的都不能得分,所以美国的ldns解析的结果一定是在10.10.18.0/24这个范围内。其他地区的ldns解析的结果一定在10.10.19.0/24这个范围内。

实验

在实验之前需要在创建一个pool池,并且pool中包含至少两个vs,建议ttl配置成1,并将新建的train10_http2_pool关联到www.train10.com中。

create ltm pool gtm_a_80 {members add {172.16.20.5:80} monitor gateway_icmp }


http://www.taodudu.cc/news/show-2604525.html

相关文章:

  • CDN与智能DNS 基本原理
  • bind9智能dns配置
  • 【DNS应用案例】智能DNS赋能海运集团全球域名体系建设
  • linux搭建智能dns步骤,PDNS实现智能DNS配置步骤linux操作系统 -电脑资料
  • F5 GTM DNS 知识点和实验 4 -智能DNS基础
  • Istio 中的智能 DNS 代理功能
  • 智能DNS实现
  • CDN与智能DNS原理和应用 - 学习/实践
  • linux搭建智能dns步骤,Linux下智能DNS配置过程
  • 实现智能DNS
  • 离散数学3_第1章__一些重要的重言蕴涵式__推理定律
  • 基础重言蕴含式
  • 数理逻辑蕴含_16-证明逻辑等价式和逻辑蕴涵式
  • 离散数学第一章总结
  • 离散数学-2 命题逻辑等值演算
  • 【离散数学】命题逻辑
  • 离散数学- 第二章 命题逻辑的推理理论
  • 数理逻辑—24个(16组)重要等值式
  • 离散数学之数理逻辑——第2章 命题逻辑等值演算
  • 离散数学-逻辑
  • 离散数学第一章 命题逻辑
  • 离散数学——命题逻辑
  • 离散数学西电版复习笔记——第一章:命题逻辑
  • 数据结构实习——重言式的判别(写的不好不要见怪)
  • 重言式判定------参考了别人的代码。。
  • 离散数学 第一章 命题逻辑 1-5重言式与蕴含式
  • poj 3295 Tautology【离散数学之重言式】
  • 【数理逻辑】命题逻辑 ( 命题与联结词回顾 | 命题公式 | 联结词优先级 | 真值表 可满足式 矛盾式 重言式 )
  • 重言式判别 (数据结构课程设计)
  • 杭电数据结构课程实践-重言式判别

F5 GTM DNS 知识点和实验 6 -智能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. 个推无法获取个推id_最新个推Android 推送 SDK Maven 集成
  2. 3.5 Facade(外观)
  3. [设计模式]8. C++与中介者模式(mediator pattern)
  4. 快速解码base64和utf-8的ASCII编码和URL解码
  5. PHP使用SMTP邮件服务器
  6. Numpy高维数据的理解
  7. 在Linux系统下实现进程,Linux进程学习(一)之Linux进程的基本知识和实现
  8. php和会计,财务跟会计有什么区别
  9. php5.3 PHP5.4 PHP5.5 php5.6 新特性/使用PHP5.5/PHP5.6要注意的
  10. 安卓dj专业打碟机软件_Mac平台上的专业DJ打碟软件
  11. 语音和噪声相关数据集(持续更新)
  12. 小程序apkg还原_如何禁用微信小程序(适合任何机型的完美解决方案)
  13. 常用的银行卡验证API接口——银行卡三元素API接口
  14. [RK3399 Android7.1.2]新增wifibt模块:rtl8822cs驱动以及解决所遇问题
  15. 搭建web服务器asp网站传马
  16. oracle自动建立分区interval,使用Oracle 11g创建Interval分区表(转)
  17. ZOJ1516HDU1507(二分图匹配)
  18. matlab实现PS算法之亮度调整
  19. iphonex 序列号_iPhoneX序列号在哪 苹果X序列号怎么看?
  20. 汉诺塔问题的递归求解

热门文章

  1. 大学到底教会了我们什么?
  2. [转]大连金州不相信眼泪
  3. 网站外链如何才能被搜索引擎快速收录呢?
  4. qq出示测试软件语音聊天,腾讯qq语音聊天麦克风的[qq语音语音测试]解决方案
  5. 易观数科代码埋点、全埋点、可视化埋点
  6. 冉宝的每日一题--8月12日--子序列有进步啦
  7. 复化梯形公式和复化Simpson公式的python实现
  8. 而立之年,第一篇博客,
  9. ListView组件的应用
  10. tensorflow笔记之二十八——带掩码的损失函数