A:我有容灾备份B:我有双活A:我有存储虚拟化B:我有双活A:我有同步ReplicationB:我有双活A:我有HA高可用B:我有活A:我有两地三中心没有双活方案有点不好意思见客户。而不少甲方也纷纷冲向“双活”,仿佛有了这个,一下子就高端化了……双活真有宣传的那么好吗?它改进了哪些地方,或者解决了什么问题?让我先举几个例子。背景一:doublewrite可以算双活吗?在今年的vForum大会上,一位用户朋友和我讨论了存储阵列的单点故障问题。几年前,包括某旅游网站在内的双控阵列出现故障,导致业务中断。虽然是极小概率事件,却引起了越来越多的关注。众所周知,主流企业级存储的可用性通常可以达到99.999%。除了硬盘/SSDRAID保护外,控制器、电源、风扇模块都是冗余的,没有单点故障。问题。另外,商用存储系统的软件可靠性已经相当高,但也不能说是无懈可击。然后,该用户在旁边的展位提到了某厂商的双节点存储虚拟化(容灾)网关,觉得不错。事实上,这种解决方案也是有代价的。除了成本之外,还需要占用更多的SAN交换机(通常这种环境是FC)端口;更改主机端的多路径;可能会造成性能瓶颈;并浪费阵列上的一些软件功能。当然,存储网关的存在是有原因的,但真正让我感到无奈的是,一些厂商将这种方案统称为“双活”——导致一些用户认为两套阵列是镜像的,在数据中心双写。也是active-active,我觉得这个比传统的数据保护更高级。。。背景二:volumemanager的镜像类似,前几天接到一个用户朋友的电话。他要求RPO=0,即不能有数据丢失。传统的存储同步复制也担心切换后数据库的一致性问题。这个问题目前还不突出,因为是Windows+SQLServer环境,后续计划使用Linux+Oracle。有人向他推荐了EMC的几十万设备(我猜可能是VPLEXLocal),结果我转了。他这次要解决的是单个array的故障(计划备份估计已经有了),如果用OracleASM的Normalredundancy同时写两个array是不是就可以了?卖设备和license的兄弟不要骂我。从技术角度来看,AIX下的LVM和其他支持镜像的主机端卷管理器已经足够健壮了。对于比较单一的需求,有时可以少花一点钱。不过一般认为Linux下的LVM并没有那么靠谱,OracleASM“双机双柜”必须考虑仲裁盘的问题,而且很多用户也有Windows和VMware虚拟机环境。“本地存储双活”是伪***吗?我将在本文的最后一段继续讨论这个问题。如果扩展到双活数据中心,OracleASM理论上可以支持跨站点存储“双写”,形成ExtendRAC集群。但是距离远了,效果……谁试过就知道了。背景三:双活出局?大家在不同的地方玩,活的多。今年的双十一购物狂欢还没结束,下面这条微博的出现就让人觉得“高大上”了。去O不说,关键亮点是1000多公里的“异地多住”。按照传统的理解,对数据一致性要求非常高的应用,比如金融系统,通常在100公里以内处于同步复制(或镜像)级别。没见过包括四大行在内的国内外传统金融机构都标榜过这种双活(更不用说三活了)?是技术限制,还是业务上没有这个需求?本文也想从纯技术的角度入手。从公开资料的角度,简单讨论一下A厂的双活实现和人们口中的双活存储和数据库的区别。注:本文仅代表作者个人观点,与任何机构无关。如有错误和不足,欢迎批评指正。互为备份算双活吗?两地三中心容灾示意图上面是我画的典型草图。H市有两个数据中心A和B,相距不超过100公里(理论5ms延迟),它们之间是裸光纤连接。在A和B之间,可以使用存储和/或数据库级别的同步复制,以最大限度地减少RPO(恢复点目标)和RTO(恢复时间目标)。位于S市的数据中心C可能相距1000公里,由于延迟和线路成本,一般采用异步复制或异地备份。最初,中心A和中心B之间存在主备关系,服务水平决定其无法进行降级容灾,B需要部署与A相同的全套软硬件,这时候问题就来了。有什么办法可以利用空闲的备用设备吗?也就是A和B之间互为备份。需要注意的是,依赖的服务尽量在同一个数据中心,也就是拆分。其次,两边的负载不要超过50%,这样才能保证发生failover时,业务可以集中在一个中心处理。这让我想起了存储控制器之间的ALUA。它不是“真正的双活”,但更实用。为什么双活比同步复制更怕“光纤抖动”?上表来自于我给用户的一个咨询建议。如有不严谨和专业的地方还请见谅。这里我们主要看存储级别的“双活”和“同步复制”的区别,按照RPO=0的理想情况来讨论。同步复制可以使用脚本来做自动切换,但在实际应用中,大多选择手动切换,比较靠谱;从理论上讲,主用和主用之间的切换更简单、更快捷,但缺点是日常维护工作量大,限制多。同步复制和双活都有距离限制,在距离较长的情况下,性能会因延迟而受到较大影响。和OracleExtendedRAC双活集群一样,数据库服务器之间的链路带宽/延迟也要考虑。对于同步复制,无论主备还是互为备份,如果A和B中央存储之间的链路不稳定或中断,都可以按照预设的重试/超时策略进行处理。可以暂停LUN(卷)的镜像关系,将源端存储中新产生的数据变化暂存起来,等链路恢复后再恢复到复制状态。因此,只有两个数据中心之间的光纤出现异常,才不会触发业务迁移。活跃的生活是不同的。由于两端主机的存储I/O都要写到两个中心A和B的存储中,一旦链路中断,就只能用第三个站点(可以用第三个中心C了)仲裁一端为“活”,另一端不可访问,保证数据一致性。这时候需要访问存储的数据库和上层业务就必须切换到一端。由于同步双活链路中断的成本远大于复制,因此对间歇性中断(也称为“抖动”)的容忍度可能更宽。这就带来了一个问题。在flashoff期间,两边的数据都不允许写入,这对一些应用来说是致命的。数据库复制和双活上图我在《存储极客:多方位全面保护数据库》一文中用过。在一定距离内,OracleDataGuard可以实现数据库的redolog同步复制到物理备库,达到RPO=0。ADG备库可以只读方式打开,不能和主库严格一致(因为logapply的时间,会有一点滞后)。至于OracleGoldenGate、DellSharePlex等逻辑复制软件,可以实现数据库的双活读写,但是会有秒级的滞后(通常一端数据库变化至少1秒到在另一端反映)滞后。这种方式无法实现强一致性,而且金融行业的账户等数据库通常都是复制迁移,不适合双活。另外,由于逻辑复制的灵活性,可靠性不是很好。至于远程RAC集群,前面说了,在很多情况下并不是很实用。千公里多动是如何实现的?(本段仅供参考,主要是为了拓展你的思路。)经过上面的讨论,应该可以看出传统存储和数据库的双活存在着各种局限性。下面我们就来看看互联网公司是如何突围的。注:以上文字来自今年双11之前,应该指的是淘宝双直播而不是支付宝,使用的数据库可能不是OB。一起作为参考。首先,我们看到了“切片”,也就是说在某个时间点,应该是细分粒度的“互为备份”。当然,这种相互备份比传统的相互备份更加灵活。注:以上文字来自知乎,此处引用仅供参考。VendorA的双活/多活不是简单的通过数据库或者存储层技术实现的,而是和上层业务逻辑紧密相关的。这是大多数企业和机构难以复制的。上图中第一句的前提应该是“1000公里”的距离。考虑到双十一期间巨大的交易量,异步复制能做到1分钟的RPO已经很不错了。上图取自Veritas高级架构师黄海峰在存储峰会大师班的分享《Server SAN的数据保护和容灾》关于双十一的多活话题。由于我在数据库和应用方面的知识比较有限,就不多说了。***还有一个思考问题,有兴趣的朋友可以在文章下方评论。或者回到我一开始画的那张图。光纤的延迟大家很难突破。对于最终落入数据库的记录——可能对应的是账户中的钱,如果在A中心提交,至少日志会同步写入B中心再返回。远程C中心可以是异步的——银行大致也是如此。至于在C中心提交的业务?我相信数据中心有足够的冗余,那么是否也有一个同城的容灾站点?如果有,有多远?适用双活上面讲了“双十一”的高层结构,或许只有BAT级别的互联网巨头才能玩得转。那我们就通过实际案例看看双活存储的价值,拨开迷雾,剔除那些看起来很漂亮但很难用的东西。上图来自DEF2105大会上一位CIO/IT总经理的案例信息。这里我们以几个用户为例。该技术不限于某个制造商的某个产品。如上图所示,生产机房核心与外围两台DellSC8000之间配置“本地双活”,生产机房与同城容灾机房之间进行异步复制(降低线路带宽要求)。其中,核心存储配置SSD+SAS盘,CDP粒度为1小时,快照恢复点共保留3天;外设存储4周内新增历史数据回放点,粒度为8小时。除了SSD,还应该使用大容量的NL-SAS来存储快照数据;同城核心容灾存储保留快照,保留期限为1年,粒度为1天,实现数据长期备份。既有NL-SAS保容量,也有SSD+SAS备份接管业务时的性能需求。除了同步/异步复制、高效快照、自动分层存储技术外,最主要的特点是本地双活。与本文开头提到的LVM/ASM卷镜像相比有什么好处呢?借助LiveVolume,配置在两套DellSC阵列之间的双活LUN,借助虚拟端口和多路径技术,前端服务器可以看到Comeisaroll。切换到从另一个阵列控制器访问和更改LUNOwner对上层服务是无缝和透明的。LiveVolume的实现更底层,没有LVM/ASM对操作系统和数据库的限制。按照我的理解,对于这种场景,EMCVPLEXLocal也可以达到同样的效果,只是阵列直接实现双活的成本更低。用户双活数据中心的整体架构支持很多同步复制和双活产品。但是在实际部署中,我们发现大部分用户还是选择了异步。这是因为前面提到的距离和传输链路。那么,某市某工业园区与公安部门同步双活的前提应该是政府自己铺设的质量有保障的光纤,可能比租用的运营商更可靠:)我访问过这个几年前用户的IT负责人了解到,他们在生产机房(DC1)和灾备机房(DC2)相隔10公里的裸光纤上已经有了DCB(DataCenterBridging)无损以太网基础设施。同步复制和双活对生产存储性能的影响会随着距离的增加而增加。记得听朋友说国内大厂测试的第一个Mirror项目,曾经掉过70%。那么支持同步/异步在线转换的好处之一就是降低性能影响。在《深入DellWorld2015:SC9000存储软硬件更新解密》一文中可以看到LiveVolume已经通过了VMwarevMSC(vSphereMetroStorageCluster)的认证,这意味着虚拟机可以跨数据中心进行vMotion迁移和HA高可用。手动触发虚拟机存储迁移时,可以先将异步复制转为同步复制,保证数据不丢失。用户实际部署的两地双活+三中心架构,不一定能看清上图中的小字。我用三个红圈标出重点,摘录正文如下:《数据库应用层SharePlex同步》《数据库应用存储与虚拟化存储LiveVolume同步保障双活双中心互备保护》《LXR数据异步复制到灾备中心存储”这也符合我们之前的观点。在存储复制/双活之后,在一些关键应用中,还需要同时进行数据库层面的逻辑或物理复制保护。此外,为了保证双活存储跨数据中心的自动切换,避免脑裂,EMC和Dell也支持第三方仲裁等技术。***,我还想引用一位资深技术专家的朋友的话——“产品和解决方案是为用户的需求服务的,没有技术是***,只适用于特定的场景。”相关文章攻略↓↓↓存储极客|多方位全面保护数据库存储极客|自动分层存储PK。SSD缓存存储极客|高密磁盘柜难点:评DellSCv2080结构设计
