使用Oracle 真正应用集群 (RAC),Oracle数据库可跨一组集群服务器运行任何打包的或自定义的应用程序,不需对这些应用程序做任何改动。这就提供了最高的可用性和最灵活的可伸缩性。如果集群中的一个服务器故障,Oracle 可继续在其余的服务器上运行。当我们需要更多的处理能力时,只需添加服务器即可,无需用户下线。为保证低成本,我们可使用标准化的普通硬件组建出最高端的系统。
Oracle 真正应用集群为 Oracle 的企业网格计算体系结构提供了基础。Oracle RAC 技术可为这一低成本硬件平台提供支持,使其提供优质的服务,并达到或超出昂贵的大型 SMP 计算机所能提供的可用性和可伸缩性等级。通过显着降低管理成本和提供出色的管理灵活性,Oracle 为企业网格环境提供了强有力的支持。 本白皮书从技术层面对 Oracle 真正应用集群 10g进行了概述,着重介绍了涉及为企业应用程序提供高可用性和高可伸缩性方面的功能和特性。
什么是 ORACLE 数据库 10G 真正应用集群?
Oracle 真正应用集群是 Oracle 数据库的一个组件选项,在 Oracle 9i 中首次推出。Oracle 真正应用集群现已发展成一项成熟的技术,其用户过千,遍及各个行业,涉及各类应用程序。Oracle RAC 为伸缩应用程序以超越单个服务器的能力限制提供了一个选择。这使得用户可以利用低成本的普通硬件来降低他们的总拥有成本,并提供一个可伸缩的计算环境来支持其应用程序负载。 Project Mega Grid1 是一个展示项目,用于说明实际的应用负载可运行于一台 SAIP 服务器上,也可以运行于一个服务器集群中,且达到相同的性能要求。此外,集群环境还包括高可用性.Oracle 真正应用集群是 Oracle 高可用性体系结构2的重要组件,它指导着应用程序高可用性的设计。Oracle RAC 提供了在任何应用数据库应用环境中移除单点故障服务器的能力。
真正应用集群体系结构
RAC 数据库是一个集群数据库。集群是一组独立的服务器,协同合作如同一个系统。集群提供了比单对称多处理器 (SMP) 系统更好的容错和模块增量系统。发生系统故障时,集群可确保向客户提供高可用性。对关键任务数据的访问不会丢失。冗余的硬件组件(如额外的节点、互联和磁盘)使得集群能够提供高可用性。此类冗余硬件体系结构避免了单点故障并提供了异常故障恢复。
图 1 真正应用集群体系结构
在真正应用集群中,我们将 Oracle 实例(运行在一个服务器中的流程和内存结构,以充许数据访问)与 Oracle 数据库(驻留在存储器上的实际用于保存数据的物理结构,通常称为数据文件) 进行了分离。集群数据库是一个可由多个实例访问的数据库。每个实例运行于集群中的一个独立服务器上。当需要更多的资源时,可以在不停机的情况下轻松地向集群中添加节点和实例。当启动新实例后,应用程序可立即使用这一新实例,无需对应用程序或应用服务器进行任何改动。
真正应用集群是Oracle 数据库的一个扩展,所以它利用了 Oracle 数据库 10g 的可管理性、可靠性和安全性特性。
Oracle 集群件
Oracle 数据库 10g 开始提供有 Oracle 集群件,Oracle 集群件是一个专门针对 Oracle 数据库而集成和设计的可移植集群件解决方案。您不必再为构建一个 RAC 数据库而去购买第三方的集群件。Oracle 集群件与Oracle DBA 熟悉的 Oracle Universal Installer 进行了集成。支持也比以往更为简便,因为现在有一个专门的组织处理涉及集群件和集群数据库的支持问题。您可以选择使用第三方集群件来运行 Oracle RAC,Oracle 产品可与经认证的第三方集群件共同使用,但 Oracle 集群件必须管理所有的 RAC 数据库。
Oracle 集群件用于监管真正应用集群数据库。当集群中的一个节点启动时,所有实例、监听程序和服务都将自动启动。如果一个实例出现故障,集群件将自动重启该实例,这样通常可在管理员发现前恢复该服务。
在 Oracle 数据库 l0g 第 2 版中,Oracle 提供了高可用性 API,这样可使用 Oracle 集群件内高可用性框架来控制非 Oracle的流程。当向 Oracle 集群件注册流程时,需要提供如何启动、终止和监控这些流程的信息。您还可以指定当执行流程的节点出现故障时,是否将该流程转移到另一个节点。
硬件体系结构
Oracle 真正应用集群是一个全共享的体系结构。集群中的所有服务器必须共享用于 RAC 数据库的所有存储器。存储用的磁盘类型可以是网络连接存储 (NAS)、存储区域网络 (SAN)、或是 SCSI 磁盘。存储器的选择受限于所选用的服务器硬件及硬件供应商所支持的存储器类型。选择存储器的关键之处在于选择一个可向您的应用程序提供可伸缩 I/O 的存储系统,一个在向集群中添加服务器时可进行伸缩的I/O 系统。
对于数据库服务器所连入的局域网 (LAN),集群还需要另外一个网络连入该局域网,用于应用程序连接。集群还需要一个专用的网络,即通常所说的互联。Oracle 建议您对这一网络使用两个网络接口,以实现高用性。我们需要使用不属于 Oracle 的网络接口来提供故障切换和负载均衡。集群使用这一互联来进行节点间消息传递。RAC 则使用这一互联来实施缓存融合技术。对于集群互联,Oracle 建议使用 UDP,不建议使用 GigE。在实际应用环境中,RAC 数据库不支持将交叉线缆用作互联。
集群由 1 到多个服务器组成,每个服务器有一个 LAN 连接、一个互联连接,必须连接到共享存储器。在 Oracle 数据库 10g 第2 版中, Oracle 集群件和真正应用集群可支持多达 100 个集群节点。集群中的每个服务器不需要完全相同,但是必须使用同样的操作系统和同一版本的 Oracle 产品。所有服务器必须支持同一体系结构,如全部为 32 位或全部为 64 位。
要了解关于 Oracle 真正应用集群的认证和技术限制信息,请访问 Oracle Metalink (http:/ /metalinkoracle.com)。
文件系统和卷管理
因为 RAC 是一个全共享式的体系架构,卷管理和文件系统必须能够识别集群。Oracle 建议使用自动存储器管理 (ASM),它是Oracle 数据库 10g 包含的一个特性,能够自动管理用于数据库的存储器。使用 ASM 可以方便地管理文件系统,提供异步 I/O 的性能。ASM 通过跨所有可用资源分配 I/O 负载来优化性能,且免除了手动调整 I/O 的需要。
Oracle 也支持原始设备和某些集群文件系统,如 Oracle 集群文件系统 (OCFS),这一文件系统可用于 Windows、Linux 和Solaris(用于 Solaris 的 OCFS 将于 Oracle 数据库 10g 第 2 版之后推出)。
虚拟互联网协议地址 (VIP)
Oracle 真正应用集群 10g 要求集群中的每个服务器都使用一个虚拟 IP 地址。虚拟 IP 地址即是与局域网所属子网相同的子网中的一个未使用的 IP 地址。应用程序使用这一地址连接 RAC 数据库。如果一个节点出现故障,该虚拟 IP 将自动切换到集群中的另一个节点,这样就可以快速响应针对故障节点的连接请求。这提升了应用程序的可用性,因为他们的连接请求可自动切换到集群中的另一个实例,此前不再需要等待网络超时。
集群验证实用程序
Oracle 数据库 10g 第 2 版引入了一个新的集群配置验证工具。该集群验证工具通过对前后安装步骤和/或配置变化进行验证,避免发生错误。它还可用于现有的集群验证。该工具可以通过命令行接口调用,也可由其它程序通过 API 进行调用,如 Oracle Universal Installer (OUI) 程序。
远距离集群 RAC
在远距离集群 RAC 这一体系结构中,集群中的各节点位于不同的地理位置。远距离集群 RAC 提供了非常快速的站点故障恢复,允许所有站点中的所有节点作为单个数据库集群的一部分主动进行事务处理。当该体系结构受到世人瞩目并成功实施后,关键是要了解这一体系结构最适用的情形 — 距离、延迟时间,及其提供的保护程度。
延迟时间会产生巨大的影响,所以距离便对这一体系结构的适用情形有一些实际限制。这一体系结构适用于 2 个数据中心间的距离相对较小(小于等于 100 公里),且有资金在两个站点间建立带专用通道的直连线缆的情况。
远距离集群 RAC 提供了比本地 RAC 更高的可用性,但并不能达到企业所需的完全灾难恢复要求。合理分区可以很好地防御某些灾难事件(局部断电、飞机失事、机房被淹),但并不是所有灾难事件。如地震、飓风、区域性洪灾会影响更大的区域。客户应通过分析确定一个灾难事件是否会同时影响两个站点。要实现全面的灾难防御(包括防御数据出错和区域性灾难),Oracle 建议用户结合 Data Guard使用 RAC,如 Oracle 高可用性体系结构文档中所述。Data Guard 还提供了其它的一些功能,如支持跨 Oracle 版本进行滚动升级。
远距离集群的配置也较本地集群复杂。需要精心考虑节点的布局、表决磁盘和数据磁盘的布置.妥善实施这一体系结构后,它将提供比本地 RAC 数据库更高的可用性。Oracle 集群件、Oracle 真正应用集群和自动存储器管理可用于构建远距离集群。
ORACLE 真正应用集群的优势
高可用性
Oracle 真正应用集群 10g 提供了实现数据中心高可用性的基础架构。它还是 Oracle 高可用性体系结构不可或缺的一部分,提供了构建高可用性数据管理解决方案的最佳实践。Oracle 真正应用集群针对高可用性解决方案的主要特性提供了保护功能。
可靠性 — Oracle 数据库以其稳定性著称。真正应用集群将这一优点发扬光大,能够以单点故障方式移除服务器。如果一个实例故障,集群中的其它实例将仍然保持运行和活动状态。
恢复能力 — Oracle 数据库包含许多有助于从各类故障中轻松恢复的功能。如果 RAC 数据库中的一个实例出现故障,集群中的另外一个实例将察觉到这一故障,随后自动进行故障恢复。利用快速应用程序通知,快速连接故障转移和透明应用程序故障切换这三个功能,应用程序可以很方便地掩藏组件故障,使用户无法察觉。
错误检测 — Oracle 集群件自动监控 RAC 数据库并可对环境中的错误进行快速检测。在用户不知不觉中自动完成故障恢复。使用快速应用程序通知功能,应用程序能够在集群组件出现故障出现时立即得到通知,然后将事务切换至无故障节点,从而掩藏这一故障,让用户无法察觉。
持续运行 — 使用真正应用集群,在计划和意外停机期间仍可持续提供服务。如果一个节点(或实例)出现故障,数据库将仍然保持运行状态,应用程序仍可访问数据。大多数的数据库维护操作可在不中断运行的情况下完成,并且对用户透明。其它维护任务可以通过滚动方式完成,所以可将应用程序中断时间降至最少,或完全消除。快速应用程序通知和快速连接故障切换可帮助应用程序达到服务水平和掩藏组件故障。
可伸缩性
Oracle 真正应用集群提供了独一无二的应用程序伸缩技术。传统上,当服务器容量不足时,我们会使用更大的新服务器来替换它。但服务器容量越大,其价格也愈加昂贵。而对于使用了 RAC 的数据库,我们可选择其它方法进行增容。原先运行于大型 SMP 服务器上的应用程序可移植到小型服务器集群中运行。或者,您也可以选择保留现有硬件的投资,在集群中加入新服务器(或创建一个集群)来增加容量。通过 Oracle 集群件和 RAC 向集群中添加服务器时并不需要停机,且在启动新实例后,应用程序就可立即利用这些增加的容量。集群中的所有服务器必须使用同一操作系统和相同版本的 Oralce 软件,但其容量不需要一样。现在,客户可以根据自己的需要来选择集群,可以是由每台服务器含 2 个 cpu 的普通服务器组成的集群,也可以是每台服务器含 32 或 64 个 cpu 的服务器组成的集群。
Oracle 真正应用集群可以自动适应快速变化的业务要求和由此带来的负载变化。应用程序用户,或中层应用程序服务器客户端可使用服务名连接到数据库。Oracle 可在集群中的多个节点中自动进行负载均衡。在不同节点上的真正应用集群数据库实例订阅了所有或部分数据库服务。这样 DBA 就可以灵活地选择某个连接到特定数据库服务是否可以连接到某个或所有数据库节点。当应用需求上升时,管理员可以很方便地增添处理能力。RAC 的缓存融合体系结构可立刻使用新节点的 CPU 和内存资源。DBA 不需要手动对数据进行重新分区。
在 Oracle 数据库中分配负载的另一个方法通过 Oracle 数据库的并行执行特性。并行执行(如并行查询或并行 DIIL)在多个进程间划分 SQL 语句执行工作。在 Oracle 真正应用集群环境中,可在多个实例间均衡分配这些进程。Oracle 提供了基于成本的优化程序,它以并行执行作为其基础元素来制定最佳的执行方案。在真正应用集群环境中,明智的决策都要考虑到节点内和节点间的并行性。例如,完成某个查询需要 6 个查询进程,本地节点中(用户
连接到的节点)有 6 个闲置的 CPU,则只需使用本地资源来处理该查询即可。这演示了高效的结点间并行性,且消除了在多个节点间协调查询的开销。但是,如果该本地结点中只有两个 CPU,那么就由这两个 CPU 再加上其它节点中的 4 个 CPU 来处理这一查询。这样就利用了节点内和节点间并行性来加快查询的处理。
管理 ORACLE 真正应用集群数据库为便于配置和管理,Oracle 真正应用集群提供了一个系统镜像。用户可在一个位置完成 RAC 数据库的安装、配置和管理。用于管理数据库的工具和实用程序都可识别集群,从 Oracle Universal Installer (OUI) 到 Enterprise Manager,包括数据库配置助理 (DBCA)、数据库升级助理 (DBUA)、网络配置助理 (NETCA) 和命令行,如 srvctl。
Enterprise Manager 10g
Enterprise Manager 10g Database Control 是 Oracle 提供的一个用于管理 Oracle 数据库的 GUI 管理工具。在创建数据库时,DBCA 会自动配置 Database Control。Enterprise Manager 10g Grid Control 是 Oracle 提供的一个用于管理企业的 GUI 管理工具。用户可通过 Oracle 数据库 CD 包内的一张 CD 来安装该 Grid Control。这些工具都可识别集群且提供了一个中央控制台来管理您的集群数据库。
在 Cluster Database Page 中,您可以:
查看整体系统状态,例如,集群数据库内节点的数量及其当前的状态。
查看所有实例的警报,同时详细观察每一警报的根源和其它信息。
在集群数据库基础上设置警报阈值。 监视所有实例的性能标准或逐个显示,以便逐个进行比较,或在需要时了解更详细的信息。 监视集群缓存一致性情况(例如:全局缓存获取等)。执行集群数据库操作,包括启动备份与恢复,以及开始/停止实例等。