RAC的主要概念

  集群节点
  集群由单独的节点组成,在Oracle RAC中,允许的节点数和集群版本有关,公开文档中说明Oracle 10.2集群软件支持100个节点,而10.1支持63个实例。即使当个节点发生故障后,基于RAC上的应用能继续运行,还是应该花点精力来确认数据库服务器中的单个组件不会出现单点故障(SPOF)。
  采购新的硬件时应该采用可热插拔的组件,比如内置磁盘和风扇,另外,服务器的电力供给、主机总线适配器、网卡和硬盘都应该做了冗余。可能的话,最好做一个逻辑绑定,比如硬盘硬件RAID或软件RAID、网卡绑定、存储网络的多路径。在数据中心也应该注意:要使用不间断的电源供应、足够的散热措施、服务器的专业上架。最好还能有个远程的lights-out管理控制台,当一个节点不知道由什么原因挂起,可能迫切需要进行故障排除或者重启。

  内部互联
  集群内部互联是Oracle RAC的特征之一。它不仅使得集群在不同实例间传递数据块时突破block pinging算法的限制,它还可用作心跳和常规通讯。连接失败将导致集群的重组来避免脑裂发生,Grid Infrastructure将使一个或多个节点重启。可以为RAC和Grid Infrastructure配置一个单独的连接,这种情况下你需要配置RAC来使用正确的连接。这个连接始终应该是私有的,不应该受到其他网络的干扰。RAC用户可以使用两种技术来实现内部互联:以太网和Infiniband。

配置Shared-All架构
  一个所有节点同时访问共享存储和数据的集群被称为shared-all或者shared-everything结构。Oracle RAC就是基于shared-everything架构:一个数据库位于共享存储中,通过集群各个节点上运行的实例来访问。在Oracle术语中,一个实例由内存结构和一些进程组成。对应的,数据库存储在磁盘中的数据文件里。在RAC中,实例的故障并不意味着该实例管理的数据的丢失。在一个节点发生故障后,集群中的另一个实例将会进行实例恢复,所有剩余节点都将继续服务。使用高可用技术,例如FCF或TAF,可以将实例失效对用户造成的影响降到最低。故障节点最后将重新加入集群并分担工作量。

配置Active/active集群
  在这种模式下,所有的节点都能提供服务(不会有用户请求在standby上被闲置的情况)。大部分案例中,集群成员的硬件配置都是相同的,避免可能的性能问题,也更容易实现负载均衡。Active/active集群需要更复杂的管理软件来管理所有资源,比如磁盘和内存需要在所有节点间进行同步。更常见的,一个私有网络被用做心跳连接。集群管理软件必须能够检测到节点问题,比如节点故障或者集群通讯问题

配置Active/passive集群
  一个active/passive集群工作方式与active/active不同。一个active/passive集群中的成员硬件配置依然应该一致或基本一致,但同一时间两个节点中只有一个节点能处理用户请求。集群管理软件会不断地监控集群中资源的健康状况,当一个资源失败,集群管理软件会尝试将该资源重启数次,若还是无效,备用节点将进行接管。
  根据安装时的选项,集群的资源可以分配在共享存储或文件系统上,后者在资源failover的时候也会进行一次failover。使用共享文件系统比使用非共享的文件系统更有优势,后者在重新挂载到standby节点上以前可能需要进行fsck(8)检测。Veritas集群套件、Sun(Oracle)集群和IBM的HACMP就可用作安装active/passive集群的集群管理工具。
  鲜为人知的是,使用Oracle ocp Grid Infrastructure来安装一个active/passive集群非常简单,利用Grid Infrastructure的应用程序接口和作为集群逻辑卷管理器的Oracle ASM,可以轻松地不间断监控一个单实例oracle数据库。当一个节点发生故障,数据库会自动迁移到备用节点。根据初始化参数fast_start_mttr_target和恢复集的大小,这个故障切换可能非常迅速。不过,作为failover过程的一部分,用户的数据库连接将被断开。
  Active/passive模式可以通过将active_instance_count参数设置为1来打开,但仅当节点数为2时才有效。