RAC 几种架构

Oracle集群

RAC 几种架构

集群架构对应应用来说就像使用单台服务器一样,在应用层面是感觉不到有多台服务器的存在。这样可以提供比单台服务器更多事务和负载的能力。

RAC 几种架构

假设将应用和数据库部署在一台服务器上面,可能在系统规划的时候单台服务器可以完全满足当时的业务负载需求,但是随着时间的推移,业务量的不断的增加,可能单台服务器就无法满足业务需求,这个时候就需要对服务器的性能提升扩展。

 

扩展的方式与两种,纵向扩展:对单台服务器的CPU进行扩展,内存资源进行扩展,存储资源进行扩展等,这种扩展方式会有一个很大的限制,比如受到单台服务器物理槽位的限制,横向扩展:是将多台服务器组成一个整体,将负载分配给所有的服务器,这样就可以提供比单台服务器更高的一个性能,这种设计出来的架构就是集群架构。

横向扩展比纵向扩展的优势是随着业务量的不断增加也可以不断扩展服务器的数量,以得到更高的一个性能。另外一个好处是横向扩展可以提供系统高可用性,比如单台服务器在运行的时候出现服务器的故障,业务必然会受到影响,如果采用这种横向扩展的方式,因为是多台服务器当一台服务器出现故障,相关的业务可以切换到集群的正常的服务器上面,这样实现了系统高可用性。

 

数据共享

RAC 几种架构

按照数据共享的架构来分类可以分为两种类型,share-nothing,share-disk。

 

Shared-Nothing

RAC 几种架构

Share-nothing在每一个节点上它在物理上都是相互独立的,而且访问的存储也是相互独立的,数据在存储的时候是按照一定的规则做一定的切割分布到不同的磁盘当中,当应用发出一个查询请求,其实所有的节点都在工作,最后将所有节点的结果汇总反馈。这种集群架构下面的负载分布在所有的节点当中。优点是特别适用于海量数据的查询,比如数据仓库,因为节点数量比较多,所有节点是并行工作,这种架构可以承载更多的业务压力。

另外一个优点是,即使节点比较多,但是磁盘并不是所有节点共享访问的,那么节点之间的数据交换就比较少,避免了多节点并发共享磁盘访问带来的性能瓶颈,也就是说它不需要协调多个节点之间对共享数据同时访问。

这种架构也存在一些缺陷,因为所有磁盘都是相互独立的,如果一个节点出现问题可能会出现单点故障,会导致数据的丢失,这样就会对整个集群造成严重的影响,这种架构主要是为数据仓库所设计的,数据仓库特点就是海量数据,统计分析类的查询,所以这种架构的数据库的存储是采用列式存储,所以这种系统不适用于联机交易系统。

 

Shared-Disk

RAC 几种架构

共享磁盘架构:集群当中所有节点都链接在共享存储上面,对这种架构又可以分为主主模式和主备模式。

 

主 - 主

RAC 几种架构

在主主模式下,集群当中所有服务器除了同时访问共享存储以外还同时对外提供服务,并且负载是可以均匀的分布在集群所有服务器当中,如果集群一台或者多台服务器出现故障,那么故障服务器的连接就会被自动切换到集群当中正常的服务器当中。

 

 

主 – 备

RAC 几种架构

在主备的架构当中,任何时间点只有一台服务器可以正常访问共享存储,并且对外提供负载服务,另外一台服务器处于待机状态,当活动的服务器发生故障的时候,第二台服务器接管服务并且获得访问存储的权限,这种架构只提供了可用性没有提供集群架构可扩展。

 

Oracle集群就是典型架构当中的主动主动模式,RAC ONE NODE就是集群当中的主动被动模式。

 

Shared-Disk

RAC 几种架构

这种主动主动模式具有很好的扩展性,并不会因为一个节点出现故障导致整个集群出现故障,而且这种架构可以实现负载均衡。

 

因为数据都是共享的,那么就需要一种机制来协调所有节点对数据的访问,以此保证数据的一致性和完整性。

 

如果节点之间的通信出现了问题,每一个节点都认为自己是集群当中唯一一个健康的节点,其他节点是宕掉的状态,自己应该获得对整个集群的一个控制权,对共享数据的一个操作权限,这种情况就是信息孤岛,因为数据是共享的,这种情况下对数据的操作会导致数据的损坏,这就需要一种方式出现信息孤岛的时候需要对某些孤岛进行处理。

 

在集群架构当中,相应的配置文件不是集中存放的,而是每一个节点都有自己的一个本地副本,集群在正常运行的时候,任何节点修改相应的配置那么可以自动同步到集群的另外一个节点。假如某个节点正常维护,其他节点修改了相应的配置信息,正常维护节点的配置文件可能不会被自动更新,维护过后该节点重启可能使用的还是旧的配置文件,这就是健忘性。