□ 文 程东亮
随着互联网与信息技术的不断发展,互联网金融行业呈现出快速发展的势态。为保障金融服务7*24小时不间断连续运营,减少正常与非正常的停机对业务可用性造成的影响,金融行业尤其是银行业高度重视灾备系统建设。
为实现数据中心的高可用性和连续性,银行业一般采用同城两中心或“两地三中心”(生产中心、同城灾备中心和异地灾备中心)的布局,且一般只有其中一个数据中心运行在主用(active)状态,其余中心为备用状态或仅实现数据备份的状态。这种数据中心主备运行模式,灾备接管能力较弱,很难达到预期的灾备系统RTO(Recovery Time Object)和RPO(Recovery Point Object),备份中心只有在故障或灾难时才能起到作用,无法得到充分有效利用,也存在IT资源和资金的浪费。
表1 基于DNS的双活模型与基于RHI的IP双活模型的技术对比表
双活甚至多活数据中心技术由此应运而生,成为灾备实践中热点。对于双活(或多活)数据中心而言,如果一个数据中心出现故障,另外一个或多个数据中心还能够对外提供服务,此时业务的实时切换对用户而言不可感知,业务几乎不受影响。除此之外,两个或多个数据中心同时对外提供业务生产和灾备服务,运行在“activeactive”状态,其服务能力是双倍或多倍的,所有的资源都得到了有效利用,也在一定程度上节省了资金。
多活数据中心以其更高的可靠性、服务能力和资源利用率,成为多数据中心结构下的最理想运行方式。以双活为例,为实现应用在两个数据中心的“双活”,在网络层面,前端网络对业务的感知能力和对应用流量的牵引是技术重点。
要实现应用在两个数据中心的“双活”,应用系统对外的IP地址或DNS域名必须唯一。基于健康路由注入(RHI)的IP双活模型和基于智能DNS的全局负载均衡(GSLB)模型是最主要的两种双活模型。其技术详细对比情况如表1所列。
由于IP多活方式只能实现业务的主备模式且存在功能性、灵活性不够等缺点,故“多活”应用应采用基于智能DNS技术的全局负载均衡技术。
GSLB是英文Global Server Load Balance的缩写,意思是全局负载均衡。其作用是实现在广域网(包括互联网)上不同地域的服务器间的流量调配,保证使用最佳的服务器服务离自己最近的客户,从而确保访问质量。
智能DNS配合GSLB是实现多活数据中心的技术基础。基于智能DNS服务的多活数据中心网络实现原理是:利用智能DNS解析技术,业务应用以唯一域名方式为所有发布相同服务的数据中心提供统一的入口,依据预先设定的负载策略,将客户端访问请求分配到不同数据中心,从而实现数据中心站点间的负载均衡调度。具体来说,在用户发出任何应用连接请求时,首先必须通过DNS请求获得服务器的IP地址,基于DNS的GSLB在返回DNS解析结果的过程中进行智能决策,给用户返回一个最佳的服务IP。
采用智能DNS的GSLB方案,网络拓扑、网络路由、IP地址基本不需要改造。要求应用环境基于域名发布业务,同一应用可使用不同IP地址。其全局实现模型如图1所示。
模型中,全局GSLB设备一般部署在用户访问的入口位置(广域网入口),有服务器负载均衡(SLB)需求的,在相应的汇聚层部署SLB设备即可。每个DC的VIP A和VIP B对外提供服务。SLB检查服务器健康状况后和GSLB配合实现DNS切换。GSLB1和GSLB2完成各数据中心的状态监控、路径优化和负载均衡。各中心GSLB设备须互联互通,相互同步配置信息,发布本中心的健康状态。
具体业务流程为:(1)用户向Local DNS发起域名请求。Local DNS采用轮询方式将域名请求发给网络中的GSLB设备进行处理。(2)GSLB根据预先设定的策略(如基于IP就近性算法或者动态探测或一定比例的负载分配等等),对DNS请求信息进行智能处理,然后将域名解析结果返回给Local DNS,Local DNS将域名解析结果返回给客户端。(3)GSLB根据算法返回数据中心A中心的VIP A地址,通过本地应用负载均衡的处理机制(SLB),保障应用的高可用性和针对后台服务器的负载分担。(4)客户访问数据中心A。
通过GSLB的全局应用智能调度,不仅能监控各数据中心健康状况、提高应用可靠性,客户端访问请求也可以按两中心站点业务能力不同进行一定比例的负载分配,提高应用性能。
图1 基于智能DNS的GSLB数据中心多活网络实现模型
为保障银行业网络的安全稳定及业务的持续不间断运行,在现有数据中心模式中应用实践基于智能DNS的GSLB技术时,需要重点考虑以下六个方面问题。
无论是通过在专网中运行内部的DNS服务器,还是在Internet上公网应用,应用系统必须以域名形式发布,这个技术改动对新、旧业务难度不大,但在银行业应用系统中必须充分测试。只有实现应用IP与数据中心网络位置的解耦合,才能达到同时灵活访问各个数据中心的目的。
DNS缓存更新不及时可能影响故障时切换访问,导致双活访问不成功。当某个数据中心出现故障时,GSLB感知后会立即更新DNS解析记录,然而DNS缓存的存在导致PC客户端仍旧解析为错误的IP地址,直至缓存过期后更新为正确解析记录,此期间业务访问可能中断。
DNS缓存时间涉及本机DNS缓存、本地域名服务器缓存、注册商DNS服务器缓存。本机DNS缓存主要包括浏览器或操作系统(如windows系列)DNS缓存,更新时间从1分钟至30分钟不等,此时一旦发现访问故障,可以关闭浏览器或输入强制刷新DNS命令或重启PC实现快速切换,部分自行开发APP应用甚至可以自动清空本地DNS缓存实现快速刷新。本地域名服务器缓存、注册商DNS服务器缓存可以通过TTL(Time-to-live)值实现快速刷新,即GSLB在第一时间发现故障后,立即更新DNS记录为正确的IP,并通过设置TTL值通告给注册商DNS和本地域名服务器。一般互联网门户网站设置更新值为30秒,对于在内网中自行架设的DNS服务器,可以自主设置缓存时间为合理数值(如2分钟),实现故障时快速感知。疏漏DNS缓存更新容易导致故障第一时间切换不成功,影响整体网络的平稳不间断运行,金融行业务必高度重视。
每个域名最多可以有六条记录,一般用2条就足够实现“双活”。对于GSLB,在返回DNS解析结果时可以包含多个A记录,应用一般会使用第一条A记录。当发生故障时,PC机可以自动切换至其他IP解析记录,实现更快速的故障切换。
一般而言,对于同一个客户端,尤其是与用户状态有关的操作,比如金融交易,应全部通过GSLB定向到同一台服务器进行处理,以保持会话(session)一致性,否则“多活”应用会出问题。此时,一般采用客户端源IP会话保持(客户端源IP可以区分,同一个源IP被认为是同一个用户)或Cookie会话保持(利用应用层HTTP投中的Cookie进行会话保持)。
金融行业对网络设备性能的选择有更高的要求,基本原则是满足现状和未来需求,适当留有余地。如果GSLB处理的是4层或7层报文,建议按照7层性能来考虑设备选型参数,并为未来预留2-3倍性能空间。
2017年,《网络安全法》的颁布对关键金融基础设施提出了明确的国产化及自主可控的要求,其中第22条明确规定:“网络产品、服务应当符合相关国家标准的强制性要求”。GSLB是目前银行业使用较多的核心关键设备,硬件设备实现方式的基本以国外F5、Radware、A10等为主,除价格高昂外,还存在核心技术受制于人等安全隐患问题。比如,2012年,F5曾出现过“root用户权限验证绕过”高危漏洞。目前,国产厂商通过自身技术积累和产品实践,已出现较多品牌产品,在实践中取得较好效果,可以逐步考虑。
新技术的广泛应用和成熟,不断冲击着传统金融技术架构,“双活”和“多活”数据中心逐渐成为IT架构的主流。虽然“双活”和“多活”数据中心的可靠性、性能优势明显,但在银行业数据中心从现有模式向新型模式转换,其具体落地实现还需要经过长期摸索和复杂建设。本文提出的基于智能DNS的全局负载均衡技术,能通过流量调度很好的实现应用分布式多活架构,是一个值得尝试和探索的重要方向。■
参考文献:
[1] 林秀.业务双活数据中心网络设计要点探讨[J].电信技术,2016(3):60-63.
[2] 蓝发宽.基层央行数据中心“双活”探讨[J].金融科技时代,2016(10):39-42.
[3] 范媛媛.银行多活数据中心网络关键技术研究[J].中国金融电脑,2017(03):61-64.
[4] 肖平.谈基于DNS发布业务的双活数据中心业务[J].数字通信世界,2016(08):43.
[5] 杨肖敏, 龚新平. 私有云数据中心多站点选择技术研究[C].中国计量协会冶金分会2015年会论文集,2015.