在上期活动(双活数据中心建设系列之--基于SVC的三种主流双活数据中心架构深入探讨)中,我们深入探讨了基于IBM SVC的三种主流双活数据中心架构,分别是SVC Stretch Cluster、SVC HyperSwap和SVC Local VDM+SVC PPRC,并围绕这三种架构进行了详细深入的特性挖掘和方案对比。
上述三种方案主要从跨中心的存储的双活角度,设计出双活数据中心的基础存储架构,存储对于数据库系统来说通常都是必要的,但对于应用系统来说是可有可无的,尤其是在互联网时代,号召的是横向扩展和弹性伸缩的应用系统架构,所以在整个双活数据中心的角度来看,上述三种方案的适用范围和灵活度都有一定的限度,另外,在OLTP数据库双活方面,基于存储的双活方案仍需要结合并行DB等软件双活方案,才能真正发挥该方案的优势。
基于此,软件架构的跨中心双活方案也是非常值得探讨的,所以本期活动我们围绕着“软件架构的双活数据中心”这一双活数据中心建设方案进行了深入的探讨。
活动讨论之前,笔者对一些相关知识点进行了粗浅的分享,内容如下:
1、基于软件架构的双活数据中心建设方案深入探讨(GPFS部分)
2、基于软件架构的双活数据中心建设方案深入探讨(并行Oracle部分) ")
3、基于软件架构的双活数据中心建设方案深入探讨(并行DB2部分)")
4、基于软件架构的双活数据中心建设方案深入探讨(整体架构部分)")
活动讨论会上,大家踊跃发言,特别感谢孙伟光,pysx0503,bryan_sd,mmsc5166,lzx660927,陈宇,zhanghaiyang,funtest,tianshizuoyi,libai21,王巧雷,sxliuxianlin,张文正等社区会员提出了许多宝贵的观点和意见,现在笔者将各类议题观点和各类问题及回答进行梳理总结,如有疏漏,还请不吝赐教。
主要分为五个部分:
一、整体双活架构设计方面
二、双活数据库方面
三、GPFS双活方面
四、双活数据中心前提、需求、问题及影响方面
五、双活架构实现过程方面
【核心议题】采用软件架构的双活数据中心还是虚拟化存储架构双活数据中心?
【观点一】
双活有很多种理解和实现方式。
选择哪种技术路线也要看用户自身的IT环境,有的IT环境天然就具备了双活的基础。有的IT环境需要进行大量的整改。
底层基础决定上层建筑。不管是软件架构的双活数据中心还是虚拟化存储架构双活数据中心
【观点二】
双活数据中心,牵涉到各个层面的双活,存储级别、数据库级别、网络级别、应用级别,每个级别都利用不同的技术手
段,您指的软件架构 和虚拟化存储架构还是太粗了!没法具体给您答复!
【观点三】
不好意思,可能议题的意思不够清晰,这个议题的意思是要大家一起讨论下,双活数据中心的存储基础架构的双活是采
用存储层面的、还是基于软件层面的。比如存储层面的可以用存储网关的双活,或者高端存储的双活,在存储底层就实现了两个站点同时的数据读写,而软件架构的双活,可以用并行文件系统的方式实现,比如GPFS,可以做两个中心NSD的复制,但是是通过网络的方式实时复制保持同步,网络采用INFINIBAND网络、万兆或者ROCE网络等,同步的性能也不比SAN交换机慢,甚至INFINIBAND是40GB,还强于SAN。大家可以从这个角度说说自己的看法。
【观点四】
关于双活中心基础存储架构的建设是采用软件架构还是虚拟化存储或者底层存储架构,简要对比如下:
1.实现方式方面:
底层存储自带的双活技术其实和软件方式来实现存储的双活其实从最基本的原理上都差不多,底层存储也是靠存储的软
件来实现双活,而软件的方式只不过将该软件的方式移至了主机端,消耗了主机的内存和CPU。
2.网络方面:
同步的网络一个是SAN网络,一个是TCP/IP网络,TCP/IP网络发展到现在,高速互联网无论从带宽上海市速率上,都有很大的提升,甚至超越了SAN网络,如INFINIBAND网络,带宽高达40GB,所以同步网络是差不多的。
3.性价比方面:
底层存储的双活要么采用高端存储的功能,如DS8000+HYPERSWAP技术,要么采用存储虚拟化的双活功能,如SVC ESC、SVC HYPERSWAP或者VPLEX METRO。性能较好,但价格昂贵。而软件架构的方式,ASM或者GPFS等并行文件系统就可以实现,价格便宜,主机提供给GPFS的缓存越大,性能也会越 好,这种方式性价比高一点。
所以综合对比来看,采用底层存储的方式可靠性和稳定性更高,采用软件架构的方式性价比更高。更多的时候选择双活的方式我觉得最后决定的更多的是价格和业务的重要性,双活的地域性,两种双活的方式在不同的环境,不同的资金投入下也会有不同的人选择。有些时候有些企业资金紧张,可选择的方案也被迫受限。
【核心议题】双活数据中心下的应用负载架构如何设计?
【观点一】
应用双活分2个层面:应用程序双活和数据库双活(ADG)。应用负载这块我们是使用DNS进行引流负载,分发到不同的数据中心,引流的规则是根据业务逻辑的相关数据来的,采用F5进行L7负载。
【观点二】
拿这张架构图,举个例子:
【核心议题】OLTP下的DB2 PureScale VS ORACLE RAC对比探讨
在OLTP并行DB的解决方案中,DB2 PureScale 和ORACLE RAC是很好的选择,但是该如何选择呢?他们的优势和不足都体现在哪?关于这个话题,大家可以尽情提出自己的看法和观点。希望借助大家的讨论,让我们更深入的了解这两种并行DB方案。
【观点一】
我不懂DB2,只从oracle的角度上来说一下吧。
1、实质上,oracle推出RAC(早期叫ops),强调的是其高可用性,而不是可伸缩性。要充分发挥RAC的性能,应用必须针对RAC的特点进行编程(数据分割及数据路由),否则性能反而下降。远的说,01-02年,那时候江西绿卡系统用的是oracle 7 OPS,在结息的时候都是跑单实例;近期的,象双11,我们的某些系统也是单实例在跑(11.2.0.4 rac+asm)
2、在rac环境下,之前在单实例上不是问题的部分也会引起性能问题,最典型的就是gc类等待事件了,等待从行级锁放
大到块级等待,象大集中期间的原型性能压测期间,为了规避一个尾箱表引起的gc等待事件,我们把此表的pctfree放大到99以保证一个数据块上只保留一条记录。
3、rac环境中虽然实例是多个,但存储是单点,如果想增加节点来提高性能的话,只适用于cpu密集型的应用(前提是针对rac的特点编程),如果是io密集型的应用,节点越多估计死得越快。
4、无论是单机还是rac,要特别注意lgwr的性能优化,gc类的等待事件中,log file sync是其中的一步,lgwr对gc的影响是指数级的,我们行的某系统在做灾备切换时,主库与备库基本一致,但备库的性能与主库始终差20%,后面是把备库的logfile member去掉就OK了。
【观点二】
我从两个最重要的方面评测:
【问题】GPFS上面都是跑哪些业务系统?
据我理解,GPFS是一种并行分布式文件系统,可以提供文件共享的服务。那么,当前GPFS上面都是跑哪些业务系统?具
体应用在哪些行业?
【答复】GPFS作为并行文件系统时,可以为需要共享数据的应用提供数据存储,无论什么行业、什么业务系统基本都可以用。也可以为需要共享数据的数据库提供数据存储,如ORACLE RAC+GPFS或者DB2 PURESCALE+GPFS。
GPFS作为分布式文件系统时(GPFS-FPO),可以为大数据提供数据存储支持,分布式数据库和分布式应用可以跑在上面。
【问题】GPFS能否支持同时写同一个文件?
AIX搭建GPFS文件系统,应用部署于集群文件系统之上。现业务提出各AIX终端需要同时访问修改gpfs中的文件(日志文件、配置文件等),请问能否实现,如何实现?
【答复1】这个应该需要应用层面来控制实现,分布式应用锁,GPFS我用vi测试过2个节点编辑同一个文件,一个节点在编辑状态,另外一个节点编辑是无法正常保存,强制保存会有数据丢失问题。AIX节点需要同时访问修改gpfs中的文件(日志文件、配置文件等)
【答复2】ls正解,一般gpfs文件一个在写状态,这个文件会被锁,另一个节点无法正常编辑,但可以读。
【答复3】不能同时写的,GPFS有锁机制,一个时间戳只能允许一个节点写操作。
【问题】双活数据中心建设和传统数据中心建设有哪些区别?
【答复】传统的数据中心环境下,灾备生产中心长年处于休眠状态,并不参与前端应用的数据读写工作。如果数据中心环境良好,没有突发性灾难的发生,灾备中心资源就一直处于闲置状态,造成用户投资浪费。而在双活解决方案中,分布于不同数据中心的系统均处于工作状态。两套系统承载相同的前端业务,且互为热备,同时承担生产和灾备服务。这样不仅解决了资源长期闲置浪费的大问题,还能使数据中心的服务能力得到双倍提升。区别主要有以下几个方面:
1.系统整体资源利用率上
2.系统整体高可用上
3.系统、架构复杂度上
4.系统维护、管理成本、难度上
5.规章制度和运维流程上
【问题】本地双活数据中心的选择问题
一般说双活,都是针对跨广域网的两个数据中心实现双活,如果是在一个园区内的两栋楼内实现双活(每个楼内都有机
房),两个机房内实现双活,和跨广域网的双活实现有何区别是否需要全局负载均衡、服务器负载均衡、大二层等技术?
【答复】在同一个园区的两栋楼内的双活,通常只需要将三层接入交换机放置至另一机房即可,打通三层,网络架构也较简单。而远距离的10KM以上的两个数据中心,通常需要将二层汇聚层交换机放置至另一机房,打通大二层,网络架构复杂。当然远距离的双活数据中心,域名服务器和负载均衡也是必须的。这两者的最主要的区别还是网络流转过程是串行还是并行,而且前者需要过多的跨机房网络流量,站点B的任何一个跨网段访问,都需要经过站点A。
楼主感兴趣可以去看看大二层的相关技术。
【问题】双活数据中心在虚拟化、云平台构建中有哪些应用?
【答复】双活数据中心指的是应用在两个不同的数据中心的部署方式,跟采用何种虚拟化技术,是否搭建了云平台无关,跑的哪些应用也无关,各类应用和数据库都有相关解决办法和方案。如在线联机型应用、在线联机型消息队列+应用、在线分析型应用都有解决办法。详细架构可见:
基于软件架构的双活数据中心建设架构
【问题】基于软件架构的双活数据中心的整体规划对于设备硬件、中间件软件、应用软件等系统组件有哪些需求?
基于软件架构的双活数据中心的整体规划设计过程中,除了底层分布式文件系统、并行数据库之外,对于服务器存储网络设备硬件、中间件软件、集群软件、虚拟化软件、应用软件等系统组件还有哪些需求?各个层次之间是否也有一些联动要求?
【答复】服务器和传统数据中心一样,该用什么还是什么基于存储双活基础架构的双活数据中心,需要对存储有特殊的要求,比如需要高端存储的跨中心双活技术,比如DS8000+HYPERSWAP技术,或者需要在两个数据中心的存储之上,建立统一的存储虚拟化,用存储虚拟化的双活技术实现,如SVC ESC或者SVC HYPERSWAP或者VPLEX METRO等。
如果不采用存储双活基础架构,可以用软件的方式,如并行文件系统实现两个数据中心的存储同时读写。像GPFS NSD服务架构模式,或者ORACLE RAC+GPFS/ASM 或者DB2 PURESCALE等。对于无需共享存储的,直接搭建跨中心中间件集群,或者应用跨中心部署即可。
网络设备需要打通大二层网络
中间件软件、虚拟化软件和应用软件没有什么特别的需求,按照传统数据中心一样的形式即可,只是部署了这些软件的
节点拉开至两个数据中心而已。
各个层次间的联动就如同传统单一数据中心内部搞双活一样。只是架构形式和部署形式的差别。
【问题】双活数据中心对日常运维影响?
众所周知,双活数据中心跟传统主备模式相比有许多优点 但是双活数据中心建设完成之后对于日常运维是否也有影响?
【答复】有很大的影响,双活数据中心由于从DNS、应用负载、消息队列、中间件、应用、数据库到存储架构都发生了很大的改变,所以日常运维的方式也发生了变化。简单说说:
从流程制度上来说,所有的变更需要考虑,两个数据中心的所有节点的变更,缺一不可,架构上,网络上、运维上、应用上都需要结合整体架构更改自己的管理方式、运维方式和变更方式,流程上,需要结合整体架构、方式方法做出改变。比如说变更时必须要体现两个站点的变更步骤,必须有专人对变更方案做审核,这对人的素质更加加强了,更加强调了人与人的联动机制和默契配合。
从运维管理上来说,两个数据中心都需要人,巡检监控、备份都需要覆盖到两个数据中心,更强调了故障告警处置机制
,对监控的精细程度有很高的要求。否者一个故障,根本就不知道哪里是故障根源,根本不确定影响范围和影响点,然后双数据中心架构就背锅了。。从节点到集群到应用到业务,都需要体现出他的影响范围,和影响点,出现问题,立马就知道哪里是故障源头,做出相应的判断。
【问题】双活技术的必要前提是什么?如何提高数据同步的效率?
请问一下,在部署双活中心过程中,需要哪些必要前提是什么?如果提高数据同步的效率?
【答复】简单说下:
第一个问题:
要能实现数据中心级别的双活,有三个必要条件,首先网络是基础,裸光纤,DWDM,并打通大二层网络。其次是数据的
双活,怎么做到两个站点同时读写两份数据副本,并是同保持数据的一致性。对于数据库来讲,最理想的状态是,两个数据中心能够同时读写本地副本,并保持这两个副本的事务层一致性。最后是应用双活,如何保持两个数据中心的应用能够同时对外服务,并均衡负载业务。
第二个问题:
提高数据同步效率,j均涉及到两个中心间裸光纤的带宽,和光衰问题。分两个方面,一是SAN网络同步,提升带宽方法有,级联的光纤模块的带宽尽量大,并多做几个模块的Trunking;二是网络同步,采用万兆或者ROCE或者INFINIBAND交换机来作为网络同步的交换机。
存储与存储的同步,尽量扩大用来同步的缓存大小;通过主机与主机的方式同步的,如GPFS,也尽量分配多的内存给缓存。
【问题】双活数据中心数据和配置同步问题
这里说的双活数据中心的数据同步包括:数据库、中间件、操作系统、应用、其他配置信息等,这里不仅涉及到使用技术或者工具/软件来实现同步,还需要制定相关的同步规范来实现同步管理。双活数据中心数据同步的实现方式是怎样的?
【答复】这个问题问的好,这是双活数据中心建设过程中,必然遇到的痛点问题,这里分两个方面,自动同步和手动同步对于数据库来说,并行DB都是多实例运行,就涉及到实例的参数同步和实例环境变量的同步问题,这个需要手动同步。而数据库文件和数据库日志本身就放在外置存储当中,随着基础存储的双活技术,或者基于软件的双活技术自动同步至另一数据中心。
对于中间件来讲,有两个数据中心所有节点搭建一个大的集群,也有分别搭建集群,无论如何,都涉及到配置同步的问
题,这个需要手动同步,检查保持一致。
对于应用来讲,无论是部署于中间件的应用,还是单独部署于主机的应用也是需要手动同步。应用的共享数据,可以随存储还保持同步。
对于操作系统来说,也是手动同步。
所以可以看到,双活数据中心,能够实现自动同步的还是非常少的。大部分需要人工手动的同步,这时就需要制定严格的同步制度,规范的同步步骤,细致的同步流程,来杜绝两个数据中心所有环节、节点的不一致风险。必要时,需要梳理所有需同步的配置项,通过统一的同步软件或者工具,来实现自动化比对和变更投产,比如自动化投产工具,在流程审批过后,自动化投产工具,将按照自定义的脚本,自动在所有节点运行相同的命令,保持所有配置项的一致性。
【问题】异地双活数据库中心,一中心宕掉,另一中心能快速接管业务,保障数据一致到什么程度?
异地双活数据库中心,高并发业务,多写入,一中心宕掉,另一中心能快速接管业务,保障数据一致到什么程度。有案例分享吗?
【答复】如果是基于存储底层的实时复制技术,或者并行文件系统的实时复制技术,数据一致性只能是基于存储块级别的,对于应用来说,这种数据一致性是没有关系的。对于数据库来说,由于不是事务层的数据一致性,在数据没有同步完成时,数据库事务提交了,也在本地落盘了,但该数据中心就故障了,那么,另一中心的数据库数据文件和日志文件都跟主数据中心不一致了,这样的情况下,会有一定的可能性,造成该数据中心数据库出现逻辑问题,无法顺利接管。但目前来说,能够起到从事务层保证一致性的,只能是数据库复制技术,如HADR、DG或者CDC等,但这种技术只是容灾技术,不是双活技术,所以为了数据库既双活,又为了防范一下“万一”,最后还是做一下数据库复制。可以不同实时同步,可以用异步,但RPO和RTO不是0。
【核心议题】如何多措并举、稳步过渡地建设双活数据中心?
【观点一】
先从底层开始,打通网络,然后实现存储双活,服务器双活
,最后进行业务应用改造,实现业务应用层面的双活。
【观点二】
1.知道自己要啥
2.知道建设的代价
3.对产品技术足够的清晰认知
4.先测试系统,后边缘系统,在重要系统稳步的推进
【观点三】
看你想达到什么样的双活了。对于传统的结构来说,先做好网络层,网路是基础。再做好怎么设计应用层,最后设计好 数据层用什么样的技术做双活。实际应用来看。还是数据库的oracle的双活比较好。
【观点四】
根据我院建设经验,我们是灾备机房同样安装一台和主机房相同品牌型号的核心交换机,同一配置,然后部署独立光纤到各楼汇聚层交换机,即先建网络。第二步,做服务器双活,一台在主机房,一台在灾备机房。第三步安装存储双活硬件设备,存储阵列品牌容量和主机房一致。第四步,医院信息系统软件工程师作数据迁移,部署应用软件,实现业务层面双活。
【观点五】
双活中心建设要有计划性,要有相应预算、人力、资源、沟通、保障等等。现有生产既要保证生产进行,也要做好重组准备。在有充足预算情况下:
首先选择一个技术成熟、稳定、可扩展的、适合自己的方案作为双活建设模板。
再者涉及系统相关部门之间要加强沟通。对建设双活中如何保障业务连续性、生产稳定性、迁移盲点/痛点、迁移后业务稳定性、双活建设达标能力等等进行充分交流和合作。更要明确的领导和沟通机制、责任清晰、沟通顺畅。最好,有条件的,在迁移前搭一套准双活中心,严格按照未来生产来测试,看方案各项指标是否达到建设要求,系统是否稳定,生产能力是否满足对业务发展的需要。一切就绪,生产切换到双活最好能争取停机窗口,各个业务口、实施流程精确到位,更要有应急方案,对可能出现情况进行精确定位、处理。有一点需要提醒,改造范围在确定方案的前提下,不要随意更改,不要导致项目范围不可控,风险不可控,责任不可控,那必然导致未来不可知。
最后就是因司制宜,行动胜于一切,走过方知痛过才能快乐!
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞11
添加新评论0 条评论