Oracle Clusterware

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

本章重点讲解集群层集群层由各个节点上的集群软件组成,集群软件在集群的作用就如同OSKernel在单机环境中的作用。在集群环境中,硬件尤其是存储设备是共享使用的,不仅需要协调主机内各个进程对共享存储的使用,还要协调主机间进程的共享使用。依靠传统的OSKernel显然无法满足。这就需要集群软件的介入。OracleClusterware就是满足这个功能的集群软件。OracleClusterware是一款独立的产品,要部署RAC,首先需要部署Clusterware集群,然后在其上安装Database、Database会自动检测到Clsuterware的存在,进而自动部署Database集群。Clusterware和RAC的关系在整个的RAC集群中,实际存在两个集群环境。一个是由Clusterware软件组成的集群、另外一个是Database组成的集群。Clusterware集群负责管理整个集群环境中的硬件资源、并为上层的Database集群提供基础服务。我们安装完成Clusterware以后,Clusterware启动以后,包含三个资源:GSD、ONS、VIP。Clusterware组成的集群将所有的节点虚拟成一台机器,我们安装软件、建立数据库、配置ASM的时候,只要在一个节点上进行即可。可以将Clusterware看做这个集群的OSKernel。RAC将所有节点上的实例虚拟成一个实例,RAC借助集群软件搭建出一个多实例单数据库的环境。集群软件可以选择Oracle的Clusterware,也可以选择别的厂商的集群软件。Oracle10g开始Oracle推出了自己的跨所有平台的Clusterware软件。但是目前仅限于Oracle数据库软件来实现RAC。但是Oracle宣称可以提供API让所有软件在Clusterware平台上实现HA功能。我们目前讲的RAC,指的是Oracle数据库的RAC(多实例、单数据库)集群。RAC可以在很多厂商的集群软件上运行,但是Oracle10g开始建议使用Oracle的Clusterware作为集群软件。OracleClusterware1、磁盘文件Oracle在运行过程中,需要用到两个文件,分别是OCR和VotingDisk。这两个文件必须放在共享存储上。这两个文件重要用来解决“脑裂、健忘”。OCR:健忘的问题是由于每个节点都有配置信息的拷贝。修改节点的配置信息不同步引起的。解决健忘问题最简单的方式就是整个集群只有一份配置,各节点共用这份配置。Oracle采取的方式就是把配置文件放在共享存储上,这个文件叫做OCRDisk。OCR保存整个集群的配置信息,配置信息以“Key-value”的形式保存其中。Oracle10g以前,这个文件叫做ServerManageabilityRepository(SRVM)。Oracle10g以后,这个文件被重新设计,取名OCR。安装Clusterware的时候,安装程序会提示用户指定OCR位置。我们通常是选择一个裸设备。用户指定的位置会被记录在一个配置文件中。OracleClusterware启动的时候,会根据这里的内容从指定位置读入OCR内容。OCR的位置信息存储在ocr.loc配置文件中。整个OCR的信息是一个树形结构,有三个分支。分别是:SYSTEM、DATABASE、CRS。每个分支下面有很多的子分支。大部分的key代表的含义通过字面都可以看出来。SYSTEM主要是需要root权限,DATABASE主要是需要oracle权限。OracleClusterware通过在OCR中集中存放配置信息,来解决健忘问题。无论在哪修改配置信息,最终修改的都是OCR内容。因为OCR非常重要,所有对OCR的操作必须确保OCR内容完整性。在Clusterware的运行过程中,并不是每个节点都能操作OCR。具体说:每个节点在内存中都有一份OCR内容的拷贝,叫做OCRCache。每个节点都有一个OCRProcess来读写OCRCache。只有一个节点的OCRProcess能够读写OCRDisk,这个节点叫做OCRMaster。这个节点的OCRProcess负责更新本地和其他节点的OCRCache。所有需要OCR内容的其它进程,比如OCSSD、EVM等都叫做ClientProcess,这些进程不会直接访问OCRCache,而是向OCRprocess发送请求,借助OCRProcess获得内容,如果想要修改OCR内容,也是由该节点的OCRProcess向Masternode的OCRProcess提交请求,由MasterOCRProcess完成物理读写,并同步其他节点OCRCache中的内容。VotingDisk这个磁盘主要用来记录节点中成员状态,在出现脑裂的时候,仲裁哪个Partition获得集群的控制权,而其他Partition必须被从集群中剔除。通过运行下面的命令可以获得VotingDisk的位置。Clusterware后台进程其中最重要的三个进程是CRSD、CSSD、EVMD。在安装Clusterware的最后阶段,会要求在每个节点中执行root.sh脚本,这个脚本会在/etc/inittab文件中最后三行添加三个后台进程的启动信息。如果CRSD和EVMD出现异常,系统会自动重启这两个进程。但是如果CSSD进程异常,系统会立即重启。ClusterSynchronizationService(CSS)init.cssdocssdocssd.binClusterReadyServicecrsd.binEventManagerServiceevmdevmdloggerOracleNotificationService(ONS)onsProcessMonitorDaemonoprocdRACGracgmain、racgimonOCSSD这个进程是Clusterware最关键的进程,如果这个进程出现异常,会导致系统重启。通过多种心跳机制实时监控集群健康状态提供脑裂保护等基础集群服务两种心跳机制1、通过PrivateNetworkHeartbeat2、通过VltingDisk的DiskHeartbeat两个心跳都有最大时延对于DiskHeartbeat,这个时延叫做IOT(I/OTimeout)对于NetworkHeartbeat,这个时延叫做MC(MisCount)都是以秒为单位,缺省时IOT大于MC,Oracle自动设置这两个参数,不建议用户手工修改。CRSDCRSD是实现“高可用性HA”的主要进程,他所提供的服务叫做ClusterReadyService。Clusterware是位于集群层的组件,他要为应用层资源(CRSResource)提供“高可用性服务”。Oracleclusterware必须要监控这些资源,并在这些资源运行异常时进行干预,包括关闭、重启、或者转移服务。CRSD进程提供的就是这些服务。所有需要高可用的组件,都会在安装配置的时候,以CRSResource的形式登记到OCR中,OCR进程根据OCR中的内容,决定监控哪些进程、如何监控、出现问题时如何Failover这些资源,默认CRS会自动尝试重启资源5次,如果还是失败,则放弃尝试。CRSResource包括GSD(GlobalServiceDaemon)、ONS(OracleNotificationService)、VIP、Listener、Database、Instance和Service。前三者属于nodeapps、后面的属于Database-Related。因为前三者是和节点有关的。GSD、ONS、VIP这三种服务是在安装OracleClusterware的最后,执行VIP时创建并登记到OCR中的。RAC则是各自的服务配置的时候注册到OCR中的。EVMD负责发布CRS产生的各种事件(Event)。1、可以通过ONS发布给客户2、CalloutScript某些事件产生以后,EVMD自动扫描特定的目录,并调用用户的脚本,具体调用是通过racgevt来实现的。后面会讲到,如何把自定义的脚本提交给EVMD,以便在事务发生的时候,调用用户的处理脚本。EVMD除了负责发布CRS进程产生的各种事件以外,还是CRSD和CSSD两个进程之间的桥梁。两个进程之间的通信就是通过EVMD进程完成的。RACGIMON这个进程负责检查数据库健康状况,负责Service的启动、停止、故障转移。这个进程会建立到数据库的持久连接,定期检查SGA中的特定信息,该信息由PMON进程定时更新。上面提到的数据库其实就是实例。OPROCD这个进程叫做ProcessMonitorDaemon,如果在非Linux平台上,并且没有使用第三方的集群软件,会看到这个进程,这个进程检查节点的ProcessorHang(CPU挂起),如果调度时间超过15秒,就认为CPU异常,会重启节点。在windows平台上,这个进程的服务名叫做OraFenceService。在Linux平台上,我们使用hangcheck-timer模块来实现。当一个节点出现问题以后,我们需要对这个节点进行IOFencing,因为一个节点有问题,也会影响RAC的正常对外提供服务,需要进行隔离。对上面所讲的所有的进程进行分析以后发现,clusterware其实就是一个HA的作用。具体的RAC(LB)还是上层的进程实现的。网络组件1、PublicNIC2、PrivateNIC专门用来进行节点间的通信:NetworkHeartbeat和CacheFusion单独的一个通道(单独的高带宽交换机)大数据量、低延迟很多种方式实现私有网络的联通,最便宜的即使G级以太网3、VIP每个节点上,除了需要有Public和Private以外,还需要有一个VIP,很多的应用都是建立在VIP之上的,例如ListenerTCP/IP模型Oracle的TAF就是建立在VIP技术上,首先来讲一下TCP/IP四层协议。应用层传输层(TCP)网络层(IP)网络接口层应用层传输层(TCP)网络层(IP)网络接口层Listener运行在应用层IP和VIP都是IP层、IP层主要负责数据包的路由,不负责数据传送的完整性传输层(TCP),提供数据传送的完整性服务,接收端的TCP层收到数据包以后,必须给发送端一个确认消息,如果在指定的时间内发送端没有收到确认消息,发送端认为数据包丢失,重发数据包。如果几次重发以后都不能响应,TCP就认为网络出现问题,终止发送尝试,通知上层的应用,如果连接服务器使用的是SQL*Plus,则SQL*Plus就会抛出连接错误。上面是单实例中,使用IP而不是VIP的情况下,使用的机制叫做(TCP/IP协议栈超时)。VIP原理如果没有使用VIP,Oracle客户端靠“TCP/IP协议栈超时”来判断服务器故障。TCP/IP协议栈是作为OSKernel的一部分实现的,不同的OS有不同的阈值。Oracle引入了VIP,从而避开了对TCP协议栈超时的依赖。IP和VIP最大的区别是:VIP是浮动的、IP是固定的VIP1VIP2Listener1Listener2VIP1VIP2Listener1Listener21、CRS检测到节点2异常,触发Clusterware的重构,最后把节点2踢出集群,由节点1组成新的集群,虽然这个集群只有一个节点。2、节点2的VIP转移到节点1,节点1的PublicNIC就会有VIP1、VIP2两个VIP和PublicIP三个IP地址3、访问节点2的数据包被顺利的转移到节点1,但是因为节点1的应用在VIP2上没有启动,也就是节点1没有对应的应用负责接收,这个错误马上反馈到客户端(不需要超时)。客户端根据故障切换配置,迅速的发起对节点1的连接请求。因为应用层的快速响应和客户端的故障切换响应,我们不再依靠TCP/IP协议栈的超时机制。这就是使用VIP技术的原理。VIP的特点1、VIP是在clusterware安装的最后阶段,通过脚本VIPCA创建的2、VIP作为一个Nodeapps类型的CRSResour

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功