从两地三中心到双活数据中心服务器
两地三中心的有几种实现形式,下图是一种典型案例。oracle
在这一案例中,正常状况下,业务运行在主机房的设备之上。主存储与辅存储存在单向同步关系,即主储存的全部数据变动都会实时同步复制①到次存储上,从而保证两个存储数据彻底一致。同时,为防止极端灾害发生,主存储的数据变动也会经过异步复制②的方式同步到远程容灾机房的存储设备上。app
当主中心由于各类缘由中断服务时,能够经过手工命令或者软件自动切换的方式让业务切换到辅机房。异步
若是极端状况发生,辅机房也不能运行业务,那么远程容灾机房还有一份数据保存,能够用它恢复业务。ide
注意:上图只是一种两地三中心的实现方式,还有好几种其它方式,好比:⑴远程容灾中心也配置服务器,当灾害发生时容灾中心能够运行业务;⑵3个存储的拓扑方式不一样。可是基本原理差异不大,在此就不作赘述。spa
①同步复制能够保证数据彻底一致,可是对数据传输带宽和时延要求都很高,成本昂贵,适用用于近程。blog
②异步复制不保证数据彻底一致,存在数据丢失的状况,可是对数据传输带宽和时延要求较低,适用于远程。 get
两地三中心的优势是防范了各类危害磁盘阵列数据(不包括软件或者人工误操做)的风险,缺点是成本巨高,且设备使用效率低,特别是辅机房设备不能在业务正常运行时使用,浪费很大。同步
因而存储设备厂商又发展了双活数据中心技术来改进这个缺点。虚拟机
下面咱们以HP XP7磁盘阵列与ORACLE RAC配合为例,展现这个技术方案。
这个方案的核心在于:两个存储配合,虚拟出一个磁盘阵列(相似于主机集群软件的浮动软件包技术),主机向虚拟磁盘阵列发出IO请求,主存储和辅存储合做,共同完成主机对虚拟磁盘阵列的IO请求。主辅存储数据双向同步,经过内部机制保证数据一致性。
这个方案的优势在于两个机房的主机都只看到一个虚拟磁盘阵列,两台存储的内部同步机制彻底对主机透明,主机应用配置简单。
因为主辅存储有必定的物理距离,若是数据同步链路故障,就会出现“脑裂”的状况,这时候,仲裁磁盘起做用的时候到了。
仲裁盘是独立于主辅存储的第三个磁盘设备(不建议用容灾机房的存储),经过FC链路与主辅存储链接。当主辅存储的数据链路出现异常时,主辅存储会经过仲裁盘决定哪个存储继续提供服务,不提供服务额存储会进入锁定状态,一直等到数据链路恢复,两个阵列数据同步完成以后再恢复正常。
那么,若是仲裁盘失效时,会出现什么状况呢?很简单,两个存储都锁定,不提供服务。毕竟数据的完整性是最重要的。
图中的仲裁服务器又是作什么的呢?顾名思义,它是一台服务器或者虚拟机,上面运行专用程序为主辅存储提供基于IP协议的仲裁服务。
对于HP XP7或者HDS G系列阵列而言,是不须要仲裁服务器的。可是,有些设备厂商基于各方面考虑,不使用磁盘仲裁,而是仲裁服务器,好比EMC Vplex或者netapp 。
此外,有些厂商的方案没有使用虚拟存储,把两台物理存储暴露给主机,而后在阵列上经过其它办法实现两个阵列的数据同步。这种办法我有一些疑问,但愿之后能获得高人指点
还有,市场上不只有基于存储实现的双活,还有基于主机软件实现的双活,若是作得好,都是能够知足需求的。可是有一点须要特别注意:就是“脑裂”情况的处理,我认为:没有第三方仲裁设备的双活方案都是不够强壮的,难以应付现实环境下的复杂情况。
关于“脑裂”,还有“仲裁竞争”问题:当主辅机房链路中断后,存储有仲裁机制,oracle RAC也有本身的仲裁机制,若是出现RAC锁机制断定主机房设备继续提供服务,存储却断定辅机房存储继续提供服务状况,就会致使“双活”变成“双死”。
这种状况确实是一个问题,但是若是仔细研究RAC的锁定机制,咱们是能够经过恰当配置来避免这种状况的发生的,建议以下:
RAC的仲裁机制使用的是磁盘,咱们只需把仲裁盘配置在虚拟的磁盘阵列上就能够避免“锁竞争“的状况发生。由于RAC仲裁盘在虚拟阵列上,主或辅存储任意一个被锁定,它对应机房的主机也就不可能访问得了虚拟阵列上的锁盘,天然不可能获得仲裁盘的承认,继续运行。