ITPub博客

首页 > 数据库 > Oracle > Oracle11g RAC高可用性理论整理

Oracle11g RAC高可用性理论整理

原创 Oracle 作者:流浪的野狼 时间:2014-01-17 16:56:39 0 删除 编辑
 

Oracle11g RAC高可用性理论整理笔记

流浪的野狼笔记

Ohasd 进程oracle high available service demon高可用性守护进程。该进程在11g开始发挥强大的作用,有系统init生成。在/etc/inittab中有h1:35:respawn:/etc/init.d/init.ohasd run >/dev/null 2>&1 (表示无论linux运行在3还是5级别,都会以respawn模式来运行/etc/init.d/init.ohasd脚本,即就是启动ohasd服务,respawn模式意味着该进程停止后会被自动重启)

注意:RAC中执行非常突然地时间调整可能会导致节点被踢出集群。

集群CTSS:

集群的CTSS实际那同步服务在配置了NTP等时间同步的情况下将处于观察模式(observer mode),如ntp不存在于任何节点中时,CTSS服务将会被激活负责cluster的时间同步。通过crsctl check ctss来检查CTSS服务所处的模式。通过cluvfy comp clocksync –all检查集群所使用何种时间同步服务。

Clusterware磁盘文件:

Clusterware运行需要的磁盘文件有:OCR(oracle集群注册表)Votedisk(表决磁盘)、以及11gR2中引入的LCR(本地注册),其中OCRVotedisk存放在共享存储上,LCR存放在各节点上。LCR包含特定节点的clusterware配置信息,lhasd启动的时候使用LCR中的信息。

11gR2中,clusterware的图形化界面已开始不再支持使用裸设备作为磁盘文件的存储方式。

1.   表决磁盘

也叫做表决文件(Votefile),为解决网络分裂而建,clusterware使用表决磁盘决定哪些节点是集群成员,表决磁盘的读写都是由ohasd进程来完成的。

若表决磁盘的冗余级别为normal,则至少使用3个故障组,若为high,则至少使用5个故障组。

注意:使用ASM作为OCR和表决磁盘的存储,无法使用命令对OCR和表决磁盘进行添加,因存储在ASMclusterware文件的个数都是由ASM磁盘组的冗余级别决定的。Oracle支持最大的表决磁盘的数量是15个。表决磁盘的个数应该是一个奇数,这是为了在节点出现故障时clusterware能够使用投票算法及时的将故障几点踢出集群。

11g之前表决磁盘的备份使用的是dd命名,在11g之后dd命令的备份将不再被支持。Clusterware不再需要手动备份表决磁盘,表决磁盘的任何配置的改变将自动的添加到OCR备份文件中。表决磁盘数据通过crsctl工具自动会员到任何添加的表决磁盘中。

2.   集群注册表

集群注册表存储着clusterware所有组建的配置信息,clusterware根据OCR的配置信息管理Clusterware组建,包括RAC数据库、监听器、VIPService的所有的应用。OCR的配置信息以一个树状结构和连续的键值对存储在OCR磁盘中。

OCR必须放在共享存储上被所有的节点访问。若多个OCR存储位置上的OCR出现损坏,则通过OCRCONFIG管理工具很容易的实现是被OCR文件的联机替换。

OCR的管理维护中,必须使用Clusterware支持的工具来更新OCR,如EMSRVCTLOCRCONFIGDBCA

OCR每个四小时被自动备份到/cdata//目录西,通过使用OCRCONFIG工具可实现手动备份还原。

正对OCR常用的工具有:ocrdumpocrconfigocrcheck

通过/etc/oracle/ocr.loc文件中的记录可确定OCR文件和镜像文件的存储位置。

3.   本地注册表

11gR2开始引入了OLR(本地注册表),存放在各个节点的$GRID_HOME/cdata/目录下,默认安装后会自动创建一个OLR备份文件,放在$GRID_HOME/cdata/$HOST/目录下,在OLR文件损坏的情况下可使用该备份进行恢复,后期也可手动通过ocrconfig命令备份OLR

Clusterware启动流程

RAC的整个启动流程分为高可用**层和集群就绪服务层。集群就绪服务层由集群就绪服务(Clusterware Ready Services,CRS)控制,而高可用**层由oracle高可用**(High Availability Services,HAS)控制,11Gr2RAC出现了很多以“agent”结尾的代理进程,用来协助主进程完成集群的管理工作,这些进程都运行在spawns模式下,一旦运行失败就会自动重启,以维护RAC的高可用性。

详细可参考《构建高可用oracle数据库系统-oracle1gR2 RAC管理、维护性能优化》P98

Clusterware隔离机制

   在所有高可用性环境中几乎都存在心跳,心跳的主要目的是为了检测集群中各节点的状态,若检测失败,管理软件会认为某个节点存在故障,并根据一定的算法做出合适的处理,避免对整个环境的影响,及高可用性软件的自动修复功能。

1.  Clusterware心跳

A、     网络心跳:所谓网络心跳就是通过私有网络来检测节点的状态。,有私有网络硬件或者软件的故障导致集群节点间的私有网络在一定时间内无法进行的通信,这种现象就称作脑裂出现脑裂时需要将不正确的节点隔离出集群,私有网络出现不能正常通信有一个超时时间称作misscount,可通过命令crsctl get css misscount来查看。

B、     投票算法:当出现脑裂时,clusterware通过投票算法来讲不正确的节点踢出集群。若有三个节点如(A/B/C),若其中某个节点出现故障,则节点投票表决踢出损坏节点,能正常通信的节点总共得到两票,而损坏节点仅有自己一票,故此被逐出集群。但是若只有两个节点呢(A/B),此时好坏两个节点各执一票如何决定谁好谁坏,此时只能通过获取表决磁盘的一票来决定,谁先得到表决磁盘的一票,则会将另外一个节点踢出集群。多个节点的处理类似上述处理情况。在1Gr2开始,还可以通过crsctl工具配置IPMI来实现I/O隔离的目的。

C、     磁盘心跳:所谓磁盘心跳就是通过共享磁盘来检测节点的状态。在clusterware磁盘文件中,表决磁盘就是用于检测clusterware磁盘心跳的共享磁盘。在更多的时候,clusterware利用表决磁盘来检查磁盘间心跳的健康状况。与磁盘心跳相关的两个参数是:

1、     disktimeout 磁盘心跳不正常相应的超时时间。如下查看:

crsctl get css disktimeout

2、     reboottime节点被踢出集群后节点开始重启允许的最大时间。如下查看:

crsctl get css reboottime 

D、     调整心跳参数:上面提到的三个和心跳有关的参数:misscountdisktimeoutreboottime均可通过如下命令修改:

Crsctl set –h

流浪的野狼笔记

2.  Clusterware的格里特性IPMI

隔离性是集群在出现故障的情况下必须保证的特性,为了避免在出现故障情况下各个节点各自修改数据导致数据不一致,RAC必须保证在出现故障时有合理的服务器I/O隔离机制,即在出现故障的情况下确保只有正常运行的节点才可以修改数据库中的数据。

传统的隔离机制是在系统节点出现故障情况下发挥作用的隔离机制,这是一种内部机制。这种机制在某些情况下是无效的,不如说在节点服务器hang机,就无法通过执行操作系统重启命令来重启服务器。故此除了这中传统的隔离机制外,clusterware现在还开始支持基于远程节点终止的新隔离机制。这是一种外部机制。为了提供这种机制从11Gr2开始支持IPMI.

IPMI(Intelligent Platform Management Interface,只能平台管理接口),是标准的工业管理协议。IPMI是一种规范的标准,其中重要的物理部件就是BMC(Baseboard Management Controller),是一种嵌入式管理微控制器,相当于整个平台管理的大脑,通过它IPMI可以监控各个传感器的数据并记录各种事件的日志,因此,IPMI也称为BMC

3.  RAC隔离体系

可以将RAC划分为系统层、集群层、数据库层,各层次都有相应的机制来检测RAC每个层次的健康状况。节点中任何一层出现问题都有可能使其他层一起被隔离。

A. 系统层

系统层通过linux内核的Hangcheck-Timer模块检测集群间可能出现的hang机,Hangcheck-Timer模块根据配置周期性的检测节点的健康状况,一旦超过某个限制值就会认为几点出现hang机,即会重启节点,在系统层达到隔离的效果。Hangcheck-Timer包括3个参数:

Hangcheck_tick(检测周期)

Hangcheck_margin(超时时间)

Hangcheck_reboot(是否超时重启,0表示不重启,1表示重启)

11Gr2开始,RAClinux平台可以不配置该模块。

B. 集群层

集群层在11Gr2前有两个参数来进行周期性的检查:oprocd(Oracle Clusterware Process Monitor Daemon)cssd。从11GR2开始,oprocd的功能被cssdagent替代。

C. 数据库层

数据库层的LMON进程也会定期检查RAC Database的健康状况,如果发现节点的数据库存在问题,也会采取相应的措施保证RAC的隔离性。

4.  RAC节点被踢出集群的原因:

1、     Kernel Hang/服务器伏在严重(oprocdHangcheck-Timer)

2、     内连网络心跳丢失。

3、     Votedisk心跳丢失。

4、     Oclsmon扫描到cssd hang

5.  网格即插即用

  网格即插即用(Gird Plug and PlayGPnP)是从11g R2 RAC开始的新功能,提供创建一个动态的GI环境,能随着负载的增加动态改变GI环境。GPnP能非常容易的添加、替换或者移除集群中的节点,像电源插座一样。

GPnP主要由GPNPDMDNSSCANGNS构成,如上图。

   MDNS负责在节点内部进行ip的解析,在新添加节点的时候不需要手动修改每个节点的/etc/hosts文件,GPNPD提供的是集群配置信息管理,添加节点会更新现有的GPnP profile配置信息来配置新的节点同时更新该文件。GNS负责动态的给新添加的节点分配VIP

A.  GPnP profile文件

Clusterware中,CSSGPnP等服务的启动都需要依赖于GPnP profile文件。GPnP profile文件是一个XML文件,用于引导节点加入集群,GPnP profile提供了新节点的配置信息。还指定了整个集群的特性。如果该文件被破坏或者丢失,clusterware将无法正常启动。Oracle不支持手动修改profile.xml文件,直接对其修改可能导致无法修复的问题,最终导致所有节点重建clusterwareGPnP profile文件保存的集群配置信息,默认的保存在:$GRID_HOME/gpnp/$HOSTNAME/profiles/peer/profile.xml

$GRID_HOME/gpnp/profiles/peer/profile.xml(全局备份)

如果GPnP出现问题,可以使用cluvfy comp gpnp组建验证命令检查在集群中所有网格即插即用的完整性。   Cluvfy comp gpnp [-n node_list] [-verbose]

Profile文件的内容如下:

BIP Multitcast Discovery 守护进程(MDNS服务)

他能通过集群发现其他节点的守护进程,并在集群中解析名字到对应的ip地址,有了该进程就不在依赖于/etc/hosts配置文件的名称解析,MDNSMulticast Domain Name Service)是零配置网络中的一部分,类似使用DNS提供解析hosts地址的能力。

6、 日志体系

11g推出的ADR是一个基于文件的资料库,不同的产品和组件都具有相同的目录结构。Clusterware日志体系不属于ADR的管理范围,ASM、监听日志和Database日志都属于ADR的管理范围。

ADR基础结构:

Clusterware日志文件

ASM实例和监听日志文件

    Database 日志文件


本笔记参考自:《构建高可用
oracle数据库系统-oracle1gR2 RAC管理、维护性能优化》
 

图片来自红黑联盟http://book.2cto.com/201208/950.html及个人整理

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28612416/viewspace-1072261/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-04-10

  • 博文量
    151
  • 访问量
    1511973