阿呆带你入门Oracle RAC之一

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

 

在说Oracle RAC之前,按照惯例,阿呆来一段前戏~

 

最近阿呆在看资治通鉴,看得津津有味。每当看到那些叱咤风云的英雄人物最终淹没于历史长河之中,不禁放下手机,望着地铁车厢里的茫茫人海(一排排后脑勺),怅然若失。。。今天我们来讲一对好兄弟张耳和陈馀的故事,他们本来是生死之交,最后却斗得你死我活。

 

话说魏国有两个名士张耳和陈馀,是刎颈之交。陈馀年轻,他就像对待父亲一样侍奉张耳。秦国统一了六国,听说这两个人很有名,就悬赏百金捉拿他们(有名士不拉拢,反而消灭,真吊)。他俩改名换姓,一块儿逃到陈地,充当里正卫维持生活。里中小吏曾因陈馀犯了小的过失鞭打他,陈馀打算起来反抗,张耳赶快用脚踩他,示意不动接受鞭打,小吏走后,张耳就把陈馀带到桑树下,责备他说:”当初和你怎么说的?如今遭到小小的屈辱,就要死在里吏身上吗?”陈馀认为他说的对(张耳年纪大,就是老奸巨猾啊)。

 

后来陈胜吴广大泽乡起义,他俩也去投奔,拥护赵王占领赵国,陈馀做大将军,张耳做右丞相,真是好搭档啊。不过,接着发生了一件事,秦朝大将章邯手下军队包围了张耳和赵王,陈馀带了几万援军在外面却不进攻,理由是打不过秦军,只会白白牺牲。然后,就是我们熟悉的,项羽带领楚军破釜沉舟,背水一战,打败秦军,解救了赵国。但是张耳却恨陈馀不救援,收了他的军队,两个人从此分道扬镳。项羽做了西楚霸王,分封诸侯,张耳跟他入关,封常山王,陈馀没跟他,只封了个侯。陈馀气坏了,带兵把张耳赶跑了(年轻人真冲动),他们反目成仇。张耳没办法,投降了刘邦,陈馀自己做了代王。刘邦有一次想让陈馀借点兵给他,结果陈馀的条件居然是要刘邦杀掉当年的好兄弟张耳,至此,他们斗得你死我活。刘邦自然没杀张耳,找了个替死鬼。

 

陈馀的结局很惨,被战神韩信背水列阵法打败,陈馀战死。张耳反而幸运,被刘邦封了王,儿子张敖娶了刘邦的女儿,所以刘邦和吕后消灭异姓王,张家幸免于难。

 

从张耳和陈馀的故事,阿呆不由得想到了Oracle RAC的脑裂,本来他俩还是有心跳检测的,联络感情,后来各自牛逼了,忙啊,心跳检测就少了,分道扬镳之后,心跳断了。从此,就发生了脑裂,谁都不认输,觉得自己吃亏了,争着要做老大。最终,命运之神做了表决盘Voting Disk,选择张耳活下来。这个故事告诉我们,朋友之间要多交流,定期心跳检测,这样才能知道对方还是一如既往的情深义重。否则,断了联系,很可能就脑裂了。

什么是Oracle RAC

 

RAC,全称real application clusters,译为实时应用集群,是Oracle数据库支持网格计算环境的核心技术。

集群

  • 节点互联起来,向外显示为1台服务器;
  • 集群软件把内部结构掩藏起来;
  • 磁盘是共享的;
  • 每台机器使用相同的操作系统。


  • 多个实例访问同一个数据库
  • 每个节点有一个实例;
  • 数据库文件支持物理或逻辑访问;
  • 数据的读写通过软件控制。


Oracle RAC和单个数据库服务器的区别

如下图,主要区别还是RAC是集群式数据库,通过集群软件管理。


Oracle RAC硬件架构

下图为一个两节点RAC系统,可以看出,从主机到交换机,都做了冗余,无论哪台设备出了故障,业务不会受影响。共享存储是自带RAID冗余的。


其中,主机叫做节点(Node),它们要有相同的CPU、内存等配置,每台至少两个网卡,访问内外网,还有HBA卡连接共享存储,但更多是通过FC交换机连到FC存储阵列。共享存储是RAC架构中的核心,绝大部分文件都在共享存储,很多功能都是为了共享存储的安全性开发的。一般是光纤通过FC接口连接,运行SCSI协议。

Oracle RAC软件架构

如下图,是个双节点RAC系统,Oracle RDBMS是数据库软件,Oracle Clusterware是集群软件。驱动主要是网卡,HBA卡,ASMLib等。

每个节点上必须是相同的操作系统,版本必须一致,包括补丁号等。如操作系统: RHEL AS 4.8 64bitLinux内核版本: 2.6.9-89.EL


集群软件:单机情况下只要OS和驱动就可以了,但是多机需要访问其他机器的硬件,需要集群软件。它是集群环境的核心组成部分,管理集群硬件资源,为上层应用提供服务。

集群文件系统:向多个节点提供文件读写功能。Oracle RAC支持OCFSASM

逻辑结构

下图是Oracle RAC的逻辑结构,后面将依次介绍里面的各个组件。


DLM:并发控制

每个节点都有对等的权利访问共享存储的数据,Oracle RAC使用Distribute Lock Management DLM)进行多个节点间并发访问的控制。分布式锁管理器负责协调节点间对共享资源的竞争,节点访问数据时,先通过DLM申请,确认不会和其他节点冲突时才能使用。

OCR:健忘症

健忘症:如果每个节点都有一份集群配置信息,那么如果修改配置后没有同步就会出错。

所以,集群只能有一个配置信息,所有节点共享。Oracle RAC使用OCR Disk文件解决健忘症。

OCR Disk只有Master节点才能修改,每个节点有一份Copy,在OCR Cache内存中。节点要修改OCR Disk时,请求Master节点,该节点上OCR进程更新本地和其他节点OCR Cache内容。OCR Disk每几个小时定期备份。

Voting Disk:脑裂

脑裂:集群中节点之间通过心跳检测来知道对方是不是好的,如果心跳出了问题,节点双方都认为对方出错了,就会要求独享数据,这样就会破坏数据的一致性。

Voting Disk用来记录节点间成员的状态,出现脑裂的时候,选择票数高的获得控制权,踢出其他节点。

IO隔离:踢出去的节点,不能再让它访问数据,所以要做IO隔离。Oracle RAC的机制就是重启故障节点。

Cache Fusion Lock

数据库文件是共享的,Cache Fusion Lock是在集群层面之外解决存储共享、并发访问控制。

四种网络

1. Public网络:用Public IP,对外提供数据查询、数据库维护、服务器维护。

2. Virtual网络:用Virtual IP,提供应用连接,应用程序使用该IP

TCP/IP协议中,TCP Header包含源和目标端口,IP header包含源和目标IP,应用层的数据库监听记录IP和端口,在TCP超时时知道数据库或监听出了问题。TCP/IP协议栈超时时间由OS决定,每个OS定义不一样。为了缩短捕获错误的时间,Oracle RAC使用了VIPVirtual IP是浮动的,并不与物理网卡绑定,某个节点故障,则VIP移到好的节点上,但好节点的监听里找不到该VIP,应用程序会立刻发现问题,转而向其他VIP发送连接请求。

3. Private网络:用Private IP,用于RAC心跳检测和Cache Fusion Lock,速度要求很高。

4. 存储网络:存储设备、HBA卡、FC网络组成。

Oracle Clusterware

单机的时候只要OS就可以处理上层请求,但是多机的时候,集群管理软件Oracle Clusterware会在OS内核之前截获对其他节点的请求,和其他节点的Clusterware通信完成请求。

应用层:RDBMS

应用层由若干CRS Resource组成,每个resource是若干个进程组成的完整服务。LMONLock Monitor)监控CRS Resource,异常时进行重启、切换等,保证Oracle RAC服务的高可用性。

 

Cache Fusion

Cache Fusion从字面就可以理解——缓存融合,其实就是把各个节点的缓存统一管理起来,避免了每次读都是操作磁盘,加速IO性能。因为Private网络速度很快,比读磁盘要快。从不同位置读数据块的时间:

  • 本地Cache0.01 ms
  • 网络访问其他节点Cache2.5 ms
  • 磁盘:14 ms。但现在有了存储端的SSD或者全闪存阵列后,延迟就在1 ms左右了。所以有了全闪存阵列后,Cache Fusion估计就没有意义了。

Cache Fusion通过GCSGlobal Cache Service)管理,就是把大家的Cache看成是一个大Cache

Cache流程


Cache流程


写磁盘流程


负载均衡

用户像RAC发起各种请求的时候,负载均衡负责把任务平摊到不同机器上。

  • 按用户分配

是从几个机器里面随机的挑一个吗?NO!那也太Low了,RAC会根据每个机器的状态动态分配任务。数据库运行时,PMON后台进程节点的负载信息,登记到Listener1-10分钟更新一次。每个节点的Listener知道所有节点的负载情况,把客户端请求发给最闲的节点。

  • 按服务分配

按用户分配有缺点,就是可能让Cache Fusion更忙了。因为RAC节点数据共享,大家通过Cache Fusion同步数据,RAC的性能很大程度上受限于Cache Fusion性能。要么让Private网络更牛,比如用昂贵的InfiniBand,另一种是减少Cache Fusion的流量,其实就是减少节点实例之间的依赖。而按用户分配的机制无益于后面的方案。

所以RAC支持根据服务分配节点,比如生产和销售用不同节点,自己的数据在自己的Cache里面,就不用访问别的节点了。性能得到提升。

三类集群

  • 负载均衡集群:按一定算法把请求分配给不同成员;
  • 高性能集群(HPCHigh Performance Cluster):采用向量处理器等专用软硬件组成的牛逼机器,计算性能强悍,价格超贵,比如天河计算机;
  • 高可靠性集群(HACHigh Available ClusterFailover Cluster):可靠性非常好,硬件和软件的容错性很强,日常使用的数据库集群属于这类。

高可靠性集群

双机热备

平时有一个闲着待命,干活的挂了,就让候补的顶替。


双机互备

平时两台都干自己的活,但是要预留一部分资源,因为有一个挂了,另一个就得干两个人的活。


双机双工

举个例子:

老大老二合开一家店,平时老大主要卖包子,老二主要卖豆浆,老大有问题,老二就又卖包子,又卖豆浆,老二不行了,老大就又卖包子,又卖豆浆。

子豆浆是数据,互相照应叫做心跳检测,顶替对方工作叫做failover(故障转移)。如果两个兄弟突然都瞎了聋了,不知道现在对方到底是否正在干活,都认为自己要顶对方的工作,这个叫做脑裂,然后需要第三者,比如他们的老爹来解决问题,这个叫做表决,或者让他们两个的媳妇过来拉走其中一个,这个叫做IO隔离。Oracle RAC就是这一类,性能最好,系统最复杂。


 

参考文章

 

http://wenku.baidu.com/link?url=VQTq1n4F_GzNyqwPPBLLQSOs2WPMWGx3tfWmg6mIW9i8DWdgKSHdtmA5719R84Zwp1dI2O28jD2hzAkJCjreJJtWkkcnuSkrq3M1aMIJhUq

分类目录 未分类.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。