F5售后服务一点通:topology负载应用问题
2020-06-22 22:09:17
F5小安

Note:F5售后服务“一点通”专栏,是由F5售后工程师主笔,收集和总结客户在实际工作中遇到的常见多发性问题,汇编成小技巧和知识点,通过F5官方微信号定期进行分享,希望有相同问题的客户从中得到解决问题的指导。“一点通”栏目的口号是“一点就通,痛并快乐的学习并解决问题!”。
作者:周铮 F5客户现场工程师
2010年加入F5售后技术团队,具有多年企业/运营商网络运维经验。
F5 Certified Technology Specialist - LTM/GTM/APM
原文链接:https://mp.weixin.qq.com/s/gnLSFp_bOOPtAEgnMEXHlg
这次我们来聊一聊topology负载在实际应用中的注意问题。
基于Topology的负载均衡是基于物理临近度的一种负载均衡方法。
通俗点说就是DNS服务器根据客户端请求IP的不同来给客户端返回不同的服务器地址。
比如说电信用户访问www.xxx.edu.cn的时候,DNS服务器会返回给用户电信服务器,网通用户访问www.xxx.edu.cn的时候,DNS服务器会返回给用户网通服务器。
这样就解决了南北用户访问过慢的问题。
这个topology在BIG-IP DNS GUI和CLI里面分别是下面的样子
BIG-IP DNS的topology负载均衡一般分为两个层级:
1. WideIP对应多个Pool
2. Pool对应多个VS
以第二种为例,BIG-IP DNS会将Pool内的VS分别与LDNS组合成对。
只要给出LDNS, VS IP就可以在Topology表中找到对应的Score/Weight值。
然后将这个值作为对VS的评分,根据Score的高低,决定选择哪个VS。
如果分值相同则按照Round Robin轮询,因此实际配置中客户会根据自己偏好将某个topology分配更高的score。
需要注意,一旦命中了某条Topology记录,那么后面的记录就不会继续匹配。
在绝大多数用户的应用场景中,Topology基本上都能智能准确的返回地理接近度最高的地址匹配。
极少数的情况下,也有客户反应,绝大部分的客户端返回地址正确,个别客户端会返回错误的地址,例如联通地址的客户端被返回了电信的地址。
这样的情形通常一种可能性是Topology条目因设计原因导致预想之外的匹配,需要客户根据设计排查实验。很多客户为了节省时间,会将这种例外的情形,格外加一条精确匹配的topology保证解析准确。
另一种可能性,就是和BIG-IP内置geoip数据库的精确度有关系。
我们通常在GUI里面可以选择内置的各种ISP应用于region以及topology,比如:
gtm region /Common/region_CU {
region-members {
isp /Common/BeijingCNC { }
isp /Common/CNC { }
isp /Common/ChinaMobilNetwork { }
isp /Common/ChinaUnicom { }
isp /Common/ShanghaiCNC { }
gtm topology ldns: region /Common/region_CU server: subnet 122.144.142.240/32 {
order 1
score 50
}
gtm topology ldns: region /Common/region_CU server: subnet 122.144.142.155/32 {
order 2
score 50
}
上述,可以在GUI里面配置的这些个ISP是内置好的,它们存在于:
/usr/local/gtm/include/gtm_base_region_isp.conf。
然而,这个内置的数据库是随版本发布的,而实际的网络运营商自己的ip地址段,每隔一段时间都会有变动或者微调,那这个内置的地址数据库难免有一部分的信息是过期的。
虽然仍然可以保证大部分的地理数据准确,但确实会发生之前提到的某些极少部分客户端解析不准确的问题。
如果想使用更为精确的地理数据库,需要到downloads.f5.com里面下载F5GeoIPISP.dat这个文件,并用它替换/shared/GeoIP/F5GeoIPISP.dat。
同时需要在GUI或者CLI当中用geoip-isp这个参数,而不是之前的isp参数,这里面推荐使用CLI,因为geoip-isp只能通过CLI查询出名称,GUI里面并不能从列表选择,只能手动输入。
下边来说一下应用geoip-isp的简单步骤
1. 首先确定出问题的客户端或者ldns的ip地址以后,这样就可以在F5GeoIPISP.dat当中确定其geoip-isp的名称
例如,出问题的ip是: 23.3.3.1 那么:
# geoip_lookup -f F5GeoIPISP.dat 23.3.3.1
Will attempt to lookup ip '23.3.3.1'
opening database in F5GeoIPISP.dat
size of geoip database = 2934730, segments = 227446, version = GEO-148 20161206 Build 1 Copyright (c)
F5 Networks Inc All Rights Reserved
geoip_seek = 0003c738
geoip record ip = 23.3.3.1
name = akamai technologies inc.
2. 用这个名称创建topology记录
下面是geoip-isp的topology记录的参考格式:
# tmsh create /gtm topology ldns: geoip-isp <ISP_name> server:
<continent|country|datacenter|geoip-isp|isp|not|
pool|region|state|subnet> <value> score <score_value>
例如:
tmsh create /gtm topology ldns: geoip-isp "chinanet hubei province network" server: subnet 104.219.105.0/24 score 40
3. 如果已经配了某个region的topology,也可以将这个查询到的geoip-isp名称加入到已有的region当中,在topology中直接生效。
另外,F5目前还没有打开F5GeoIPISP.dat的官方工具,如果想查询里面的名字可以使用linux的命令,例如:
# strings F5GeoIPISP.dat | grep -i "akamai"
akamai international b.v.
akamai technologies inc.
akamai technologies european
# strings F5GeoIPISP.dat | grep -i "chinanet g"
chinanet guangdong province network
chinanet guizhou province network
chinanet gansu province network
chinanet guangxi province network
你可能注意到,上面的例子里面一直用到akamai,并没有用到具体的精确的名字,比如,akamai international b.v.
是因为F5GeoIPISP.dat本身是支持字典索引匹配的,因此以上述查询结果为例,如果想添加关于akamai的topology记录,其实无须写三条:
tmsh create /gtm topology ldns: geoip-isp "akamai international b.v." server: subnet 104.219.105.0/24 score 40
tmsh create /gtm topology ldns: geoip-isp "technologies inc." server: subnet 104.219.105.0/24 score 40
tmsh create /gtm topology ldns: geoip-isp "akamai technologies european" server: subnet 104.219.105.0/24 score 40
我们只需下面一条,即可匹配所有含有akamai关键字的geoip-isp,为我们配置带来效率。
tmsh create /gtm topology ldns: geoip-isp "akamai" server: subnet 104.219.105.0/24 score 40
希望对于topology这部分配置以及帮助客户理解有小小的帮助。
发布评论 加入社群
相关文章

F5售后服务一点通:F5 Advanced WAF误报事件的基本排障
F5小安
2020-06-23 11:13:06 2191

F5售后服务一点通:关于BIG-IQ排错的些许问题
F5小安
2020-06-22 22:29:06 1957

回复评论
发布评论