文/耿加申
建设分布式双活数据中心是需要网络系统、存储系统、计算资源甚至包括应用系统等多个IT系统之间紧密合作才能实现的。用户所有的业务系统同时在两个数据中心运行,包括前端的全局负载均衡、服务器前端的负载均衡、服务器集群HA技术,后端的数据库系统和存储系统技术,同时为用户提供服务。当某个数据中心的应用系统出现问题时,由另一个数据中心的应用来持续的提供服务。本文主要介绍在网络双活已经Ready情况下,数据库和存储双活部署的最佳实践方案。
一、数据库分布式双活技术
双活数据库备份技术的主、备数据库能够同时承担生产业务并且实现备份功能,即主-主方式的数据库双活技术,极大提高数据库的利用效率。用户要实现数据库的双活,需要在主备数据中心同时安装两套数据库系统,并且实现数据库的同步功能。常见的双活技术通常使用集群方式提供,以下以业界比较成熟的Oracle RAC为例作以介绍。
(如图1所示)Oracle RAC(Real Application Clusters,实时应用集群)不仅仅是个组件,它不是单单由某项特性组成,而是一堆特性应用(Oracle Clusterware、RAC、ASM等)的集合,因此应该被称之为一种体系。该体系实现了多个实例同时访问和管理同一数据库,多个实例可以存在于不同节点,也可以在相同的节点上(从提升性能的角度来看,并不推荐这样),彼此通过内网连接交换数据,并且能够实现自动负载均衡,如果其中某个节点发生故障,RAC能够通过后台的监控进程将连接自动切换到另外一个或多个节点上,从而实现应用的无缝切换,对实例的高可用提供保护,使Oracle RAC 同时具备HA和LB的特性。
远距离集群中的 Oracle RAC 提供了一种横向扩展性能以及利用多个站点的存储和服务器资源的方法,而且与单站点 Oracle RAC 安装相比,还提高了整个站点的可用性和数据中心维护操作的恢复能力。
图1 RAC多实例
l 网络部署方式
(如图2所示)在整个RAC环境中,需要在两个数据中心部署RAC节点,共存在四个网络环境(如图2所示):
¡ Public网络对应公有IP,用于对外提供数据查询服务,服务器维护,数据库维护等;
¡ Virtual网络对应虚拟IP,用于提供应用连接,一般应用程序使用的是该IP;
¡ Private网络对应私有IP,用于传输RAC节点之间心跳报文cache fusion数据块传递,对速度要求很高;
¡ 存储网络由存储设备、HBA卡、光纤交换机等组成。
图2 RAC双节点网络
l 业务访问流程
(如图3所示)在一个典型的多节点RAC系统集群环境中,数据是放在共享存储上的,客户端通过指定的虚拟IP连接。集群收到应用程序访问数据库的请求后,利用DLM机制进行多个节点间并发访问的控制,把请求发送到其中一个节点,节点收到请求后,通过Cache Fusion机制获取读写权限,如果节点有权限访问共享存储,节点会对共享存储进行读写,读写数据完成后返回给客户端。当应用访问数据库RAC集群时,由下面两种机制来保证访问数据的可用性:
¡ 并发控制。由于每个节点对数据有相同的访问权利,这就要求集群对这种有对等权限的并发访问有控制机制,在Oracle RAC中,利用DLM (Distribute Lock Management,分布式锁管理器)机制进行多个节点间并发访问的控制,协调节点间资源的竞争,保证并发的有效性,保护共享数据的安全。
¡ 分布式缓存。使用Cache Fusion模型,是实现RAC的根本的技术,它使各实例可以将它们的数据缓存合并为一个共享的全局缓存,保证缓存的一致性,减少共享磁盘IO的消耗。当上层应用访问RAC节点是,RAC使用 Cache Fusion,优先从缓存中读写数据,仅当该数据块不在全局共享的缓存中,才会执行磁盘读写操作。
图3 RAC多节点访问
l 主备数据中心故障切换
当其中一个数据中心的数据库RAC节点出现故障时,另外一个数据中心的RAC节点还可以提供服务。Oracle RAC 同时具备HA和LB,而其高可用性的基础是Failover(故障转移),通过TAF(Transparent Application Failover)技术,集群中任何一个节点的故障,连接其用户会被自动转移到健康节点,用户感觉不到这种切换。对于应用程序而言,这个迁移过程是透明的,不需要用户的介入。迁移过程如下:
(如图4所示)假设有一个两个节点的RAC,正常运行时每个节点上都有一个VIP:VIP1和VIP2。当节点2发生故障,RAC 会做如下操作:
¡ RAC的Failover 机制会把节点2的VIP2转移到节点1上,这时节点1的PUBLIC 网卡上就有3个IP 地址,即VIP1、VIP2、Public IP1;
¡ 用户对VIP2的连接请求会被IP层路由转到节点1;
¡ 节点1上只监听VIP1和Public IP1的两个IP地址,并没有监听VIP2,故应用层没有对应的程序接收这个数据包;
¡ 客户端能够立即接收到这个错误,然后客户段会重新发起向VIP1的连接请求,完成故障切换。
图4 RAC故障转移
在集群环境中,节点间需要某种心跳了解彼此的健康状况。这个心跳是通过两个数据中心的网络来传输的,如果心跳出了问题,每个节点都会认为其他节点都不存在了,自己是唯一的幸存者,从而控制整个集群,由于数据是共享的,势必会破坏共享数据的完整性和一致性。这时候Voting Disk表决盘被引入,所有节点都可以访问表决盘,通过投票机制,获得最高票数或者最早到达的获得投票的幸存,其他节点被踢出。在Oracle RAC中Voting Disk用来记录节点间成员的状态,出现脑裂时,仲裁哪个分区获得控制权,其他的分区被剔除。
二、存储分布式双活技术
分布式双活数据库部署需要共享存储的支撑,理想的方案是EMC VPLEX,可以实现不同存储异构的双活。VPLEX 体系结构将横向扩展集群与分布式缓存一致性相结合,实现了数据中心内、跨数据中心的 EMC 和非 EMC 平台之间的数据移动性。其具有以下特点:
¡ 分布式存储双活集群技术,对应用提供统一的访问入口;
¡ VPLEX后端连接存储类型可以兼容不同厂家;
¡ EMC VPLEX Metro在多个数据中心实现同步数据复制技术;
¡ VPLEX AccessAnywhere集群技术可用于对分布式卷进行远程读/写访问,可以在同步距离内的位置之间访问和共享数据;
¡ 给远距离的两个数据中心提供一个共享的存储,两边能同时读写同一份数据,简化扩展 Oracle RAC跨数据中心的部署;
VPLEX 产品线包括 VPLEX Local(单站点 SAN 联合)、VPLEX Metro(支持往返延迟高达 5 ms 的同步分布式卷,约相距不超过 100 公里)以及 VPLEX Geo(支持往返时间高达 50 ms 的异步分布式卷)。将 VPLEX Metro 与远距离集群中的 Oracle RAC(扩展 Oracle RAC)结合使用,可以简化 SAN 基础架构,同时减少与扩展 RAC 部署模式关联的部分存储管理复杂性。
l 网络部署方式
(如图5所示)在VPLEX环境中,分别需要在两个数据中心部署VPLEX,同时在第3个站点部署Witness,共存在两个网络环境(如图5所示)。
¡ IP网络:三方站点互连使用的IP网络,使用Witness提供网络管理和防止脑裂发生。
¡ 存储网络:由存储设备,HBA卡,光纤交换机等组成,需要专用光纤线路连接。
图5 VPLEX双中心组网
l 业务访问流程
存储对读数据的处理过程如下:
¡ 当主机发出一个读请求,VPLEX搜索其本地缓存;
¡ 如果数据被找到,返回到主机;
¡ 如果数据在本地缓存中没有找到,VPLEX搜索全局缓存;
¡ 无论从本地缓存或全局缓存,它如果不能找到读数据,则直接读取后端存储。在这些情况下,无论是全局还是本地缓存都进行更新。
存储对写数据的处理过程如下:
¡ 对于VPLEX Local和Metro,所有写操作都是通过后端存储的缓存,只有数据写入到后端阵列,主机的写操作才算完成;
¡ 对于VPLEX metro,每次写都是在集群中进行复制。其中一个副本,写入到本地后端阵列,而另外一个被写入到远程VPLEX,再把它写入到远程的后端磁盘。主机只有在这两个写入都完成后才会得到确认。
l 主备数据中心故障切换
(如图6所示)当一个数据中心的存储不能对外提供访问时,VPLEX会实时把IO的请求定向到另外一个数据中心,不会影响到上层应用的访问。当后端存储失败,VPLEX集群继续服务所有的IO,因此Oracle RAC不会知道存储不可用了。
图6 VPLEX存储故障切换
(如图7所示)当后端存储和VPLEX集群其中之一出现故障,VPLEX Witness会继续让另外一个站点的VPLEX提供服务,Oracle 使用Transparent Application Failover 功能,允许客户端自动的重新连接到健康的VPLEX 集群上。
图7 VPLEX存储和集群故障切换
如果两个 VPLEX 集群中间的网络出现故障,可以通过预先配置分离规则,优先级高的VPLEX站点如果无法检测到对方节点,则该节点继续服务,另外一个停止服务。或者通过在第三站点部署VPLEX Witness,当出现网络故障时,由Witness判断哪个节点可以提供服务。VPLEX Witness 通过管理 IP 网络连接至两个 VPLEX 集群。为了让 VPLEX Witness 能够正确区分各种故障情况,需要在在第三个数据中心部署 VPLEX Witness。
三、Oracle RAC和 VPLEX Metro 联合部署方式
Oracle RAC系统与EMC VPLEX技术相结合,是部署双活数据中心的理想选择。EMC VPLEX 的功能包括异构存储系统以及分布式双活的共享存储,可与 Oracle RAC 的固有功能共同提供高可用性和可扩展的数据库访问。(如图8所示)Oracle RAC 与 EMC VPLEX结合部署,简化了数据库体系结构,提高基础架构效率。
图8 Oracle RAC 与 EMC VPLEX综合组网
通常,扩展 Oracle RAC 的部署重点是为其中一个 Oracle集群表决磁盘部署第三个站点。(如图9所示)借助 VPLEX,集群表决磁盘本身驻留在 VPLEX 虚拟卷上,仅VPLEX Witness部署在独立故障域中,由于 VPLEX Witness 控制表决磁盘的访问, VPLEX Witness 可提供脑裂检测保护并保证 VPLEX Metro 和 Oracle 集群的行为一致。
由于所有 Oracle集群节点都需要访问所有 Oracle集群配置文件和数据库设备,因此 Oracle 集群配置文件和Oracle 数据库都使用 VPLEX 分布式卷。
图9 VPLEX脑裂检测
l 网络部署方式
¡ RAC集群互连:用于RAC心跳和Cache Fusion,对速度要求很高。
¡ IP网络:三方站点互连使用的IP网络,用于提供网络管理和防止脑裂发生。
¡ 存储网络:由存储设备、HBA卡、光纤交换机等组成,需要专用光纤线路连接。
l 故障切换
¡ 后端存储失败。当站点A的存储发生致命故障后,分布式镜像卷只是少了镜像的一半,容灾站点的存储承担起读写IO的工作,站点A的主机通过VPLEX的通讯链路从站点B的存储上读写数据,使得整个系统没有发生出错崩溃,也没有业务切换到容灾站点,保证了业务高可用性。由于每个站点都有专门的LOG卷,所以在存储恢复正常后不需要进行全同步,而只需要传输改变量,同步时间大大缩小。
¡ VPLEX失败。当站点A的VPLEX故障后,另外一个站点B的VPLEX继续工作,数据不会丢失,业务可以连接到另外一个站点B的RAC节点正常进行工作。当站点A的VPLEX恢复后,按保护机制的设定,可自动或者手工确认原主站点是否可以工作。
¡ RAC主机失败。当站点A的RAC1主机发生故障后,VPLEX和存储都没故障发生。因此只发生应用切换事件。
¡ 站点间的网络失败。VPLEX可以设置优先级别,当两台VPLEX通讯发生故障时,根据定义的优先级别的策略决定其中一台VPLEX保持服务,而另一台就要停止工作,或者由Witness来决定哪台VPLEX继续工作,保证了数据的一致性和安全性。
¡ 站点失败。站点A的RAC、VPLEX、存储都出现故障,连接站点A的RAC1的业务全断,而连接站点B的RAC2的应用还是可以保持正常工作无中断,站点A的RAC1上的业务重新连接到RAC2后可以继续正常工作。
l 该方案带来的好处
联合部署方式使得网络、存储和站点故障期间保证连续的数据库可用性,横向扩展体系结构以及两个站点对同一数据库的完全读写访问权限,并且简化远程 Oracle RAC 部署,主要体现在:
¡ 集群节点只需连接至本地 VPLEX 集群,不需要跨站点连接;
¡ 通过使用分布式卷和 VPLEX Witness 部署 Oracle 表决磁盘,无需在第三站点部署 Oracle voting disk 表决磁盘和集群配置文件,简化了基础架构要求;
¡ 减少对 Oracle 集群节点 CPU 周期的占用以及与基于主机的镜像关联的占用,由 VPLEX 提供的硬件 RAID 和底层物理阵列提供这项功能;
¡ 能够创建可将多个数据库或应用程序文件作为一个单元进行保护的一致性组;
¡ 在存储硬件更新和迁移期间,VPLEX 卷不要求暂停应用程序或进行 LUN ID 更改。
四、结束语
分布式数据中心要想实现对用户提供真正的双活服务,需要部署应用、存储、网络的综合双活方案。企业通过部署ORACLE RAC数据库的双活技术和EMC VPLEX存储的双活技术,以及使用H3C的双活数据中心网络方案,完美的给用户提供了一整套的双活解决方案,避免了以前备份数据中心只能备用不能使用的资源浪费,有力的保证了企业的业务系统高可靠运行。