技术开发 频道

初识Oracle RAC:产生的背景及其结构

  【IT168 技术】对于信息系统来说,数据库可谓是其核心,它极大地影响了信息系统的安全性(数据安全、访问安全)、稳定性和整个信息系统的性能。这也是衡量数据库产品品质的三个重要指标,各大数据库厂商针对这些问题不断地增强自身产品的竞争力,以谋求更多的商业价值。本文讨论的是目前使用最为广泛的Oracle公司的数据库产品及其高可用性解决方案。

  Oracle RAC(Real Application Cluster,真正的应用集群)应用非常广泛,几乎支持目前的所有主流平台,尤其是Linux平台,Oracle公司支持力度是最大的,在Linux平台的特性也是最多的,所以本书以Linux作为讨论的平台。

  RAC产生的背景

  就像每家每户用电一样,作为用电户总是不希望家里出现停电的情况,因为停电将对日常生活带来极大的不便。同样,作为信息系统的客户也不希望系统出现异常情况,这同样会影响客户正常的生产和生活。

  从硬件来说,为了追求信息系统更加高效稳定的运行,支撑信息系统运行的各个硬件组成部分,在产品长时间高效稳定运行方面得到了巨大的发展。例如,UPS电源保证机房在断电的情况下能支撑较长时间的供电,服务器有非常多不同于一般PC的设计来保证服务器能够长时间稳定的运行,存储系统也在不断地发展与进步,这些是硬件方面的内容,是信息系统运行的基础。

  从软件上来说,作为信息系统核心的数据库产品在不断增强产品质量的同时,也提出了自己的高可用性解决方案,并且这些方案也在不断地增强和普及。本书讨论的RAC数据库就是Oracle公司针对数据库的高可用性解决方案,数据库的高可用性依赖于硬件的稳定运行和设备的冗余,软硬件高效稳定的协同工作才能够保证系统更加安全、稳定和高效地运行。

  RAC体系结构

  RAC数据库是Oracle公司数据库的集群解决方案、高可用性解决方案。两个或多个服务器之间通过一个内部的私有网络互相连接起来,使用集群软件将集群中所有的服务器融合成一个整体,构成一个集群。

  集群内部的所有服务器共享存储,所有服务器都接入公共网络,通过集群唯一的别名对外形成逻辑上单一的数据库提供服务,对内实现集群数据库的高可用性、节点间的负载均衡和Failover(失败切换)。随着11gR2(11g的第二个大版本,2009年9月29发布)的推出,这一方案在10gR2版本的基础上得到了进一步的增强。Oracle 11gR2推出的新特性能更好地满足客户对高可用性的要求,并为系统的扩展、成本的降低、性能的提升提供多方面的优势。

  下面对RAC的体系结构进行讨论。

  一. 整体结构

  笔者认为,RAC有广义和狭义之分,本小节讨论广义的RAC,在1.2.3节将讨论狭义的RAC。广义上讲,一个真正的应用集群纵向看是由存储阵列、数据库集群、应用集群三部分组成,横向来看,是由多台应用服务器、数据库服务器和存储设备组成。如图1-1所示。

  从图1-1可以看出,如果存储、数据库和应用这三部分任意一部分没有实现集群,都无法实现真正意义上的集群,并无法保证整个系统是高可用的。例如,数据库使用的是RAC,存储也做了镜像保护,但应用服务器却是一台单机,当这台应用服务器出现故障,那么整个系统也将处于不可用状态,对客户来说并不能感受到高可用的存在。所以,广义上的RAC只有实现存储、数据库、应用三部分的集群,整个系统才能实现真正意义上的高可用。

  Oracle推出了相应的产品来支持这三部分:存储方面有ASM(从Oracle 11g开始独立出来作为Grid Infrastructure一部分),数据库方面有集群软件Clusterware和Database的组合,应用方面有Weblogic(从BEA收购来的)。

初始Oracle RAC产生的背景
▲图1-1 RAC结构

  RAC的构架主要实现了数据库的集群和存储的集群。随着产品的发展,原来只用于数据库的Oracle EM (Enterprise Manager)工具将能够对应用服务器、数据库服务器及存储服务器实施统一管理。

  通过图1-1还能发现一个特点,存储设备向上对数据库集群提供统一接口的服务。这种统一接口指的是,虽然数据库服务器可能有多个HBA卡连接到存储的多个控制器,但是在数据库服务器上通过多路径软件,将多个路径合成一个路径,提供对存储访问的负载均衡和失败切换,从这点来说,存储设备向数据库集群提供了统一的访问接口。

  数据库集群向上对应用集群提供统一接口服务。这里的统一接口就是Oracle 11gR2出现的SCAN,通过统一的名称来访问集群,实现集群访问的负载均衡,通过和Service的结合实现失败切换。应用集群向上对用户提供统一的服务。

  应用服务器集群可能有另外的负载均衡硬件来进行管理,如F5,对于用户来说也只有统一的访问接口,即域名,通过应用负载均衡硬件实现负载均衡和失败切换,最终形成所有用户通过统一的域名就可以访问系统,并实现系统真正意义上的高可用。

  广义的RAC纵向的每一部分对于上层都是具有高可用性能力的,并且具有集群相关特点。所有这些存储设备、数据库和应用提供的对外服务接口都是统一的,对内实现了高可用的特点,任意一部分出现小范围的问题都不会导致整个系统的瘫痪,各部分的实现对于上层或者外部来说都是透明的。这样的集群才是真正意义上的集群,只是某一部分的集群则是不完整的高可用性解决方案。

${PageNumber}

  二. 物理层次结构

  图1-2是RAC物理结构图,主要包含SAN(Storage Area Network)存储结构和LAN(Local Area Network)网络结构。

初始Oracle RAC:物理层次结构
▲图1-2 RAC物理结构图

  下面对组成RAC最重要的两部分结构进行讨论。

  1. 存储结构

  RAC存储结构使用的方式必须是集群中所有节点都能同时并发访问相同设备,也就是说,所有的节点共享同一个存储设备(共享存储)。在实际的生产环境中,大多数使用SAN来构建服务器共享存储。如图1-2展示了SAN的基本结构。

  如图1-2所示,SAN是存储区域网络,用于数据库服务器和存储设备交换数据,LAN是本地区域网络,用于应用服务器或客户端同数据库服务器交换数据。显然,用于交换数据的SAN比LAN要求更高,需要有更快的速度和更高的稳定性。目前,主流实现SAN技术的有两种,一种是传统的FC(Fibre Channel)SAN,另一种是IP SAN。

  搭建FC SAN使用FC协议作为传输协议,使用光纤作为通信介质,使用FC HBA卡、光纤交换机作为连接设备,使用的存储设备是要支持FC协议的存储阵列。存储阵列中的磁盘可以是SATA磁盘、SCS磁盘、SAS磁盘和FC磁盘。FC光纤阵列性能非常好的,SATA磁盘阵列性能最差。

  搭建IP SAN使用TCP/IP协议作为传输协议,所以可以使用一般的网络通信设备作为通信介质,使用以太网网卡、网络交换机作为连接设备,使用一般的服务器或者支持iSCSI的存储设备作为存储。由于要在以太网上传送SCSI信号,所以这种技术称为iSCSI(internet SCSI)技术,即服务器将SCSI信号转换成TCP/IP包,通过以太网传送数据,接收端再将TCP/IP包转换成SCSI信号,它确保能够通过一般的网络来传输SCSI信号。

  注意 搭建FC SAN的环境需要很多特殊的硬件设备,并不是工作、学习中常常能碰到的。本书希望读者尽可能用日常工作中很容易找到的硬件设备,搭建一个与生产环境结构类似的RAC。基于这点,第2章将讨论使用iSCSI技术来搭建SAN存储网络实现共享存储。这种方式将服务器的FC HBA卡换成了网卡,将光纤交换机换成了网络交换机,将支持FC协议的磁盘阵列换成了普通TCP/IP网卡通信的服务器。这样一来就能很容易地复制生产环境的结构,对于掌握RAC的整体结构是很有帮助的。

  存储技术上,Oracle Clusterware支持NFS、iSCSI、DAS(Direct Attached Storage)、SAN存储和NAS(Network Attached Storage)。本书只讨论最常见的SAN,生产环境中使用的几乎都是FC SAN,它的特点是速度快、稳定性高、消耗服务器资源小,但成本也相对较高。通过iSCSI的方式,虽然成本较低,但稳定性、速度都没光纤的方式好,并且会消耗部分服务器资源,然而IP SAN作为一种低端的解决方案出现,可以应用于备份、测试、学习等方面。

${PageNumber}

  2. 网络结构

  如图1-2所示,在构建RAC的网络结构中,至少需要存在两个网络,所有的集群服务器都必须处在这两个网络中。一个是公共网络,用于对外接收连接请求服务的网络;另一个是私有网络,用于节点通信的网络。

  在网络传输中,目前常用的都是千兆级别的网络,但是随着技术的发展,已经出现了万兆传输的网络,以及使用Infiniband技术来实现高速传输网络。Infiniband技术将在第15章讨论。在11gR2版本中,Oracle开始允许有多个公共网络,每个网络有自己的一个SCAN名称对外接收连接请求。

  传统的网络结构是通过千兆网络来实现的,其中内联网络(私有网络)对于RAC来说非常重要,它关系到节点服务器间的心跳健康状况,以及Cache Fusion的性能。由于目前常用到的是千兆带宽的网络作为私有网络,所以速度并不是很快,在业务系统设计的过程中要充分利用Service的特性来减少对Cache Fusion的使用,这样才能提高对请求的响应速度。另外,还可以考虑将千兆网卡更换成光纤网卡,用光纤作为私有网络的传输介质可以提高心跳的稳定性,减少传输过程中受外界磁场等因素的干扰而影响传输性能。当然,也可以使用万兆的网络以及Infiniband技术来实现高速、低延迟的传输。

  注意 Oracle不支持使用交叉电缆作为Clusterware私有网络传输介质,这是不受Oracle技术支持的,同时,在运行的过程中也可能会出现严重的心跳丢失,导致服务器自动重启等异常情况,这对RAC的稳定性极其不利。

  内联网络使用一个或多个交换机连接集群中的所有服务器,集群中的节点之间能够通过该网络相互访问和通信。在Linux平台,可以使用UDP(User Datagram Protocol)或者RDS(Reliable Data Socket)协议配置Oracle Clusterware的通信方式,默认使用的是UDP协议,在Windows平台上默认使用TCP/IP协议进行通信。用户不能使用内联网络与数据库进行通信,因为Cache Fusion要使用内联网络来进行实例间的通信。

  三. 逻辑层次结构

  RAC逻辑结构可以分为存储层、集群层和数据库层,如图1-3所示。每个层都由相关的软件来实现。

初始Oracle RAC:物理层次结构
▲图1-3

  如图1-3所示,在同一个节点层与层之间有非常紧密的关系,同时在不同的节点之间,相同层之间也存在紧密的关系。它们之间相互支持,每个相同的逻辑层都可以说是一个集群,共同构成了RAC集群高可用性环境。

5
相关文章