查看文章 |
24*7(有些叫法也为24*7*365)的高可用系统越来越多的受到广泛重视与应用,那是因为在实际环境中,不间断的系统代表的就是不间断的义务收入。但是 ◆怎么样搭建与治理24*7的高可用环境? 这些话题,都是决策者与实施者都应当考虑的,也是本文所探讨的,我们需要搭建一个怎么样的高可用环境,才能真正做到最适合。 一、什么是高可用(High Availability) 在高可用的解释方面,有人给出了如下的诠释: (1)系统失败或崩溃 (system faults and crashes) 可见,高可用不仅仅包含了系统本身故障,应用层的错误,人为错误等等,还应当包括数据冗余、容灾以及计划的维护时间,也就是说,一个真正的高可用环境,不仅仅是能避免系统本身的问题,还应当能防止天灾人祸,以及有一个简单可靠的系统维护方法(如微码升级、软件升级等等计划停机维护)。 现在高可用的计算方法一般以年在线率来计算,如规定一年之中的可用环境要达到99.95%,那么24*365*(1-99.95%)=4.38小时(包括维护时间)。那么假定一个系统本身一年之中故障时间是1小时,但是计划维护时间却花了20小时,那么这个系统也不能算是一个满足设计要求的高可用环境。 现阶段使用环境中,基本没有真正的100%的在线环境,或者说,假如达到100%的在线能力,将花费非常多的代价,所以一般能达到99.95%以上的可用性的环境,一般都可以认为是高可用环境。 高可用性的在线率(可用级别)与停机时间可以参考如图1-11所示的对照表:
对于高可用性在线效率的计算,我们可以参考如下方法:
图1 在公司收益与投入成本计算方面取得一个平衡,则是我们所希望的在线效率,但是收益与成本的计算方法则是决策者与实施者需要着重考虑的问题了,也是我们下面希望能试图解释的问题。 二、Oracle高可用相关功能的产品概述 因为高可用的范围定义太广泛,本文我们只讨论与Oracle数据库有关系的高可用设计,如数据库主机的错误,数据所在的存储错误,介质损坏以及主机与数据的冗余保护等等,并不讨论应用层的设计,Oracle 提供支持high availability 相关产品主要有下面几种: (1) Oracle Parallel Server(8i)/ Real Application Cluster(9i/10g) 还有其他很多小的功能,如在线表的重定义,新的安全审计功能等,也都是为在线系统而设计的,但是,我们这里主要只考虑构架方面的高可用设计,也就是与成本有关系的高可用设计,怎么样达到成本与收益的最大平衡。 所以,我们将主要讨论的是Oracle OPS/RAC、Standby/Ddata guard、Advanced Replocation/Stream以及与Oracle Server相关的OS HA(双机)。 1、OPS /RAC OPS/RAC 最原始的设计初衷就是system/application high availability。与其他产品相比较: OPS/RAC 是多个服务器的cluster,组成具有更大计算处理能力与故障处理能力的集群。cluster 里面不同的 node 使用一个(一般是一个)或多个oracle instances 与一个database 连接(Shared Storage)。 主要的技术特点: 2、Advanced Replication /Stream Advanced Replication 的设计初是分散异地的application Access database locally。这种技术可以将一个数据库中的objects复制到另一数据库中。假如是整个数据库的复制,也可用于高可用环境。 从Oracle 9i开始,Oracle更倾向使用Stream的技术,通过对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数据库的objects甚至整个数据库的同步。 主要的技术特点: (1)技术相对灵活,可以对单独的object,或者是整个数据库进行复制,而且作为stream,复制的压力更小,对主库没有压力,闻名的复制软件share plex就是采用类似的技术进行数据的复制的。 3、Standby/Data Guard Standby database/Data guard是ORACLE推出的一种高可用性数据库方案,在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的备份,可以实现快速切换与灾难性恢复。 Oracle从7.3才开始支持standby database。在9i开始,发展为data guard,并支持MAXIMIZE PROTECTION、MAXIMIZE AVAILABILITY、MAXIMIZE PERFORMANCE的三种保护模式,可以实现自由的手工主备切换,实现高可用的条件,假如配置合理,可以实现部分的自动切换。 从Oracle 9i开始,也开始支持逻辑standby,逻辑standby的原理跟Stream复制相差不大,可以归结到Stream中。 主要的技术特点: (1)可以实现数据库主机以及共享存储的完全冗余保护,该冗余甚至可以跨地域,做成容灾保护,另外,主节点必须运行在归档模式下,并且可能要force logging,保证备用节点的数据正确性。 4、OS相关HA Oracle Server HA是基于OS的技术,采用OS支持的Cluster Soft来保证主机的冗余保护,跟Rac一样,不能保证共享存储的高可靠性。 它的基本架构共分两种模式:双机互备援(Dual Active)模式和双机热备份(Hot Standby)模式,对于Dual Active模式,双机都是正常工作的,但是工作业务不同,在一个主机故障时,切换到另外一个主机上;Hot Standby模式则只有一个机器工作,另外一个机器处于接管状态。 不管是哪种模式,Cluster都可以正确的检测到系统异常并自动进行失败切换,假如是Dual Active模式,则需要注重当两个业务都切换到一个server上的时候,该机器是否能承载双份的压力。 主要的技术特点: (1)与Rac一样,database 所有的data files 是建立在共享存储上面的,存储的冗余保护则需要依靠其它技术。 三、Oracle高可用相关功能的具体说明 1、OPS/RAC OPS/RAC通过两个或多个节点的cluster,多个节点之间,采用高速通信链路连接,来解决数据库的高可用性,在OPS/RAC中,每个节点都可以被应用端访问并可以自动负载平衡。假如其中一个节点发生故障,所有的节点将自动切换到另外一个(或几个)节点上。可以实现动态应用的切换以及数据库服务器及时的失败处理,在server的高可用方面提供最高保护。 图2 如图1-14所示,最理想的RAC环境,其实就是10g以后提出来的网格计算的概念,在存储层采用ASM实现可扩充性的存储网格计算。ASM在这里可以实现数据的分布、镜像及自动负载均衡等。
图1-14 RAC网格计算 在中间层实现了数据库的可伸缩性,例如可以根据负载情况增加或减少节点个数,可以根据业务情况划分业务的资源分配,可以根据每台机器的负载实现负载均衡,可以充分利用每个节点的资源实现分布计算。 最上层就是应用的分布计算了,应用分布对比数据库分布要容易得多,一般采用廉价的PC服务器就可以实现线形扩展。不过,在高可用的RAC及网格计算模式下,多个应用在一个RAC环境中,更有利于资源的合理分配。比如,在特定时期,可以让财务系统使用更多的机器实现财务对账计算,在另外一个时期,可能让其他业务系统使用更多的资源计算。 所以,理想的RAC以及网格计算,不需要关心数据库是放在什么位置,数据库是怎么运行的,只需要发出一个需求,让网格返回一个结果而已,就像我们用电一样,插上插头,电灯就可以亮了。 2、Advanced Replication /Stream Advanced Replication/Stream用于高可用,一般是指对数据库的整个复制,假如数据库在异地,也还可以用于容灾,所以,假如该技术用的好,是一个非常不错的选择。 图3 如上图的结构中,主站点可以在城东,被复制站点可以在城西或者更远的地方,数据通过城市网络传向被复制站点,在stream中,传送的可以是被分析过的LCR anydata数据结构,到目标数据库的时候再解析成对应的DML语句实现同步。这样的话,主站点与被复制的站点可以分别的被应用访问,虽然被复制站点可能比主站点的数据要延迟一些。 正因为Advanced Replication/Stream既实现了高可用,又实现了容灾,在大型的在线电子商务网站中,一般使用成熟的share plex软件实现读写分离,读的站点可以分布在世界各地,既大大提高了网站系统的可用性,又大大提高了数据的安全性。 3、Standby/Data Guard Standby/Data guard因为技术简单成熟,成本低廉(Oracle自带的功能,不需要单独购买),是广泛采用的一种数据库的高性能与容灾方案,假如采用不同保护级别可能会有不同的性能结果,如想不丢失数据,则可能会影响性能,假如想最好的性能,则一定注重保证在主节点完全故障的时候,备用节点不会丢失数据。
图4 备用数据库可以认为是一个主数据库的镜相,一个处于不断恢复日志中的主数据库。从9i开始,备用数据库又分为物理备用数据库与逻辑备用数据库,我们这里只讨论物理备用数据库。 Standby/Data guard实现了数据库的高可用以及数据的异地容灾,与Advanced Replication/Stream不一样的是,备用站点不能实时的被访问,降低了资源的利用程度,而且假如主站点故障,一般需要手工切换。 但是,正因为其方便的治理,成熟的技术,低廉的价格,所以也被广泛的使用在数据的容灾上面,假如与RAC结合,RAC+Data Guard可以实现一个良好的高可用,高性能的数据库。 4、OS相关HA HA很类似于RAC,两种方式,都需要两个Server,一个闲置。 在主机crash 的情况下,都可以提供某种程度的恢复,保持系统可用。 不过一个是OS Vendor的solution,一个是Oracle的solution,如,在一个 一备三 的系统结构中:
图5 在以上的结构中,正在被使用的数据库服务器有3台,其中3台中任何一台发生故障,可以被一台备用主机接管,等待发生故障的机器修复,再手工切换会原来的结构。 HA的最好好处就是可以解决服务器的单点故障的问题,如机器故障,与Rac一样,并不能解决磁盘故障问题或者是阵列故障问题。所以HA也必须采用附加的备份机制如LV镜相与卷复制,或配套使用oracle standby。 HA的机制起源比较早,发展到现在已经日趋成熟,在实际安例中,使用还是比较广泛的,但是它必须有一半的资源处于等待状态,所以资源浪费跟standby一样,比较严重。 5、最大可用性体系结构(Maximum Availability Architecture,简称MAA) Oracle推出MAA计划,也表示了它对高可用性方面的重视,特别是从Oracle 9i/10g/11g看来,很多特性都是为高可用性准备的。可以这么说,Oracle 8i/9i开始出现很多高可用的特性,而在Oracle 10g/11g中,它们更完善、更可靠了。图1-13是一个典型的Oracle MAA体系结构。
图1-13 典型的Oracle MAA结构 在该体系结构中,数据库采用了RAC+ASM+STANDBY的结构体系,应用层采用Oracle自己的Application Server。用户通过负载均衡设备访问不同的Oracle应用服务器,而应用服务器通过自动负载均衡及Failover特性访问当前的主数据库。 当主站点出现故障的时候,Data guard可以手工或者是自动切换到备用端,应用服务器的访问也将自动被切换到备用站点,以保证系统的最大可用性与业务连续性。 Oracle定义MAA是一个简单、冗余而健壮的结构,它可以实现故障的预防、探测和恢复。MAA结构主要包含以下组件: Real Application Clusters (RAC) 利用多个互连计算机的处理能力。RAC软件和称作群集的硬件集合联合了各个组件的处理能力,从而建立强健的计算环境并提供:
可用性—提供近乎连续的数据访问,将硬件和软件组件故障产生的中断降低到最少。
可伸缩性—允许向群集添加附加的节点,以提高处理能力,而不必重新分布数据或更改用户应用程序。
易管理性—提供一个单独的系统映像以便管理。另外RAC还支持故障切换。
Oracle Data Guard Oracle Data Guard在另一个地方上管理一个产品数据库的同步副本。Oracle Data Guard支持远程归档、恢复以及switchover和failover,同时还提供了灾难保护和Read-only for Reporting等。
冗余中间/应用层 应用层由一组服务器为客户端提供应用服务,整个应用层功能可能分布在很多台主机上,以集群的方式让多台主机提供相同的服务,实现高可用性。
冗余网络结构 一个高可用的网络地层可能会包含冗余的设备,如DNS服务器等,来实现主从节点的路由、负载均衡以及Failover时的物理层切换等。
冗余存储结构 现在的冗余存储技术有很多,任何一种基本都可以满足要求。 四、Oracle高可用相关功能的对比说明与方案选择 通过以上的具体说明,我们描绘了Oracle数据库在高可用性方面可以达到的效果以及特性,并且从原理上与构架上,我们也可以分析到其成本(包括治理成本),再加上其技术的成熟程度以及使用程度,我们以一张表格来对照一下:
图六 注①:这里指单独的使用该功能,但是假如与LV Mirror/ Volume Replication/Data guard等功能结合起来,是可以实现数据保护与容灾功能的,假如设计合理,在灾难切换时,也可以保证不丢失任何数据,但是也需要为以上功能付出更多的成本。 1、有的电子商务使用Rac + Share plex (或Stream)的技术实现读写分离的技术,可以实现高可用+容灾。 总结: 该文具体描叙了oracle在高可用环境中可能用到的技术,以及该技术的具体描述,并且通过其构架分析,原理了解,技术成熟度分析,我们可以大致估算到其成本。 而且,在实际的使用环境中,没有最好的技术,只有最适合于自己的技术,使自己的成本与收益能达到一个最合适的平衡,这个,就是我们最终需要达到的目的。 以上的技术与方案,仅供参考。 |








