版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章重点讲解集群层 集群层由各个节点上的集群软件组成,集群软件在集群的作用就如同OS Kernel在单机环境中的作用。 在集群环境中,硬件尤其是存储设备是共享使用的,不仅需要协调主机内各个进程对共享存储的使用,还要协调主机间进程的共享使用。依靠传统的OS Kernel显然无法满足。这就需要集群软件的介入。Oracle Clusterware就是满足这个功能的集群软件。 Oracle Clusterware是一款独立的产品,要部署RAC,首先需要部署Clusterware集群,然后在其上安装Database、Database会自动检测到Clsuterware的存在,进而自动部署Database集
2、群。,Clusterware和RAC的关系 在整个的RAC集群中,实际存在两个集群环境。一个是由Clusterware软件组成的集群、另外一个是Database组成的集群。 Clusterware集群负责管理整个集群环境中的硬件资源、并为上层的Database集群提供基础服务。 我们安装完成Clusterware以后,Clusterware启动以后,包含三个资源:GSD、ONS、VIP。Clusterware组成的集群将所有的节点虚拟成一台机器,我们安装软件、建立数据库、配置ASM的时候,只要在一个节点上进行即可。可以将Clusterware看做这个集群的OS Kernel。 RAC将所有节点
3、上的实例虚拟成一个实例,RAC借助集群软件搭建出一个多实例单数据库的环境。集群软件可以选择Oracle的Clusterware,也可以选择别的厂商的集群软件。 Oracle 10g开始Oracle推出了自己的跨所有平台的Clusterware软件。但是目前仅限于Oracle数据库软件来实现RAC。但是Oracle宣称可以提供API让所有软件在Clusterware平台上实现HA功能。 我们目前讲的RAC,指的是Oracle数据库的RAC(多实例、单数据库)集群。 RAC可以在很多厂商的集群软件上运行,但是Oracle10g开始建议使用Oracle的Clusterware作为集群软件。,Orac
4、le Clusterware 1、磁盘文件 Oracle在运行过程中,需要用到两个文件,分别是OCR和Voting Disk。这两个文件必须放在共享存储上。这两个文件重要用来解决“脑裂、健忘”。 OCR:健忘的问题是由于每个节点都有配置信息的拷贝。修改节点的配置信息不同步引起的。解决健忘问题最简单的方式就是整个集群只有一份配置,各节点共用这份配置。Oracle采取的方式就是把配置文件放在共享存储上,这个文件叫做OCR Disk。 OCR保存整个集群的配置信息,配置信息以“Key-value”的形式保存其中。 Oracle 10g以前,这个文件叫做Server Manageability Rep
5、ository(SRVM)。 Oracle 10g以后,这个文件被重新设计,取名OCR。 安装Clusterware的时候,安装程序会提示用户指定OCR位置。我们通常是选择一个裸设备。 用户指定的位置会被记录在一个配置文件中。Oracle Clusterware启动的时候,会根据这里的内容从指定位置读入OCR内容。,OCR的位置信息存储在ocr.loc配置文件中。 整个OCR的信息是一个树形结构,有三个分支。 分别是:SYSTEM、DATABASE、CRS。每个分支下面有很多的子分支。大部分的key代表的含义通过字面都可以看出来。 SYSTEM主要是需要root权限,DATABASE主要是需要
6、oracle权限。,Oracle Clusterware通过在OCR中集中存放配置信息,来解决健忘问题。无论在哪修改配置信息,最终修改的都是OCR内容。因为OCR非常重要,所有对OCR的操作必须确保OCR内容完整性。在Clusterware的运行过程中,并不是每个节点都能操作OCR。,具体说: 每个节点在内存中都有一份OCR内容的拷贝,叫做OCR Cache。每个节点都有一个OCR Process来读写OCR Cache。 只有一个节点的OCR Process能够读写OCR Disk,这个节点叫做OCR Master。这个节点的OCR Process负责更新本地和其他节点的OCR Cache。
7、 所有需要OCR内容的其它进程,比如OCSSD、EVM等都叫做Client Process,这些进程不会直接访问OCR Cache,而是向OCR process发送请求,借助OCR Process获得内容,如果想要修改OCR内容,也是由该节点的OCR Process向Master node的OCR Process提交请求,由Master OCR Process完成物理读写,并同步其他节点OCR Cache中的内容。,Voting Disk 这个磁盘主要用来记录节点中成员状态,在出现脑裂的时候,仲裁哪个Partition获得集群的控制权,而其他Partition必须被从集群中剔除。 通过运行下面
8、的命令可以获得Voting Disk的位置。,Clusterware后台进程 其中最重要的三个进程是CRSD、CSSD、EVMD。在安装Clusterware的最后阶段,会要求在每个节点中执行root.sh脚本,这个脚本会在/etc/inittab文件中最后三行添加三个后台进程的启动信息。 如果CRSD和EVMD出现异常,系统会自动重启这两个进程。但是如果CSSD进程异常,系统会立即重启。,Cluster Synchronization Service(CSS) init.cssd ocssd ocssd.bin Cluster Ready Service crsd.bin Event Man
9、ager Service evmd evmdlogger Oracle Notification Service(ONS) ons Process Monitor Daemon oprocd RACG racgmain、racgimon,OCSSD这个进程是Clusterware最关键的进程,如果这个进程出现异常,会导致系统重启。 通过多种心跳机制 实时监控集群健康状态 提供脑裂保护等基础集群服务 两种心跳机制 1、通过Private Network Heartbeat 2、通过Vlting Disk的Disk Heartbeat 两个心跳都有最大时延 对于Disk Heartbeat,这个时
10、延叫做IOT(I/O Timeout) 对于Network Heartbeat,这个时延叫做MC(MisCount) 都是以秒为单位,缺省时IOT大于MC,Oracle自动设置这两个参数,不建议用户手工修改。,CRSD CRSD是实现“高可用性HA”的主要进程,他所提供的服务叫做Cluster Ready Service。 Clusterware是位于集群层的组件,他要为应用层资源(CRS Resource)提供“高可用性服务”。 Oracle clusterware必须要监控这些资源,并在这些资源运行异常时进行干预,包括关闭、重启、或者转移服务。CRSD进程提供的就是这些服务。 所有需要高可
11、用的组件,都会在安装配置的时候,以CRS Resource的形式登记到OCR中,OCR进程根据OCR中的内容,决定监控哪些进程、如何监控、出现问题时如何Failover这些资源,默认CRS会自动尝试重启资源5次,如果还是失败,则放弃尝试。 CRS Resource包括GSD(Global Service Daemon)、ONS(Oracle Notification Service)、VIP、Listener、Database、Instance和Service。前三者属于nodeapps、后面的属于Database-Related。因为前三者是和节点有关的。 GSD、ONS、VIP这三种服务是
12、在安装Oracle Clusterware的最后,执行VIP时创建并登记到OCR中的。 RAC则是各自的服务配置的时候注册到OCR中的。,EVMD 负责发布CRS产生的各种事件(Event)。 1、可以通过ONS发布给客户 2、Callout Script 某些事件产生以后,EVMD自动扫描特定的目录,并调用用户的脚本,具体调用是通过racgevt来实现的。 后面会讲到,如何把自定义的脚本提交给EVMD,以便在事务发生的时候,调用用户的处理脚本。 EVMD除了负责发布CRS进程产生的各种事件以外,还是CRSD和CSSD两个进程之间的桥梁。两个进程之间的通信就是通过EVMD进程完成的。,RACG
13、IMON 这个进程负责检查数据库健康状况,负责Service的启动、停止、故障转移。这个进程会建立到数据库的持久连接,定期检查SGA中的特定信息,该信息由PMON进程定时更新。 上面提到的数据库其实就是实例。 OPROCD 这个进程叫做Process Monitor Daemon,如果在非Linux平台上,并且没有使用第三方的集群软件,会看到这个进程,这个进程检查节点的Processor Hang(CPU挂起),如果调度时间超过15秒,就认为CPU异常,会重启节点。在windows平台上,这个进程的服务名叫做OraFenceService。 在Linux平台上,我们使用hangcheck-ti
14、mer模块来实现。 当一个节点出现问题以后,我们需要对这个节点进行IO Fencing,因为一个节点有问题,也会影响RAC的正常对外提供服务,需要进行隔离。 对上面所讲的所有的进程进行分析以后发现,clusterware其实就是一个HA的作用。具体的RAC(LB)还是上层的进程实现的。,网络组件 1、Public NIC 2、Private NIC 专门用来进行节点间的通信:Network Heartbeat和Cache Fusion 单独的一个通道(单独的高带宽交换机) 大数据量、低延迟 很多种方式实现私有网络的联通,最便宜的即使G级以太网 3、VIP 每个节点上,除了需要有Public和P
15、rivate以外,还需要有一个VIP,很多的应用都是建立在VIP之上的,例如Listener,TCP/IP模型 Oracle的TAF就是建立在VIP技术上,首先来讲一下TCP/IP四层协议。,Listener运行在应用层 IP和VIP都是IP层、IP层主要负责数据包的路由,不负责数据传送的完整性 传输层(TCP),提供数据传送的完整性服务,接收端的TCP层收到数据包以后,必须给发送端一个确认消息,如果在指定的时间内发送端没有收到确认消息,发送端认为数据包丢失,重发数据包。如果几次重发以后都不能响应,TCP就认为网络出现问题,终止发送尝试,通知上层的应用,如果连接服务器使用的是SQL*Plus,
16、则SQL*Plus就会抛出连接错误。 上面是单实例中,使用IP而不是VIP 的情况下,使用的机制叫做(TCP/IP协议栈超时)。,VIP原理 如果没有使用VIP,Oracle客户端靠“TCP/IP协议栈超时”来判断服务器故障。 TCP/IP协议栈是作为OS Kernel的一部分实现的,不同的OS有不同的阈值。 Oracle引入了VIP,从而避开了对TCP协议栈超时的依赖。 IP和VIP最大的区别是:VIP 是浮动的、IP是固定的,VIP1,VIP2,Listener1,Listener2,VIP1,VIP2,Listener1,Listener2,1、CRS检测到节点2异常,触发Cluster
17、ware的重构,最后把节点2踢出集群,由节点1组成新的集群,虽然这个集群只有一个节点。 2、节点2的VIP转移到节点1,节点1的Public NIC就会有VIP1、VIP2两个VIP 和Public IP三个IP地址 3、访问节点2的数据包被顺利的转移到节点1,但是因为节点1的应用在VIP2上没有启动,也就是节点1没有对应的应用负责接收,这个错误马上反馈到客户端(不需要超时)。客户端根据故障切换配置,迅速的发起对节点1的连接请求。 因为应用层的快速响应和客户端的故障切换响应,我们不再依靠TCP/IP协议栈的超时机制。 这就是使用VIP技术的原理。,VIP的特点 1、VIP 是在clusterw
18、are安装的最后阶段,通过脚本VIPCA创建的 2、VIP作为一个Nodeapps类型的 CRS Resource注册到OCR中,并由OCR维护状态 3、VIP会绑定到Public NIC上 4、某个节点出现故障以后,CRS会把故障节点的VIP转移到其他节点上 5、每个节点的Listener会同时在Public和VIP两个地址上监听 6、客户端的tnsnames.ora一般会配置指向节点的VIP 我们要清除一个概念 1、VIP会切换、为什么VIP上的应用没有切换呢?需要切换吗? VIP要切换的目的就是为了实现“应用层错误响应+客户端故障切换”。,Clusterware的日志体系 这款集群软件排错唯一的选择就是日志和trace文件,这款软件的日志体系还是比较复杂的。 1、alert.log类似于数据库的告警日志,一般是作为检查的起点 2、crsd、cssd、evmd:分别是三个目录,里面对应着三个进程日志 crsd.log、ocssd.log、evmd.log 3、racg:里面放置的是和资源相关的日志(主要是节点相关的资源),包括ONS和VIP等,数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论