初始Oracle RAC:产生的背景及其结构
对于信息系统来说,数据库可谓是其核心,它极大地影响了信息系统的安全性(数据安全、访问安全)、稳定性和整个信息系统的性能。这也是衡量数据库产品品质的三个重要指标,各大数据库厂商针对这些问题不断地增强自身产品的竞争力,以谋求更多的商业价值。本文讨论的是目前使用最为广泛的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收购来的)。
▲图1-1 RAC结构
RAC的构架主要实现了数据库的集群和存储的集群。随着产品的发展,原来只用于数据库的Oracle EM (Enterprise Manager)工具将能够对应用服务器、数据库服务器及存储服务器实施统一管理。
通过图1-1还能发现一个特点,存储设备向上对数据库集群提供统一接口的服务。这种统一接口指的是,虽然数据库服务器可能有多个HBA卡连接到存储的多个控制器,但是在数据库服务器上通过多路径软件,将多个路径合成一个路径,提供对存储访问的负载均衡和失败切换,从这点来说,存储设备向数据库集群提供了统一的访问接口。
数据库集群向上对应用集群提供统一接口服务。这里的统一接口就是Oracle 11gR2出现的SCAN,通过统一的名称来访问集群,实现集群访问的负载均衡,通过和Service的结合实现失败切换。应用集群向上对用户提供统一的服务。
应用服务器集群可能有另外的负载均衡硬件来进行管理,如F5,对于用户来说也只有统一的访问接口,即域名,通过应用负载均衡硬件实现负载均衡和失败切换,最终形成所有用户通过统一的域名就可以访问系统,并实现系统真正意义上的高可用。
广义的RAC纵向的每一部分对于上层都是具有高可用性能力的,并且具有集群相关特点。所有这些存储设备、数据库和应用提供的对外服务接口都是统一的,对内实现了高可用的特点,任意一部分出现小范围的问题都不会导致整个系统的瘫痪,各部分的实现对于上层或者外部来说都是透明的。这样的集群才是真正意义上的集群,只是某一部分的集群则是不完整的高可用性解决方案。