Oracle RAC集群简介

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

对于RAC来说,最重要的还是要理解内部原理和体系结构。安装不是非常难的事情。排错和维护都离不开体系结构以及内部原理。

集群分类

1、高性能计算

  计算任务分配到不同计算机节点来提高整体计算能力,主要应用在科学计算领域。主要利用的是并行计算。

2、负载均衡集群(LB

  把业务的负载流量尽可能的平均合理的分配到集群的各个节点上,每个节点都可以处理一部分负载,并且可以根据负载情况进行动态的平衡。负载均衡算法不是简单的平均,而是根据每个节点的可用资源或网络的特殊情况来进行优化分配。因此分配+合理才是负载均衡的核心。

3、高可用性(HA

  侧重于提高系统的可用性,集成硬件和软件的容错性来实现整体服务的高可用性。如果某个节点发生故障,另外的节点代替他。

RAC是真正的LBHA的复合体。从某种意义上说,只有最终应用(数据库)才能实现真正意义上的LB,而绝大多数的集群都是HA

 

集群环境的特殊问题

1、并发控制

集群环境中,存在共享存储的问题。集群中各个节点对共享存储是对等的,所有节点对数据有相同的访问权限,因此需要某种机制来控制节点对数据的访问。

RAC中,采用的是DLMDistribute Lock Management)机制来进行实例间的并发控制。

2、健忘症(Amnesia

如果集群环境的配置文件不是集中存放,每个节点都有一个本地副本,集群正常运行的时候,用户可以在任何节点修改集群的配置,并且这些更改都会自动同步到其他节点。

如果节点1因为正常的维护需要关机,节点2修改了配置,然后关闭节点2.启动节点1,因为之前节点2做的配置修改没有同步到节点1,所以将节点1启动以后,他仍然使用旧的配置文件,造成配置丢失。

 

3、脑裂(split brain

集群中,节点之间需要通过某种机制(心跳)了解彼此的健康情况,以确保各个节点协调工作。假设只是心跳出现故障,各个节点还在正常的工作,每个节点都认为其他节点宕机,自己是整个集群的唯一健在者,因此需要获得整个集群的“控制权”。存储是共享的,这就意味着灾难,这种情况就是“脑裂”。

投票算法可以解决这个问题

每个节点会在投票区记录自己的票数(自己收到了多少节点的心跳,一个心跳是一票),各个节点会读取其与节点的票数。

如果一个集群分成了两个partition,一个partition3个节点,一个partition2个节点。那么3个节点的partition里面所有的节点的票数都是3,两个节点的partition里面所有节点的票数都是2.拥有两个节点的partition会被踢出,自动重启。如果两个partition的节点都相同,那么第一个控制投票区的partiton将会存活,另外一个partition将会被踢出而重启,这种情况通常是master节点(一般是第一个启动的节点)所在的partition将会存活。

 

4IO隔离(IO Fencing)、

集群出现故障,必须判断哪个节点应该获得集群的控制权,那些节点需要被踢出。这时投票需要解决的问题。

仅仅将他们踢出还不足够,因为他们可能还在继续运行(只是离开了这个集群),需要保证他们不再访问共享数据。这就是IO隔离要解决的问题。

IO Fencing实现有硬件和软件方式。各个集群厂商使用的方式不同,有些需要硬件的支持(主要是存储设备是否支持某些协议)。Oracle RAC使用的是软件的 方式,直接重启故障节点。

无论采用哪种方式,IO Fencing的目的就是保证故障节点不能继续访问共享数据。

有一些存储设备支持SCSI Reserve/Release命令,正常节点使用SCSI Reserve命令锁住存储设备,故障节点发现存储被锁定,就知道自己已经被踢出了cluster,自行重启,这种机制叫做自杀机制(suicide)。例如SunVeritas的集群使用的就是这种机制。

无论软件还是硬件,大致原理就是:正常节点通过某种方式告知故障节点,故障节点会进行重启。告知的方式有硬件和软件之分,硬件更加安全一些。

 

 

 

      本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/459657,如需转载请自行联系原作者

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
5月前
|
运维 Oracle 前端开发
Oracle 11g RAC集群日常运维命令总结
Oracle 11g RAC集群日常运维命令总结
119 2
|
5月前
|
Oracle 关系型数据库
分布式锁设计问题之Oracle RAC保证多个节点写入内存Page的一致性如何解决
分布式锁设计问题之Oracle RAC保证多个节点写入内存Page的一致性如何解决
|
6月前
|
存储 负载均衡 Oracle
|
6月前
|
存储 Oracle 关系型数据库
|
8月前
|
存储 Oracle 关系型数据库
Oracle RAC:数据库集群的舞动乐章
【4月更文挑战第19天】Oracle RAC是Oracle提供的高可用性数据库解决方案,允许多个实例共享同一数据库,确保业务连续性和数据完整性。通过集群件和全局缓存服务实现服务器间的协调和通信。RAC提供高可用性,通过故障转移应对故障,同时提升性能,多个实例并行处理请求。作为数据管理员,理解RAC的架构和管理至关重要,以发挥其在数据管理中的最大价值。
|
8月前
|
Oracle 关系型数据库
oracle rac 手工安装补丁,不适用auto
oracle rac 手工安装补丁,不适用auto
90 3
|
8月前
|
存储 运维 Oracle
Oracle系列十八:Oracle RAC
Oracle系列十八:Oracle RAC
|
8月前
|
Oracle 关系型数据库
oracle Hanganalyze no RAC
oracle Hanganalyze no RAC
50 0
|
Oracle 关系型数据库 Java
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例