逻辑结构
下图是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使用了VIP。Virtual 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是若干个进程组成的完整服务。LMON(Lock Monitor)监控CRS Resource,异常时进行重启、切换等,保证Oracle RAC服务的高可用性。
引用