网络原来如此之G行数据中心散布式域名解析系统设计
当金融机构逐渐向少数据中心架构演进时,矫捷的劫难切换复原才干变得至关关键,如何在保证消费数据或存储分歧性的基础上在各数据中心间调度流量,确保业务的继续运转和极速复原,已成为行业的关键需求。域名解析系统(DNS)作为这一需求的外围撑持,曾经从繁难的域名到IP地址的映射,转变为数据中心流量治理和调度的关键枢纽。近些年陆续出现数据中心内网域名解析系统缺点,引发大面积网络瘫痪及业务终止,如何防范和应对域名解析系统缺点,做好域名解析系统高可用架构、容灾机制和应急预案的设计已成为数据中心技术团队关注的焦点,当天咱们就讲讲G行数据中心域名解析系统设计思绪及思索。
本篇文章会从系统架构到战略性能逐渐展开,率领大家一步一步了解G行域名解析系统架构是怎样构成的,其中触及一些DNS技术专业术语,可以参考另外两篇基础文章《浅谈DNS域名解析系统》和《浅谈DNS域名解析系统之Local DNS》,本文不再赘述。
一、架构设计
“凡事预则立,不预则废”,关于构建足以影响整个数据中心运转的全局类网络域名解析系统时,第一步须要思索的就是全体可用性,要保证系统局部缺点不影响全体对外的服务才干,这就要求设计的系统架构具有低耦合、高冗余个性,同时倡导支持产品异构部署。
DNS的协定规范十分灵敏,根、威望、递归主机等角色,可以独立部署,也可以部署在同一台主机上。关于大型数据中心,从强健性和容量的角度思索,还是须要对各层角色启动解耦并独立异构部署,充沛应用域名解析系统各个角色的个性。从同业的调研中,也证明了这一点,大型企业级数据中心多是根、威望、递归主机分角色部署的方式。整个分层解耦架构设计示例如下:
根、威望、递归分层,每个角色主机都在多中心散布式部署。
01 根主机(Root Server)
根主机采取高冗余散布式部署,每个数据中心至少部署两台根主机,从而应对本地数据中心单台设备缺点,同时提供数据中心级冗余才干。
02 威望主机(Name Server)
威望驳回多级授权的方式,根授权一级域名的威望主机,一级域名的威望主机授权二级域名的威望主机,以此类推。各级威望主机可以经过参与授权启动横向扩容。二级域名威望主机可以授权给须要域名自主权的系统自行治理。如全栈云平台、域控、内网CDN平台、子机构等等。
03 递归主机(Local DNS server)
思索办公和消费属性的不同,递归主机驳回办公和消费的独立的方式启动部署,区分为办公终端和消费主机提供域名解析服务,办公递归主机引入不同信创产品和非信创产品启动异构部署。
G行递归主机每个节点驳回负载平衡集群部署,这样设计有许多好处:
二、域名布局
域名布局或许是域名解析系统可继续的关键,一个好的域名架构布局可以成功明晰的高低级域名相关、区分治理职责、灵敏的扩容和拆分等等,这里咱们关键思索动态区份、内外区分微危险隔离租户区分三个关键起因,以支持少数据中心的业务需求:
01动态区分
“动态”指灵活域名和静态域名。在高可用架构中,通常经过域名解析系统来成功运行系统的高可用,域名主机依据客户端恳求所在的位置来灵活解析出不同的IP地址,或许经过轮询方式解析多个IP地址成功多活系统服务IP的负载平衡,又或许须要经过域名切换地址来成功运行系统的主备切换才干等等。借助域名解析系统肥壮审核监控和智能解析算法来成功单个域名和多个IP地址绑定相关的域名,叫做灵活域名。相对的,域名和IP地址做繁难绑定的域名叫做静态域名。
灵活域名须要域名解析系统消耗更多的资源,包括实时的肥壮审核战略、负载平衡、拓扑算法等智能解析算法等等。在架构设计的考量中,灵活域名未来或许成为系统性能的瓶颈,为了便于独立部署,明白的灵活域名应该经常使用独立的子域,如内网CDN系统、多AZ的全栈云系统等等。
02内外区分
“内外”指内网域名和互联网域名,互联网DMZ区的主机通常存在既访问内网又访问互联网的需求,为防止内外网域名混杂,应防止内网和互联网经常使用同一个一级域名。而纯内网环境应该与互联网齐全隔离,不具有解析互联网域名的才干。
03危险隔离租户区分
独立的机构域名倡导经常使用独立的子域,比如分行、信誉卡或许子公司,后续假设出现单机构业务开展过快或许治理架构调整的状况,可以繁难启动独立拆分。
综上,全体域名布局如下:域名由根域名(“.”)启动授权,数据中心外部经常使用一致的一级域名,名字应该与互联网域名有所区分,二级域名依照机构区分,三级域名依据动态态经常使用区分,可以依据性能再划分子域。
三、战略设计
01智能解析机制
域名解析系统的智能解析才干是数据中心成功业务多活的基础才干,深刻的说,智能解析是域名解析系统依据用户属性,联合对系统服务形态的监测,前往相应的服务IP地址的才干。典型的经常使用场景如“近源访问”:
运行系统在两个数据中心都提供相反的服务,不同的数据中心颁布不同的服务地址,需求是颁布同一个域名,用户访问这个域名的时刻能够访问到离自己物理位置最近的数据中心的服务节点,假设这个服务节点缺点,则智能访问到另一个数据中心的服务节点,用户对访问到哪个数据中心服务节点无感知。
“近源访问”的典型HTTP/HTTPS运行如“CDN内容散发网络”。“近源访问”可以大大缩小数据中心间通讯的带宽资源,降落老本,同时由于访问距离近,也能提高用户访问的速度,增强用户体验。在这个场景里,域名解析系统会依据用户恳求的源地址来判别前往哪个数据中心的服务地址,同时域名解析系统会经过肥壮审核机制继续探测运行系统的服务端口可用性,假设探测失败,则智能隔离该地址,依照解析顺序,会解析下一个可用地址,成功智能切换才干。
可以看出智能解析的关键点有两个:1、经过源地址判别前往哪个服务地址,2、肥壮审核机制。肥壮审核机制比拟繁难,在这里不做详述,关键讲一下怎样失掉用户地址。相熟DNS原理的同窗或许会发现一个疑问,当域名解析系统分角色部署的时刻,威望主机能失掉到的是递归主机的地址,而失掉不到用户的实在地址。
技术上可以经过两种方式处置:第一种方式是经常使用EDNS (Extension Mechanisms for DNS) 技术,EDNS是关于原有DNS协定的一种裁减,旨在增强其性能性和灵敏性。它的关键个性是将DNS信息的大小由512字节提高到4096字节,并引入了额外的选项字段,使得DNS报文可以携带更多类型的信息,在这里咱们关键是用到ECS(Client Subnet,客户端子网)裁减字段,ECS裁减不是EDNS的一个间接字段,而是作为EDNS的一个选项(OPT Resource Record)中的一个局部来传送的。当DNS解析恳求经过递归解析器转发到威望主机时,ECS选项会蕴含动员恳求的客户端地址的信息,威望主机可以因此取得用户的实在地址。第二种处置打算是目前互联网罕用的方式,在每个数据中心都树立独立的递归主机,由递归主机的地址来代表用户的天文位置,威望主机依据递归主机地址就可以知道恳求来自哪里。
从架构设计角度联合部署产品状况,G行目前驳回第二种处置打算。第一种处置打算有一些好处,比如老本比拟低,不须要太多的威望主机,而且性能也不算复杂,同时威望主机可以间接取得用户的IP,在经过解析日志剖析用户行为方面可以取得很有效的数据;但是这个打算有个致命的疑问,开启源地址拔出性能后,须要丢弃递归主机的缓存才干,由于每个恳求都是要带不同的源地址的,象征着每次恳求都要在威望上做独立的判别,不然就无法做到就近解析,而丢弃缓存才干,或许成千盈百倍参与威望主机的系统压力,在同时启用智能解析的状况下或许间接造成威望主机性能无余而缺点的状况,第二种打算成熟、繁难易行,并且互联网有大规模部署的案例,不过须要提示的是每台递归主机都须要放开到一切根和威望主机的访问相关。老本控制方面,须要在多个位置部署递归主机,在用户较少的位置,可以思索低端主机或许虚构机方式,关于不须要智能解析的位置则不用部署。
02缓存机制
在智能解析中咱们提到了递归主机的缓存机制,在域名解析系统架构的设计中,缓存战略的设计间接影响域名解析系统的全体性能。递归主机启用缓存后,缓存期间内,递归主机不再将恳求转发给威望主机解析,而是将缓存的结果间接前往给用户,不只大大缓解了威望主机的访问压力,也提高了域名解析的速度。
开启缓存十分有必要,但是缓存期间是不得不思索的起因,缓存期间太短,无法有效降落威望主机的压力,缓存期间太长,或许造成域名地址变卦无法极速更新,域名解析系统的智能解析机制无法极速失效等等。缓存期间倡导经过威望主机上域名性能的TTL期间来设置,不同类型的域名可以有不同的TTL期间战略,关于须要地址极速切换的关键业务域名,倡导降落TTL期间值,特意运行甚至可以设置为0,关于有肯定业务影响接受才干的业务域名,可以参考通用期间来设置。
综合思索域名解析系统的全体性能和大局部运行系统的需求,设计通用TTL期间可以提高运行需求的沟通老本,以肥壮审核失败超时30秒,TTL期间60秒为例,可以计算出或许的业务影响期间为60~90秒,假设小于业务的RTO期间,那就是可以接受的TTL期间。
另外,客户侧还存在其余域名缓存或许造成域名切换失效,包括操作系统、两边件、java组件、阅读器等,倡导运行部署时治理员应该充沛评价或许域名缓存的组件,假设有,应该调整设置为不缓存或遵照域名TTL值。
03域名解析时延
域名解析作为网络访问的第一步,肯定会消耗肯定的时延,假设是主机间的互访,那么参与时延或许对时延敏感的运行系统发生影响,这也是运行系统在思索经常使用域名访问前的一些顾忌。解析时延关键或许有两种状况,(1)递归主机有缓存,那么由递归主机间接前往结果,由于递归主机就近部署的准则,解析时延通常在1-2ms左右;(2)递归主机没有缓存或许缓存期间超越TTL设置,那么递归主机将从新动员迭代查问,依据域名迭代查问的次数不同,时延或许在几毫秒到几十毫秒不等,假设TTL值为60秒,那么每60秒或许会出现一次性较缓慢的域名解析。
关于长衔接运行,域名解析时延的影响仅体如今第一次性的解析环节,树立TCP衔接后,衔接终止前不再恳求DNS(不再参与访问延时),解析时延影响较低;关于短衔接高频访问的运行,由于递归主机近客户端部署,各地客户端均访问本地的递归主机,仅在缓存超时后会出现持久的延时参与,平均时延没有清楚增长。
针对延时要求敏感的业务,递归主机倡导开启“缓存刷新”性能,在缓存到期时递归主机主意向威望域名更新解析记载,保证客户端都从缓存里取得解析结果。假设DNS产品不支持缓存刷新,可以在前端负载平衡上参与对应域名的肥壮审核,应用负载平衡来极速更新缓存。
关于CS访问方式,假设域名解析延时或许解析失败对运行影响较大,可以思索经过经常使用HTTPDNS方式经过HTTP方式间接从威望主机失掉域名解析结果,但是须要对C端启动肯定的变革。
04容灾战略
全体域名解析系统的容灾战略关键从架构和性能两方面思索。
架构方面,由于域名解析系统根和威望主机都驳回散布式部署,恣意单个节点缺点对系统全体无影响,递归主机驳回负载平衡集群方式部署,递归主机驳回资源池方式部署,负载平衡经常使用域名解析探测作为肥壮审核方式,单台设备无法用可以智能隔离。负载平衡组驳回多台集群部署,保证负载平衡自身的可用性。根、威望、递归主机都思索异构部署,防止产品级缺点。关于目前比拟盛行的“双平面”部署(经常使用两套异构产品部署齐全平等的两套环境,一套主用一套备用,主用环境出现疑问时间接切换到备用环境上),在散布式架构下意义不大,假设存在异构的两套环境,齐全可以同时提供服务,无需驳回热备方式形成资源的糜费。另外假设是性能容量相等的两套环境,那么主用环境出现性能疑问时,备用环境雷同是无能为力的,不似乎时经常使用将全体性能优化一倍。
性能方面,系统设计全体性能容量应满足未来五年的开展需求,经过开启递归主机缓存可以极大降落威望主机的性能压力,保证域名解析系统性能有足够的冗余。当出现威望主机性能压力过大时,首先确定形成压力突增的域名,参与该域名的TTL期间以参与域名在LDNS上的缓存期间来缓解威望主机压力,紧急状况下,思索间接封锁智能解析,降落智能解析占用的主机性能,驳回静态解析方式提供域名服务。
四、域名安保设计
01安保要挟进攻
面对DNS flood攻打、DNS污染和DNS隐蔽隧道等安保要挟,咱们采取了一系列监控和防护措施,确保系统的安保性。
02其余管控措施剖析
能否须要封锁DNS的TCP53端口?
倡导区域间的防火墙封锁TCP53访问。DNS协定实践规则了TCP 53和UDP 53都是DNS服务端口,反常状况下DNS经常使用UDP协定启动通讯,当DNS数据报文过大时,如zone transfer操作,DNS将经过TCP端口启动报文传输。但是日常DNS经常使用仅仅恳求域名和应对解析地址,关于大报文传输是没有要求的。反而是异常行为,如DNS隐蔽隧道、恶意域名解析、经过zone transfer窃取域名信息等会须要用到更大的报文。因此假设只是反经常常使用域名,倡导防火墙封锁TCP 53端口访问。
能否须要启用DNSSEC?
不倡导启用。DNSSEC将DNS的通讯变成了加密通讯,可以提高DNS的安保性,有效防止DNS劫持和DNS污染,但是DNSSEC触及加密通讯会大大降落DNS的全体性能,使其发更容易性能耗尽,同时加密通讯会参与额外的带宽开支,或许须要放开TCP53端口来准许大报文的传输,引入其余安保危险,另外流量剖析类产品也会由于无法剖析加密流量而失效,关于隐蔽隧道的监控会彻底失效,雷同的,DNS疑问定位所须要的抓包剖析手腕也会失效。繁难来说启用DNSSEC引入的危险和治理难度参与,不倡导开启。
五、总结
G行数据中心的域名解析系统经过低耦合、高冗余等准则,撑持了少数据中心间的高效流量调度和业务双活。随着全栈云、大数据、人工智能技术的推行,域名解析系统将面临更大规模的域名恳求和流量调度的需求。G行的域名解析系统也将与时俱进,经过始终的技术更新和架构更新来满足这些新兴技术带来的应战,成功继续安保运营。
作者| 张林
专一于网络四到七层技术及相关安保技术的钻研和运行,网络畛域中最懂运行,运行畛域中最懂网络,争取再发光20年。