恒丰银行科技部总经理 张晓丹
张晓丹在恒丰银行新的两地三中心建设过程中对BAT等云数据中心建设的经验和想法进行了梳理,将传统金融行业的高可用性、高安全性、高一致性与数据中心进行了融合。张晓丹说:“金融行业做两地三中心建设首先是有监管要求。银行监管要求规定:一千亿资产的银行需要进行两地三中心的建设;超过一千亿以上资产的银行要建设异地数据中心;一千亿资产规模以下建立同城数据中心,满足异地灾难性的要求。”
可用性与连续性应并重
金融行业做两地三中心建设需要提高可用性,包括如何高效的利用容量和资源控制成本。但多活数据中心系统数量与高可用性并不存在直接的线性关系,应将连续性和可用性做出界定,在具体实践中,张晓丹建议:可把连续性界定为同城的园区级或者地域级大型灾备概念,可用性面对的是一个业务应用系统整个的可用性。也就是设计灾备的时候一定要进行数据的同步控制,因为一个相对独立的系统不会受另外一个系统的影响,如果两个系统做数据的高度同步复制,一定会耦合在一起,反而影响整体的可用性。所以,连续性的发展,过渡重视了灾备,强调了灾备的RTO、RPO时间,从而反过来影响可用性。
银行等金融机构的传统IT架构一直在强调提高可用性,为了提高可用性,就会从不同层次上不断的增加冗余,不断的增加冗余后,最后带来的问题是成本很高,冗余容量很大,可能10%的最终冗余容量都用不掉。此外,冗余点越多,每个系统的耦合点越多,本质上也降低了系统的可用性。所以,如何提高可用性,平衡连续性,高效利用容量资源控制成本,这些都是两地三中心建设中要考虑的问题。
三中心地位应有区别
建设两地三中心,而不是强调三个中心一定多活。在传统数据复制技术无法消除本身的技术缺陷之前,三个中心的地位应有区别。生产中心地位最为重要,同城数据中心相对次要,异地中心地位稍低一些。这样的两地三中心构成一个相对多活的架构。
消除中心与中心之间的耦合度
新一代两地三中心多活系统要尽可能消除各个数据中心与中心之间的网络、应用、数据等各方面的耦合度,避免一个中心的问题会影响到另外一个中心。同时,应对应用系统进行连续性和可用性分析,对于不同级别的要求,赋予不同的技术方案、运维方案,以提供不同成本的一解决方案。
连续性分为技术的连续性和业务的连续性,业务的连续性就是当你的技术无法解决,要通过业务人员手工补数据等进行解决。数据中心连续性特性是为了防止出现站点级或者地域级灾难,地域级灾难也就是当城市整体出现海啸、地震、大面积停电、停水等地域级的问题。
国家针对连续性的分级标准,一般分为0到5级一共6级的分类,其核心指标包括RTO以及RPO。也就是当出现灾难时,另外一个地方进行恢复的时候是否会有丢失,最高级别的RPO就是数据丢失为零,或者接近零,同城和异地方案均需满足上述要求。
基础设施架构如何提升高可用性?
从基础设施架构方面如何提升可用性?从水的制冷功能,电力的冗余,甚至上游的水源是不是来自两个不同的水库?供电是否来自两个不同的发电站?包括数据中心是否建设在飞机的主航线下等等细节。
从存储级别、服务器系统级别、数据库中间件级别,运营级别分别进行不同的高可用的保证,最终达到高可用的指标。如果一个系统运行达到5个9的可用性,一年停机时间只能5分钟,4个9的可用性,系统一年的停机时间50分钟。需要达到4个9和5个9这样的指标不是靠运维,必须靠系统的冗余设计来解决。
可用性的设计主要考虑不同的冗余时间, 7×24或者5×8,冗余资源越来越多,最后成本会难以控制。
如何平衡连续性、可用性和容量?
对于不同的连续性级别,主中心配多少容量,同城配多少容量,异地配多少容量,需要有一个总体的规划。其设计需要平衡连续性、可用性和容量。
数据同步有三种方式,一是最大保护模式,最大可用模式以及最大性能模式,最大性能模式是两个数据库异步;最大保护模式是每一笔交易写下来,还要同时写到异地的数据中心,这个数据中心是同城的几十公里,或者异地的上千公里,另外一个数据中心写完后才可以回复上层应用已完成。但存在的问题是如果距离跨度大,性能会急剧下降,所以不可能上千公里的进行部署。在同城50公里范围内可以勉强支持,如果一笔交易中间出现问题,两个系统的耦合点出现异常,造成一笔交易不成,后续交易全部停在那儿。所以,一般没人太敢用这种模式。
最大可用模式,则是平时是双写,一旦侦测到同步的数据库有问题,或者两边的耦合线路有问题,质量下降,就把这个同步停下来,现在金融行业大部分用这个技术。银行交易量极大,比如工商银行、建设银行,一天的交易量达到三亿笔,如果数据不一致,几乎无法保障。传统银行是柜面上依据凭条进行交易目录,出问题后可以重新录一遍。但现在全部通过系统,一旦数据丢失,如想保障非常困难。
如何实现数据多活?
所以,在现有数据库复制技术环节下,很难做到三个中心的同等地位,在同城的两个中心也无法保证同样的地位。阿里现有一些技术可以在同城之间实现数据多活,在应用层能实现应用的多写。同时在多写的过程中实现三写两同步,其概念就是在同城有三个数据中心,一笔交易下来,同时往三个中心写,只要任意两个中心回复,系统即认为交易完成。当三个中心之间的耦合,如果任意两个中心出现了互通的不稳定,或者一个中心出现问题,也不会波及到另外两个中心的对外业务。当然,如果三个中心的耦合共同出了问题,对外服务自然也会中断。
张晓丹说:“基于上述思路,恒丰银行用一个全球的负载均衡,靠DNS自动把流量和数据分解到两个数据中心。根据需要,有些流量也可以分解到异地的第三个中心,Web层面及APP都是负载均衡,外面用户的访问可以均衡的分在两个中心和三个中心,每个中心可以均衡的负载多个节点,写节点又可以分在两个相对独立的中心模块,数据库尽可能解决多可用性,但是同城之间是一个热备,到异地可以是冷备。”
从张晓丹的介绍可以看出,上述整体方案不仅平衡了连续性要求,可用性要求,在容量方面也做了充分考虑,为金融行业新一代两地三中心多活系统提供了很好的实践。
本文转自d1net(转载)