RAC的一些概念性和原理性的知识.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RAC的一些概念性和原理性的知识

RAC 的一些概念性和原理性的知识一?集群环境下的一些特殊问题?1.1?并发控制在集群环境中,?关键数据通常是共享存放的,比如放在共享磁盘上。?而各个节点的对数据有相同的访问权限,?这时就必须有某种机制能够控制节点对数据的访问。?Oracle?RAC?是利用DLM(Distribute?Lock?Management)?机制来进行多个实例间的并发控制。?1.2?健忘症(Amnesia)集群环境配置文件不是集中存放的,而是每个节点都有一个本地副本,在集群正常运行时,用户可以在任何节点更改集群的配置,并且这种更改会自动同步到其他节点。有一种特殊情况:?节点A?正常关闭,?在节点B上修改配置,?关闭结点A,启动结点B。?这种情况下,修改的配置文件是丢失的,?就是所谓的健忘症。?1.3?脑裂(Split?Brain)在集群中,节点间通过某种机制(心跳)了解彼此的健康状态,以确保各节点协调工作。?假设只有心跳出现问题,?各个节点还在正常运行,?这时,每个节点都认为其他的节点宕机了,?自己是整个集群环境中的唯一建在者,自己应该获得整个集群的控制权。?在集群环境中,存储设备都是共享的,?这就意味着数据灾难,?这种情况就是脑裂解决这个问题的通常办法是使用投票算法(Quorum?Algorithm).?它的算法机理如下:集群中各个节点需要心跳机制来通报彼此的健康状态,假设每收到一个节点的通报代表一票。对于三个节点的集群,正常运行时,每个节点都会有3票。?当结点A心跳出现故障但节点A还在运行,这时整个集群就会分裂成2个小的partition。?节点A是一个,剩下的2个是一个。?这是必须剔除一个partition才能保障集群的健康运行。?对于有3个节点的集群,?A?心跳出现问题后,?B?和?C?是一个partion,有2票,?A只有1票。?按照投票算法,?B?和C?组成的集群获得控制权,?A?被剔除。?如果只有2个节点,投票算法就失效了。?因为每个节点上都只有1票。?这时就需要引入第三个设备:Quorum?Device.?Quorum?Device?通常采用饿是共享磁盘,这个磁盘也叫作Quorum?disk。?这个Quorum?Disk?也代表一票。?当2个结点的心跳出现问题时,?2个节点同时去争取Quorum?Disk?这一票,?最早到达的请求被最先满足。?故最先获得Quorum?Disk的节点就获得2票。另一个节点就会被剔除。?1.4?IO?隔离(Fencing)当集群系统出现脑裂问题的时候,我们可以通过投票算法来解决谁获得集群控制权的问题。?但是这样是不够的,我们还必须保证被赶出去的结点不能操作共享数据。??这就是IO?Fencing?要解决的问题。IO?Fencing实现有硬件和软件2种方式:软件方式:对于支持SCSI?Reserve/Release?命令的存储设备,?可以用SG命令来实现。?正常的节点使用SCSI?Reserve命令锁住存储设备,?故障节点发现存储设备被锁住后,就知道自己被赶出了集群,也就是说自己出现了异常情况,?就要自己进行重启,以恢复到正常状态。?这个机制也叫作?Sicide(自杀).?Sun?和Veritas?使用的就是这种机制。硬件方式:STONITH(Shoot?The?Other?Node?in?the?Head),?这种方式直接操作电源开关,当一个节点发生故障时,另一个节点如果能侦测到,就会通过串口发出命令,控制故障节点的电源开关,通过暂时断电,而又上电的方式使故障节点被重启动,?这种方式需要硬件支持。?二?RAC?集群?2.1?Clusterware在单机环境下,Oracle是运行在OS?Kernel?之上的。?OS?Kernel负责管理硬件设备,并提供硬件访问接口。?Oracle?不会直接操作硬件,而是有OS?Kernel代替它来完成对硬件的调用请求。在集群环境下,?存储设备是共享的。OS?Kernel?的设计都是针对单机的,只能控制单机上多个进程间的访问。?如果还依赖OS?Kernel的服务,就无法保证多个主机间的协调工作。?这时就需要引入额外的控制机制,在RAC中,这个机制就是位于Oracle?和?OS?Kernel?之间的Clusterware,它会在OS?Kernel之前截获请求,然后和其他结点上的Clusterware协商,最终完成上层的请求。在Oracle?10G之前,RAC?所需要的集群件依赖与硬件厂商,比如SUN,HP,Veritas.?从Oracle?10.1版本中,Oracle?推出了自己的集群产品.?Cluster?Ready?Service(CRS),从此RAC?不在依赖与任何厂商的集群软件。?在Oracle?10.2版本中,这个产品改名为:Oracle?Clusterware。?

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档