ORACLE RAC ONE NODE技术介绍

来源:互联网 发布:体育场馆播放软件 编辑:程序博客网 时间:2024/05/17 07:45

1.  概述

       时代总是在进步的,这总是得益于新的生产技术的出现,我们总是有太多的问题需要解决,对于技术人员来说,当一项新的技术的出现并解决了困扰已久的问题的时候,这无疑是最激动人心的,它不仅把我们从落后的生产过程中解放出来,更重要的是,它能使生产力更大化、成本更小化。如更好的资源利用和更少的停机时间。本文主要谈谈oracle rac中的一项新技术革新,即oracle rac one node。在分析过程中,会引用一些旧有技术做对比,如VM,FAILOVER和实例迁移等

Oracle Real ApplicationClusters One Node 是 Oracle Database 11g 第 2 版企业版的一个新选件。它对服务器虚拟化的诸多优势加以改进,并将这些优势扩展到物理服务器环境中运行的数据库。它允许在集群中的数据库以单实例的方式运行在一个节点上。对于计划和非机划的停机能提供更有效地保护。我们总是希望业务能够持续的运行、系统能得到更可能的保护、升级和迁移的代价最小化,而新技术是否需要被采用,需要具体分析它的技术革新性。

2.  分析

2.1. 技术背景

传统的Oracle RAC被用于多服务器架构体系,此体系中,RAC的许多分开的实例分置于不同的服务器。这就防止了服务器非计划故障,因为透明应用程序故障切换(TAF)会重定向到另一个服务器。但是在Oracle 11g第二版中有一个新的被称为“RAC One Node”的特性,它主张将RAC的多个实例运行在一台群集的服务器上。它有一个快速的“实例重定向(instance relocation)”的特性,来防止突发的服务器故障。

Oracle RAC One Node提供的是一种cold failover 方案。假设在2个节点的rac one node上,实例只在其中一个节点运行,另一个节点就作为cold standby存在。 如果实例faild,那么RAC ONE Node 检测到后,首先会在相同的节点尝试restart。如果当前节点出现问题,或者实例不能restart,那么instance 会被relocated 到standby 的节点上去。Relocated的过程是自动实现的,不需要downtime 和人工的介入。Relocated 使用的是Omotion,使用Omotion 可以对实例进行migration 和 relocation。

简单的来说,RAC ONE NODE 也是基于多节点来实现,多节点之间也是需要安装clusterware,多节点形成一个single cluster,而实例只在其中一个节点上运行。当出现问题时通过Omotion技术将实例转移到single cluster中的其他节点上行。当然也可以手工使用omotion来进行转移,从而实现零停机的升级和打补丁等操作。

2.2.RACONE NODE 原理

RAC One Node是11.2的新特性, 是RAC数据库中的一个实例运行在GRID集群中,并且可以实现failover。

这个功能有些类似于我们以前俗称的"HA数据库" <HA - high availability>, "HA数据库"是利用其他厂商的集群软件来管理Oracle单机数据库,实现数据库的高可用。而RAC One Node是通过ORACLE 集群软件(GRID)来管理数据库,实现数据库可以在集群中节点上切换(failover/relocate),达到数据库高可用的特点。RAC One Node是完全由Oracle提供的一整套高可用的解决方案。

在11.2之前,为了实现数据库的高可用<俗称"HA数据库">,通常的做法是将单机数据库部署在其他厂商集群环境中(比如 HP MC/SG, IBM HACMP 等)管理,来实现数据库的高可用。即单机数据库运行在主节点上,当主节点需要维护或者异常中断的情况下,通过厂商集群软件将服务IP资源组和数据文件资源组切换(failover)到备节点,将数据库在备用节点重新启动。这个过程我们一般称为cold failover,因为数据库在切换的过程中是先shutdown再open。

这里一个RAC ONE NODE的框架图:

 

从图上我们看出,rac one node,有3个物理主机,Server A、ServerB、Server C,这3个物理主机组成一个single cluster,在3个主机上,可以有5个不同的single instance的database,DB1和DB2host在Server A上,DB3 host在Server B上,DB 4和DB 5host在Server C上。各个数据库使用共享存储。

2.3.  Oracle rac原理

RAC,全称realapplication clusters,译为“实时应用集群”,是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。

RAC提供的优缺点:

优点:

Oracle RAC主要支持Oracle9i、10g、11g版本,可以支持24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。在OracleRAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。

节点负载均衡;

提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化;

通过并行执行技术提高事务响应时间----通常用于数据分析系统;

通过横向扩展提高每秒交易数和连接数----通常对于联机事务系统;

节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型机,同时节约相应维护成本;

可扩展性好,可以方便添加删除节点,扩展硬件资源。

缺点:

相对单机,管理更复杂,要求更高;

在系统规划设计较差时性能甚至不如单节点;

可能会增加软件成本(如果使用高配置的pc服务器,Oracle一般按照CPU个数收费)。

在Oracle9i之前,RAC的名称是OPS (Oracle parallel Server)。RAC 与 OPS 之间的一个较大区别是,RAC采用了Cache Fusion(高速缓存合并)技术。在 OPS 中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。使用Cache fusion时,RAC的各个节点的数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。

RAC中的特点

在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备.

逻辑结构上看,每一个参加集群的节点有一个独立的instance(数据库实例),这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communicationlayer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cacheI

每一个节点的instance都有自己的SGA

每一个节点的instance都有自己的background process

每一个节点的instance都有自己的redo logs

每一个节点的instance都有自己的undo表空间

所有节点都共享一份datafiles和controlfiles

2.4.操作系统高可用原理

计算机的高可用性

计算机系统的可靠性用平均无故障时间(MTTF)来度量,即计算机系统平均能够正常运行多长时间,才发生一次故障。系统的可靠性越高,平均无故障时间越长。可维护性用平均维修时间(MTTR)来度量,即系统发生故障后维修和重新恢复正常运行平均花费的时间。系统的可维护性越好,平均维修时间越短。计算机系统的可用性定义为:MTTF/(MTTF+MTTR) * 100%。由此可见,计算机系统的可用性定义为系统保持正常运行时间的百分比。

 

负载均衡服务器的高可用性

为了屏蔽负载均衡服务器的失效,需要建立一个备份机。主服务器和备份机上都运行High Availability监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供服务;当备份管理器又从主管理器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主管理器就开始再次进行集群管理的工作了。为在主服务器失效的情况下系统能正常工作,我们在主、备份机之间实现负载集群系统配置信息的同步与备份,保持二者系统的基本一致。

 

HA的容错备援运作过程

 

自动侦测(Auto-Detect)阶段由主机上的软件通过冗余侦测线,经由复杂的监听程序。逻辑判断,来相互侦测对方运行的情况,所检查的项目有:主机硬件(CPU和周边)、主机网络、主机操作系统、数据库引擎及其它应用程序、主机与磁盘阵列连线。为确保侦测的正确性,而防止错误的判断,可设定安全侦测时间,包括侦测时间间隔,侦测次数以调整安全系数,并且由主机的冗余通信连线,将所汇集的讯息记录下来,以供维护参考。

自动切换(Auto-Switch)阶段 某一主机如果确认对方故障,则正常主机除继续进行原来的任务,还将依据各种容错备援模式接管预先设定的备援作业程序,并进行后续的程序及服务。

自动恢复(Auto-Recovery)阶段在正常主机代替故障主机工作后,故障主机可离线进行修复工作。在故障主机修复后,透过冗余通讯线与原正常主机连线,自动切换回修复完成的主机上。整个恢复过程完成由EDI-HA自动完成,亦可依据预先配置,选择回复动作为半自动或不恢复。

HA工作方式

u  主从方式(非对称方式)

工作原理:主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的一致性通过共享存储系统解决。

u  双机双工方式(互备互援)

工作原理:两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享存储系统中。

集群工作方式(多服务器互备方式)

工作原理:多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。

 

2.5.OracleRAC One Node 优缺点

Oracle RAC One node 有如下优点:

u  不需要第三方的ha软件,通过oracle grid软件控制了高可用,内置集群高可用性故障转移

u  当为数据库打patch单实例数据库滚动升级

u  实例的主动迁移和故障切换

u  跨服务器的实例动态迁移

u  在线升级到RAC

u  RAC的廉价版

u  为同一个主机上的各个数据库Caging不同比例的CPU

RAC one node的滚动升级是非常有用的功能,使用该特性,可以实现零停机的进行升级。

RAC one node不适用如下环境:

u  由于之启动一个实例,因此不能实现多台主机同时使用,达到应用负载平衡,只能在多台主机部署多个数据库,人为把应用分开到多台服务器;

u  由于当一个节点down掉后,需要在另外一台主机启动数据库,需要有一个启动过程,因此不能到到一个真正的高可用性解决方案;

u  由于rac one node基本也是在一个局域网内部署,因此,不能实现灾备,作为一个灾难恢复(DR)解决方案; Data guard是比较好的解决方案。

2.6.RAC和 RAC One Node 的区别

u   Rac one node 是RAC数据库中的一个实例运行在GRID集群中,它与标准 Oracle RAC 的主要区别在于 Oracle RAC One Node 数据库通常仅在一个实例上处于活动状态。RAC One Node 使用“实例重定向(instance relocation)”的特性, 当一个实例失败时, RAC One Node 在另一个节点重启失败的实例, 在另一个服务器通过重新挂在磁盘和使用pfile/spfile重启实例;rac是在两个节点同时运行,当一个节点出现问题,前端应用直接通过客户端切换到另外节点。

u  资源消耗,rac one node是在一个节点运行,另外一个节点资源不是用,和操作系统ha基本相似,Rac数据库是多个节点同时运行一个数据库,由于多个节点同时运行一个数据库,因此,会出现内部数据传输,如果应用开发有问题,或部署有问题,那么,虽然是两个节点,但是承压能力不能达到预期目的,并且如果应用设计不好,那么使用rac后性能优于内部数据传输,会降低很多。

u   rac是运行多个实例,但是对应同一个数据库,而Rac one node也可以在多个节点运行不同的数据库实例来充分利用资源,但是多个实例分别对应不同的数据库,不是对应同一个库,这样可以分别部署不同应用,硬件资源也得到了充分利用,也减少了内部通讯资源,性能得到了提升。

u  资源控制,如果在同一个rac集群中创建了两个库,那么每台服务器就要存在两个实例,这两个实例无法单独控制资源使用,例如cpu等,但是rac one node如果在一台机器上配置两个库,那么每个库可以单独控制资源使用。

u   Rac是数据库在多个节点启动多个实例,但是实例名称不一样,rac one node是在一个节点启动一个实例,当本节点实例出现问题,oracle 通过11g oracle restart技术,在这个实例在另外一台机器自动起来。

u  如果当前数据库不能满足资源要求的时候,Oracle Rac 可以在线添加节点,但是Oracle RAC One Node转成Oracle RAC之前,不能添加其他的实例。

u   RAC one node每个处理器需要的费用会比RAC 的每个处理器要便宜点,对于2个节点的rac one node,只需要买一个节点的授权即可

u   Rac 是在多台机器同时运行一个库,压力能够分担到不同主机,而rac one node只能在一台机器访问一个库。压力只能在一台主机,只有当这台主机出现问题,才切换到其他主机。

2.7. 与第三方集群软件的比较

操作系统ha和racone node不同.Rac one node 可以在线转换成rac,但是操作系统ha软件只能实现主备的,不能转换成rac。

操作系统ha需要单独安装操作系统ha软件,软件是主备方式,必须先关闭主数据库,才可以切换到备用数据库。

Rac one node通过grid控制切换,操作系统ha通过操作系统曾资源控制。

在GRID环境中可以创建多个RAC One Node数据库,分别运行在不同的节点上,增强了硬件的利用率

RAC One Node配置全部采用oracle产品,管理维护和故障排除也变的更加简单

如果当前运行节点需要维护(OS 打patch等)或者服务器资源不足等等,可以手动切换数据库(relocate)到备用服务器,采用online database relocation,可以减少业务中断时间(应用需要配置TAF)

操作系统ha只提供网络,主机故障切换,但是rac one node提供服务器级别和数据库级别——双重级别的failover。

操作系统ha,当一个节点出现问题,那么需要在失败节点进行关闭数据库,umount文件系统,varyoffvg等等操作,如果是由于网络出现问题,数据库正在运行很大事物,那么很可能无法切换过去;但是rac one node技术是通过oracle restart技术,由于存储使用asm,在安装完软件后,所有节点的asm是启动的,只不过数据库只在一个节点启动,因此不需要varyonvg,mount文件系统等等操作,当检测到主节点down,备用节点直接启动数据库,减少了切换时间。

如果一个节点超负荷运行,或是需要停机维护,那么Rac onenode可以通过命令在线切换到另外节点(srvctl relocate database -d hadb -n),执行relocate 命令后,GRID agent首先在节点2启动数据库实例2,当实例2启动完(reconfigure结束),agent才开始停止实例1,这个与我前面提到的RAC One Node是online relocation是一致的,但是操作系统ha,如果进行手工切换,那么和出现问题切换基本一样,都需要把数据库down,然后在另外一边启动。这样down掉时间会延长。

根据技术实现原理看,rac one node技术是在不使用操作系统ha,全部使用oracle技术实现的一个主备系统,只不过切换速度比操作系统ha会快很多。

3.  适用场景

一个RAC One Node的使用案例。比方说,将许多中小型数据库整合到几台(N台)服务器上:这些数据库可能运行着关键任务,它们都很小并可以轻松地在单个节点上运行,因此它们并不需要RAC的可扩展性,但它们确实需要RAC提供的高可用性和灵活性。您可以创建一个N或N+1个节点的集群,然后可以在集群上创建您所需要个数的单节点RAC数据库(在这个例子上是N个)。您还可以使用11.2提供的新特性InstanceCaging,限制每台数据库服务器上可以使用的内核数量。

3.1. 集群故障转移Cluster Failover

如果一台服务器出现故障,使用集群容错转移切换到集群中的空闲服务器(您的第N+1台或一台额外的服务器),Oracle RAC One Node 通过无人值守的集群故障切换同时响应服务器故障和数据库故障,可以重新定位受影响的数据库服务。

下面是 Oracle RAC One Node 故障切换的一个图形描述。

在上面的情形中,服务器 B 发生故障,之前运行在服务器 B 上的数据库实例 DB3 在服务器C 上启动。

Oracle RAC One Node 与 Oracle Clusterware集成,后者监视数据库的运行情况并确保数据库服务的可用性。出现故障时,Oracle RAC One Node 将检测故障,然后重启发生故障的数据库或者切换到另一台服务器。与 HP、IBM 和 Symantec 等供应商提供的其他第三方冷故障切换解决方案相比,它同样也实现了冷切换功能,只是在集成度上,完全由一家产品实现,这使得资源间依赖性检查变得非常紧密。例如ASM实例和数据库实例之前的依存关系。

3.2.低成本RAC环境

从前面列出的特性可以看出,当运行在一个节点的时候,oraclerac one node是oracle rac的“缩版”,因而它的价格也相对降低,比较适用以下情况:

开发环境和正式环境要一样是RAC,但硬件投入要最小化。

最开始只有一台服务器,但根据业务量,会不断地扩充实例节点。

3.3.不停机计划维护

在某些情况下,我们必须限制实例的cpu资源利用,甚至需要动态改变这种配置。如果应用系统对资源的需求增长很快,需要更多的硬件资源,我们可以通过oracle rac one node方式联机升级到oracle rac。传统的技术必须要重建成rac,这需要停机时间。

如果需要把数据库切换到另外一个拥有更好资源的服务器上,在oraclerac one node技术上是no downtime的。而传统的方式,我们不得不花费时间迁移数据库。

另外,当我们需要数据库所在服务器进行计划维护的时候,如打操作系统补丁、添加硬件设备等,通常的做法需要把数据库实例和数据迁移走,甚至需要一份可靠的备份,整个过程需要一定的时间。如果把数据库安装成oracle rac one node模式,它可以使用srvctl命令进行实例迁移。我们终于使cold-failover跨入了真正联机维护的时代。

3.4.资源切换和客户端透明性

传统的数据库架构中,如果把数据或实例迁移到其他服务器上,客户端不得不等待迁移完成,并重新配置连接地址。oracle rac one node和oracle rac一样,能够使用简单客户端访问名(SCAN),这样,客户端应用程序无需重配连接池,就能直接访问数据库,这个过程对于应用来说,是透明的。这个和第三方的集群软件的VIP功能是相同的。

3.5.更强的灵活性和负载管理

如果升级到oracle rac one node,不中断服务迁移实例将成为可能。接下来的分析,将引用VM进行对比。

Oracle RAC One Node 的Omotion特性允许在不中断服务的情况下将一个正在运行的实例从一台服务器迁移到另一台服务器。

下面是 Oracle RAC One Node Omotion特性的一个图形描述。

Omotion特性可以将数据库从繁忙的服务器迁移到具有剩余容量的服务器,从而提供与 VM 相同的负载平衡优势。Omotion利用 Oracle Real Application Clusters 同时运行服务于一个数据库的多个实例。在上图中,服务器 A 上的 DB2 RAC One Node 数据库迁移到服务器 B。Oracle RAC One Node 在服务器 B 上启动另一个 DB2 实例,很短一段时间内,Oracle RAC One Node 将以主动-主动配置模式运行。当连接完成了在服务器 A 上的事务后,它们就被迁移到服务器 B 上的实例。一旦所有连接都完成迁移,服务器 A 上的实例就关闭,迁移随之完成。

即使当系统以峰值容量运行时,Omotion也无需停止环境。而 VM 为了将中高数据库负载从一台服务器移至另一台服务器,一般需要停止环境。停机意味着损失。

迁移 VM 时,VM 必须将它在整个网络中的完整内存状态镜像到目标主机,以便再现该虚拟机的状态。如果正在处理的数据库负载很高且数据库缓存中缓存块的变化较快,那么内存镜像功能很难跟上变化的速度。因此,成功进行内存镜像的唯一途径很可能变为:首先停止源 VM,接着镜像内存,最后切换到已迁移的 VM。有了Omotion,负载很高的实例不再成为问题,因为迁移期间的工作实际上被拆分到两台服务器上。因此,Oracle RAC One Node 可以轻松地将更高的负载迁移到另一台服务器上。

Omotion能够在不同代处理器的服务器之间移动。VM 迁移要求处理器必须是相同的 — 两个处理器都是 Intel 或 AMD 还不够。两个Intel(或 AMD)处理器还必须具有完全相同的指令集。Omotion支持迁移到新处理器(如 Nehalem),甚至支持在不同供应商的处理器(Intel 和 AMD)之间进行迁移。

RAC One Node 提供了卓越的扩展能力,并且不会造成服务中断。通过将数据库实例移至一台更大的服务器,VM 可以增加供数据库实例使用的 CPU 的数量。然而,为使增加的 CPU 生效,VM 需要重启操作系统。另外,许多 VM 解决方案对 VM 的大小有限制,这种限制对数据库服务器来说太小了。使用 RAC One Node,数据库可以自动适应更大的服务器并可利用额外的 CPU — 无需重启。此外,对 RAC One Node 没有 CPU 限制。

3.6.存储虚拟化

ASM的自动管理特性确实令人向往,我们很多时候在对存储进行维护的时候,不再需要停机了,这点很重要。而第三方集群软件并不支持存储虚拟化,如HACMP,HP SERVICEGUARD。

Oracle RAC One Node 通过一个称为自动存储管理 (ASM) 的特性提供存储虚拟化。ASM 对呈现给数据库的所有存储都进行虚拟化,使存储的管理和调优实现自动化,并且无缝地处理由于磁盘故障或磁盘添加/删除事件导致的存储重新配置。

ASM的存储池能提高存储利用率。使用该特性,运行 Oracle RAC One Node 的单个服务器(或集群)上的所有数据库将共享一个存储池。由于 ASM 确保了所有设备的 IO 始终是平衡的(即避免热点),因此数据库磁盘 IO 始终处于调整中。对空闲磁盘空间进行集中管理而不是将它们分散在多个本地存储池中。

当使用asm的时候,由于asm会自动那个进行io均衡,也就是把存放在asm中的所有disk进行条带,那么如果存放在asm中的磁盘如果是在同一个raid,那么性能就会变差,在同一个raid中的磁盘如果数量越多,那么io次数会越多,io性能就会越慢,因此,在同一个asm dg中的磁盘要保证在不同的raid中,性能才会得到提升。
原创粉丝点击