DR(Disaster Recovery)系统容灾和BC(Business Continuity)业务连续性解决方案是业界基础架构Infrastructure方面的一个主要解决方案,各大存储硬件和软件公司都有自己的解决方案,总的来说,分为基于存储、服务器、以及软件应用三种方式或者相互组合。因为通常来说,容灾解决方案都会在业务系统已经投入运行一段时间后,由于重要性的不断增加才提上日程,所以建设一个容灾系统必须完善地考虑对现有系统的综合影响,仔细设计,否则会产生各种各样的麻烦和困难。下面就和大家分享一个真实的案例。
客户是一家在全球芯片行业排名靠前的外资企业,在中国拥有200mm和300mm两条生产线,每条生产线都有自己的MES(制造执行系统)系统。其中数据库MESDB是重中之重,采用Oracle RAC来实现高可靠性,跑在两台满配的HP rp7640上,后升级到rp8640,存储系统也采取了HP高端的XP12000。每个系统的两台主机通过自己的SAN连接到自己的XP12000上,两台XP12000通过CA(continuous access,类似EMC的SRDF)软件同步对方的MESDB数据库,防范万一XP12000故障,数据不丢失。系统架构图如下:
由于是芯片企业,系统可靠性是第一位的,一旦停机损失惨重(每小时的损失高达100万美金,主要是停产的产品销售额和高昂机器设备的折旧),所以在IT系统上是非常舍得投入的。虽然采用了RAC,但负载全部集中在其中一台机器上,采购两台一样配置的机器加RAC就是为了在down机时,能零时间切换到另外一台机器上。
从上图可以看出,200mm和300mm的MES系统互相隔离,两个SAN也没有连接起来。客户的应用部门认为,万一300mm的存储XP12000坏掉,虽然在200mm的XP12000系统上仍然有数据,但是应用并不能自动切换来访问,所以提出了系统容灾的项目。由于系统大部分是HP的,当然HP被邀请提交解决方案。另外客户在其他的系统上还使用了EMC的Symmetrix,有竞争才能获得更好的价格,同时EMC也对这样一个大客户虎视眈眈,所以EMC也参与了方案提交。最后总共提交了三个方案:
方案 1:HP Campuscluster + RAC
方案 2:HP Metrocluster+CA
方案 3:Oracle data guard
方案 1
采用HP的Campuscluster来实现200mm和300mm两套系统的自动切换,利用Mirrordisk实现两个site的数据同步。该方案的系统架构图如下:
方案 1的优点:支持Oracle RAC,可以实现在灾难时,零时间切换到另外一个site。实施不需要停机。
方案 1的缺点:不支持CA,浪费现有投资;需要将两个SAN连接起来,让所有的Server可以访问两个存储,主机利用Mirrordisk同时写两边的存储,对主机的性能有影响。
本来这是一个不错的方案,但是由于XP在LUN上已经配置了条带化Strip(不知道是谁出的主意),Mirrordisk不支持,需要去掉strip,重新划卷,然后重新安装Oracle,从磁带备份恢复数据。这样不但需要停机1天以上,而且风险极大(客户的磁带备份重来没有做过恢复测试),万一数据无法恢复将变成一个大事故。
1
方案 2
采用HP的Metrocluster来实现200mm和300mm两套系统的自动切换,利用CA实现两个site的数据同步。该方案的系统架构图如下:
方案 2的优点:对于现有的硬件环境不需要调整,利用存储上的CA软件来实现数据同步对于服务器负载无影响。
方案 2的缺点:由于Metrocluster不支持Oracle RAC,在两个site间发生切换时,MESDB数据库需要reboot。另外由于要去掉RAC,需要系统停机1~2小时。这两点客户都无法接受。
方案 3
是由EMC提出的方案。在一个HP的Installbase里要实现容灾方案,EMC只能采用基于应用的办法。具体办法是增加一台新的存储(当然是EMC的啦),然后利用Oracle的Data Guard来同步数据。Data Guard对存储没有要求,对于服务器要求是相同的OS和相同的Oracle版本,所以服务器还必须是HP的(EMC也没有服务器啦,当然不会眼红)。
方案 3的优点:对于存储没有要求,厂商无关。
方案 3的缺点:由于Data Guard的数据同步是基于Oracle的Redo Log或Arch Log,增加了主机的负载,而且要通过网络来传递数据,消耗了带宽;当灾难发生时,所有客户端必须重新连接备份站点的主机,会有中断影响;Data Guard运作有两种方式,同步或异步,同步模式对于主站点的性能影响大(主站点必须得到备份站点的肯定回复才能进行下一步操作),而异步模式可能在灾难切换时丢数据;在最初始的数据同步阶段,仍然需要系统停机,当两边数据一致之后备份站点才能基于日志进行更新。