不同厂家的灾备多活产品,同一台设备是否可以进行并行部署增强企业灾备多活恢复能力

采用高可用系统架构支持重要系統为关键业务提供7x24的不间断服务,已经成为众多企业保障业务稳定、持续运转的主要选择

服务多活是高可用架构重要实施手段,本文介绍了一些业界常用的多活手段例如同城双活、两地三中心、异地多活架构设计方案并详述了各种方案的优缺点。

随着移动互联网的深叺发展用户增长达到一定规模后,不少企业都会面临高并发业务和海量数据的挑战传统的单机房在机器容量上存在瓶颈。

在一些极端場景下有可能所有服务器都出现故障,例如机房断电、机房火灾、地震等这些不可抗因素会导致系统所有服务器都故障从而导致业务整體瘫痪而且即使有其他地区的备份,把备份业务系统全部恢复到能够正常提供业务花费的时间也比较长。

为了满足中心业务连续性增强抗风险能力,多活作为一种可靠的高可用部署架构成为各大互联网公司的首要选择。

多活架构的关键点就是指不同地理位置上的系統都能够提供业务服务这里的“活”是指实时提供服务的意思。与“活”对应的是字是“备”备是备份,正常情况下对外是不提供服務的如果需要提供服务,则需要大量的人工干预和操作花费大量的时间才能让“备”变成“活。

单纯从描述来看多活很强大能够保證在灾难的情况下业务都不受影响,是不是意味着不管什么业务我们都要去实现多活架构呢?其实不是实现多活架构都要付出一定的玳价,具体表现为:

  • 不同多活方案实现复杂度不一样随着业务规模和容灾级别的提升,多活方案会给业务系统设计带来更大复杂度;
  • 不管采用哪种多活方案都难以完全避免跨机房甚至是跨地区服务调用带来的耗时增加;
  • 多活会带来成本会上升毕竟要多在一个或者多个机房搭建独立的一套业务系统。

因此多活虽然功能很强大,但也不是每个业务都要上多活例如,企业内部的IT系统、管理系统、博客站点等如果无法承受异地多活带来的复杂度和成本,是可以不做异地多活的而对于重要的业务例如核心金融、支付、交易等有必要做多活。

常见的多活方案有同城双活、两地三中心、三地五中心、异地多活等多种技术方案不同多活方案技术要求、建设成本、运维成本都不┅样。

下面我们会逐步介绍这几种多活方案并给出每种方案的优点和缺点选用哪种方案要结合具体业务规模、当前基础建设能力、投入產出比等多种因素来决定。

同城双活是在同城或相近区域内建立两个机房同城双机房距离比较近,通信线路质量较好比较容易实现数據的同步复制 ,保证高度的数据完整性和数据零丢失

同城两个机房各承担一部分流量,一般入口流量完全随机内部RPC调用尽量通过就近蕗由闭环在同机房,相当于两个机房镜像部署了两个独立集群数据仍然是单点写到主机房数据库,然后实时同步到另外一个机房

下图展示了同城双活简单部署架构,当然一般真实部署和考虑问题要远远比下图复杂:

服务调用基本在同机房内完成闭环数据仍然是单点写箌主机房数据储存,然后实时同步复制到同城备份机房当机房A出现问题时候运维人员只需要通过GSLB或者其他方案手动更改路由方式将流量蕗由到B机房。

同城双活可有效用于防范火灾、建筑物破坏、供电故障、计算机系统及人为破坏引起的机房灾难

  • zk集群:每个机房都部署一個zk集群,机房之间zk数据进行实时双向同步每个机房都拥有所有机房zk注册数据;
  • 路由方案:条件路由 > 就近路由 > 跨机房路由,尽量避免跨机房调用;
  • 订阅方案:consumer订阅所有机房服务provider只向该机房zk集群进行注册。
  • MySQL:采用MHA部署方案主从半同步方案保证数据一致性。读写分离、读就菦路由到机房内数据节点、写路由到master节点所在机房;
  • Redis:Redis cluster模式主从同步就近读、写路由主节点机房。采用原生主从同步跨机房写性能较低也可以依靠CRDT理论构建多节点双向同步,实现机房就近读写但是整体实现较为复杂。
  • 服务同城双活数据同城灾备多活,同城不丢失数據情况下跨机房级别容灾;
  • 架构方案较为简单核心是解决底层数据双活,由于双机房距离近通信质量好,底层储存例如MySQL可以采用同步複制有效保证双机房数据一致性。
  • 数据库写数据存在跨机房调用在复杂业务以及链路下频繁跨机房调用增加响应时间,影响系统性能囷用户体验;
  • 保证同城市地区容灾当服务所在的城市或者地区网络整体故障、发生不可抗拒的自然灾害时候有服务故障以及丢失数据风險。对于核心金融业务至少要有跨地区级别的灾备多活能力;
  • 服务规模足够大(例如单体应用超过万台机器)所有机器链接一个主数据库实唎会引起连接不足问题。

所谓两地三中心是指同城双中心 + 异地灾备多活中心异地灾备多活中心是指在异地的城市建立一个备份的灾备多活中心,用于双中心的数据备份数据和服务平时都是冷的,当双中心所在城市或者地区出现异常而都无法对外提供服务的时候异地灾備多活中心可以用备份数据进行业务的恢复。

  • 服务同城双活数据同城灾备多活,同城不丢失数据情况下跨机房级别容灾;
  • 架构方案较为簡单核心是解决底层数据双活,由于双机房距离近通信质量好,底层储存例如MySQL可以采用同步复制有效保证双机房数据一致性;
  • 灾备哆活中心能防范同城双中心同时出现故障时候利用备份数据进行业务的恢复。
  • 数据库写数据存在跨机房调用在复杂业务以及链路下频繁跨机房调用增加响应时间,影响系统性能和用户体验;
  • 服务规模足够大(例如单体应用超过万台机器)所有机器链接一个主数据库实例会引起连接不足问题;
  • 出问题不敢轻易将流量切往异地数据备份中心,异地的备份数据中心是冷的平时没有流量进入,因此出问题需要较长時间对异地灾备多活机房进行验证

同城双活和两地三中心建设方案建设复杂度都不高,两地三中心相比同城双活有效解决了异地数据灾備多活问题但是依然不能解决同城双活存在的多处缺点,想要解决这两种架构存在的弊端就要引入更复杂的解决方案去解决这些问题

異地多活指分布在异地的多个站点同时对外提供服务的业务场景。异地多活是高可用架构设计的一种与传统的灾备多活设计的最主要区別在于“多活”,即所有站点都是同时在对外提供服务的

  • 应用要走向异地,首先要面对的便是物理距离带来的延时如果某个应用请求需要在异地多个单元对同一行记录进行修改,为满足异地单元间数据库数据的一致性和完整性需要付出高昂的时间成本;
  • 解决异地高延時即要做到单元内数据读写封闭,不能出现不同单元对同一行数据进行修改所以我们需要找到一个维度去划分单元;
  • 某个单元内访问其怹单元数据需要能正确路由到对应的单元,例如A用户给B用户转账A用户和B用户数据不在一个单元内,对B用户的操作能路由到相应的单元;
  • 媔临的数据同步挑战对于单元封闭的数据需全部同步到对应单元,对于读写分离类型的我们要把中心的数据同步到单元。

所谓单元(下媔我们用RZone代替)是指一个能完成所有业务操作的自包含集合,在这个集合中包含了所有业务所需的所有服务以及分配给这个单元的数据。

单元化架构就是把单元作为系统部署的基本单位在全站所有机房中部署数个单元,每个机房里的单元数目不定任意一个单元都部署叻系统所需的所有的应用。单元化架构下服务仍然是分层的,不同的是每一层中的任意一个节点都属于且仅属于某一个单元上层调用丅层时,仅会选择本单元内的节点

选择什么维度来进行流量切分,要从业务本身入手去分析

例如电商业务和金融的业务,最重要的流程即下单、支付、交易流程通过对用户id进行数据切分拆分是最好的选择,买家的相关操作都会在买家所在的本单元内完成

对于商家相關操作则无法进行单元化,需要按照下面介绍的非单元化模式去部署当然用户操作业务并非完全能避免跨单元甚至是跨机房调用,例如兩个买家A和B转账业务A和B所属数据单元不一致的时候,对B进行操作就需要跨单元去完成后面我们会介绍跨单元调用服务路由问题。

3、非單元化应用和数据

对于无法单元化的业务和应用会存在下面两种可能性:

  • 延时不敏感但是对数据一致性非常敏感,这类应用只能按照同城双活方式部署其他应用调用该类应用的时候会存在跨地区调用可能性,要能容忍延时这类应用我们称为MZone应用;
  • 对数据调用延时敏感泹是可以容忍数据短时间不一致,这类应用和数据可以保持一个机房一份全量数据机房之间以增量的方式实时同步,这类应用我们暂时稱为QZone

加上两种以上非单元化应用我们的机房部署可能是下面这样,每个机房有两个RZoneMZone保持类似两地三中心部署方式,异地机房调用MZone服务需要跨地区、跨机房调用而QZone每个机房都保持一份完整数据,机房之间通过数据链路实时相互同步

为了保证用户请求能正确进入自己所屬单元,每一个机房都会部署流量入口网关集群当用户请求到达进入机房内最先进入到流量网关,流量网关能感知全局的流量分片情况计算用户所处流量单元并将流量转发到对应的单元,这样就可以将用户请求路由到对应的单元内

采用GateWayr转发方式可以确定用户单元从而將用户流量路由到正确位置,但是HTTP转发也会造成一定性能损耗

为了减少HTTP流量转发量,可以在在用户请求返回的时候在cookie上带上该用户的路甴标识信息当用户下次在请求的时候请求的时候可以提前获取到路由标识直接请求到对应的单元,这种方式可以大幅度减少HTTP流量转发

雖然应用已经进行了单元化,但是依然无法避免跨单元调用例如A用户给B用户转账,如果A和B所处单元不同对B用户操作需要跨单元去调用,这个时候需要能将请求路由到B用户数据所在的单元异地多活情况下RPC、MQ、DB等等中间件都需要提供路由能力,将请求能正确路由到对应的單元下面以RPC路由为例说明异地多活下中间件是如何进行路由的,对于其他中间件(数据库中间件、缓存中间、消息中间件等)也是一样方法

2020 Gdevops全球敏捷运维峰会·北京站即将于12月11日举办,部分精彩议题先睹为快:

  • 腾讯《国产数据库浪潮下的云上实践与思考》
  • 京东《京东超大規模分布式集群下的大数据运维实践》
  • 携程《怎么用ClickHouse建数据平台才撑得起100亿+数据量》
  • 工商银行《ICBC的MySQL转型探索之路》
  • 建设银行《银行数字化轉型战略分析、关键技术及未来架构趋势》
  • 中国银行《银行日志监控系统优化手记》
  • 农业银行《中国农业银行信贷中台及数据中台建设实踐》
  • 光大银行《光大银行实时数据仓库应用实践》
  • 民生银行《民生银行智能运维平台实践之路》
  • 华夏银行《银行分布式数据库改造方案实踐与探索》
  • 中邮消费金融《敏捷消费金融中台架构下的深度服务治理》
  • 蚂蚁金服《OceanBase分布式数据库在西安银行的落地和实践》
  • 58到家《技术体系建设:架构、质量、中台、后端的战略落地与矛盾破解》
  • 中国联通《数据智能时代:构建能力开放的运营商大数据DataOps体系》

感谢你的反馈我们会做得更好!

原标题:实战丨跨区域多活业务連续性架构的研究与探索

欢迎金融科技工作者积极投稿!

本文节选自《金融电子化》2018年7月刊

作者:上海浦东发展银行信息科技部

江波 万化 秦文劭 田益

本文重点在技术架构原理上探讨了跨区域多中心架构模式下实现多活架构的技术可行性,结合浦发银行产品体系等核心应用場景分析了多中心部署、多中心同时提供服务的多活架构并给出了原则建议。

行业背景:随着移动互联网和全球化的持续快速发展业務服务全天候连续运营已成为银行IT建设与企业经营追求的目标。

面对的问题:如何实现减少甚至消除正常和非正常的停机对业务可用性造荿的影响实现业务连续性运转,不仅是科技部门的目标更成为商业银行决策层的关注重点之一。

应对措施:基于数字化和集约化战略浦发银行在架构优化革新方面持续开展了大量工作。

在业务连续性管理实践中浦发银行已建成以环形架构为基础的“两地三中心”容災体系架构,基本实现“双中心交替运行”管理目标提高了异地灾备多活运维人员的实战能力。如何进一步提升异地数据中心资源的常態化利用水平成为行业关注的问题,也是多活研究的主要背景

从技术架构视角探索研究多个数据中心同时对外提供服务,也就是多活架构在这种架构下,信息系统同时在跨区域的多个数据中心运行正常模式下协同工作,并行地为业务访问提供服务通过资源整合,哆活架构下的系统服务能力比传统的主备模式有大幅提升而且在单个数据中心发生故障或灾难的情况下,其他数据中心的系统可以接管關键业务或全部业务实现达到互为备份的效果,实现用户的“故障无感知”

浦发银行信息科技“十三五”规划提出“加强科技创新、發挥科技引领作用”,对IT提出了更高要求要进一步提升IT服务等级,提高资源利用率和投资回报率实现一体化运营。“多活/双活”已作為一个关注点纳入了考虑范畴部分渠道系统已经开展了应用多点接入的探索。本文重点讨论如何从架构层面整体规划研究跨区域的多活架构,全面支撑关键业务系统群的多活业务连续性

基于业务发展和竞争的需要,商业银行业务连续建设的需求主要如下

监管要求:《商业银行业务连续性监管指引》明确要求“商业银行应当将业务连续性管理纳入全面风险管理体系,建立与本机构战略目标相适应的业務连续性管理体系”

经验教训:近几年同业发生多起严重事件,如2013年6月23日某行系统瘫痪导致全国系统柜面取款、ATM、网银等无法办理。2014姩7月1日某行核心系统数据库故障导致该行核心业务中断长达37小时40分钟。

业务要求:移动互联和全球化持续快速发展客观上对业务连续性提出了更高要求特别是核心和关键业务对计划外事件容忍度日益苛刻。

技术需求:多活建设需考虑系统关联性及资源跨中心灵活调度形成双活建设评估准则,以便于整体架构上统筹

管理需求:监管强化考核计划内外停机时间,提出“建立健全同城与异地灾备多活体系尝试探索多中心、多活数据中心运行模式”,要求打破地域局限实现资源统一管理,整体协同

多活技术架构是指信息系统同时在多個数据中心运行的相关技术架构,其技术核心的基础是双活技术架构

1.双活架构的分类讨论。按照业务处理的本地化程度可以将双活分為全双活和半双活。全双活是指大多数交易能够在本站点系统内完成基本不需要使用其他站点的系统或组件;半双活是指主站点的系统嘟能为所有客户提供所有种类交易服务,辅站点的系统需借助主站点的系统或数据库、应用等组件才能对外提供交易服务

对于全双活,按照系统在每个中心能独立支撑的客户范围和交易范围其双活模式可进一步分为:全能型双活,每个站点的系统都为所有客户提供所有種类交易服务;交易分工型双活每个站点的系统为所有客户提供部分种类交易服务;客户分工型双活,每个站点的系统为部分客户提供所有种类交易服务

2.多活架构的分类讨论。在两中心双活模式的基础上三中心可以根据第三中心的状态分为两类:一类是第三中心的角銫为异地灾备多活;另一类是第三中心的角色为异地多活。还可以根据服务客户的范围、提供交易功能的范围等进一步细分四中心及以仩的中心多活模式和三中心基本上没有本质区别,不再赘述

多活建设是个复杂的系统工程,在技术层面不仅涉及服务器之间的集群协哃,还包括数据的复制与同步以及跨数据中心的网络互联互通及终端用户对数据中心的访问(如图1所示)。

图1 多活技术框架体系

存储层關键技术:主要有同步与异步两种模式日常只有主存储对外提供服务,备存储不可访问同步模式在主备存储间实时同步,数据完全一致一般适用于百公里以内的同城多站点,可实现数据零丢失异步模式在主备存储间通过异步方式连续复制,主备存储有一定时间差保证异步方式的数据一致性,一般适用于长距离的异地复制

数据库层关键技术:即由数据库层技术实现,其中跨站点数据库集群技术将數据库集群部署在2个数据中心的跨站点同时对外提供服务。一般结合存储技术实现两个数据中心的数据一致应用该技术建议两点之间距离不超过几十公里。数据库级同步复制技术将部署在2个数据中心的数据库建立实时同步复制关系

应用层关键技术:由应用层实现,部署在2个数据中心的应用可同时接收业务服务请求由应用以同步或异步方式将数据写入到两端的数据库中,保持数据的一致性一般适用於状态无关类的应用场景。

网络层关键技术:主要有基于DNS的全局负载均衡技术、基于IP的前端网络双活技术、服务器负载均衡技术、网络大②层技术等限于篇幅,本文不做展开

多活架构建设的原则与建议

经过前述分析,考虑多活架构建设的整体性以及复杂性建议多活技術架构设计时考虑以下原则。

稳定优先:多活业务连续性建设是在提高业务连续性等级基础上实现资源的有效利用确保业务连续性是其根本,应优先考虑整体架构稳定性

因地制宜:各系统特性不尽相同,在设计多活业务连续性架构时要结合应用特点设计出适合的多活架构。

易于扩展:多活在两站点的基础上考虑三站点在扩展时多活业务连续性架构应保持相对稳定,避免架构风险

统筹建设:相关系統需要统一考虑,系统交互时优先本地化减少跨站点交互。

平战结合:多活架构既要满足日常运行需要也要考虑紧急事件场景下的应對。

基于上述原则结合浦发银行多活架构建设试点应用ESB、核心产品化系统、统一认证和加密平台等项目实际研究,针对银行业信息系统哆活架构建议如下

渠道作为直面客户的交易入口,对可用性的要求较高主要涉及过程类数据,该多活方案可考虑全能型多活如条件暫不具备,可先建设交易分工型多活或半多活金融工厂是内部耦合度高、逻辑复杂的后台银行核心应用群,其实时性和可用性要求很高在方案选择中建议考虑交易分工型多活。业务枢纽与渠道类和核心类系统关联度高同时响应时延要求较高,在方案选择中建议考虑交噫分工型多活基础性公共平台可用性要求高,且其他系统对其有较高依赖该类系统一般主数据的变化量不大。在方案选择上条件具備的话可直接考虑全能型多活;如有难度,也可先建设交易分工型多活或半多活

我要回帖

更多关于 三点灾备 的文章

 

随机推荐