`

rac集群简介(原创)

 
阅读更多

什么是集群  

集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务 和文件服务等)的单一客户视图。集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器。这些 进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据。除了作为单一系统提供服务,集群系统还具有 恢复服务器级故障的能力。集群系统还可通过在集群中继续增加服务器的方式,从内部增加服务器的处理能力,并通过系统级的冗余提供固有的可靠性和可用性。

集群的分类:

1、高性能计算集群:

高性能计算集群采用将计算任务分配到不同节点来提高整体计算能力主要应用在科学计算领域。

2、负载均衡集群LB:

负载均衡集群为企业需求提供更实用的系统。该系统使各节点的负载流量可以在服务器集群中尽可能平均合理地分摊处理。该负载需要均衡计算的应用程序处 理端口负载或网络流量负载。这样的系统非常适合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现 平衡。对于网络流量也如此。通常,网络服务器应用程序接受了大量入网流量,无法迅速处理,这就需要将流量发送给在其它节点。负载均衡算法还可以根据每个节 点不同的可用资源或网络的特殊环境来进行优化。

3、高可用性集群HA:

为保证集群整体服务的高可用,考虑计算硬件和软件的容错性。如果高可用性群集中的某个节点发生了故障,那么将由另外的节点代替它。整个系统环境对于用户是一致的。

实际应用中HA与LB经常是同时具备,ORACLE RAC就同时具备HA和LB。

集群环境的特殊问题

1、并发控制

在集群环境中,关键数据都必须是共享存放的 。各个节点都对数据有平等的访问权利 。因此必须要有某种机制控制节点对 数据的访问。

2、健忘症 Amnesia 

在特殊的情况下比如:两个节点的集群,节点1因为正常维护需 要关闭,然后在节点2修改了某些配置,然后关闭节点2,启动节点1。因为在节点2修改的配置内容没有同步到节点1,所以节点1启动后,它仍然是用旧的配置 文件工作,这时就会造成配置丢失,也就是所谓的“健忘症“ 。

这个问题发生在集群环境配置文件不是集中存放,而是每个节点都有一个本地副本。在集群正常运行时,用户可以在任务节点更改集群的配置,并且更改会自动同步到其它节点。

3、脑裂Split Brain

在集群里,节点间需要通过心跳机制了解彼此的健康状况,以确保各节点协调工作。假设只是“心跳”出现故障,但各个节点还在正常运行 。这时每个节点都认为其它节点宕机,自己是集群中唯一健在者,自己应该获得整个集群的控制权。在集群环境里,存储设备是共享的,这就意味着数据灾难,这种 状况就是“脑裂”。

解决这个问题的算法通常就是投票算法。集群中各节点通过心跳来通报彼此的健康状况,假设每收到一个节点的通报代表 一票。对于一个三节点的集群,正常运行时 每个节点都会有3票。假设节点1 的心跳出现故障,但是节点1还在运行:这时整个集群就分裂成二个小的partition。节点1自己一个partition,节点2和节点3是一个 partition。 这就必须剔除一个partition。这时节点2和节点3所在的partition 每个节点有二票,节点1只有一票。所以节点2和节点3组成的小集群获得控制权,节点1被踢出。

如果集群只有二个节点,上面的算法就没用了,此时子集群内数目相等,则拥有最低节点号的子集群(Sub-cluster with lowest node number)将获得控制权,即总是1号节点会获胜。
关于节点间的脑裂问题,可参见笔者的如下文章

http://czmmiao.iteye.com/blog/1577531

4、IO 隔离 IO Fencing

这个问题是上一个问题的延伸。当集群系统出现脑裂时,必须判断那些节点获得控制权,那些节点要踢出集群。但这样还不够,还必须保证被赶出集群的节点不能操作共享数据。这就是IO隔离要解决的问题。

IO Fencing的实现有硬件方式和软件方式。对于支持SCSI Reserve/Release命令的存储设备,可以用SG命令实现。正常节点使用SCSI Reserve命令“锁住”存储设备,故障节点发现存储设备被锁住后,就知道自己已经被赶出了集群,就会自行重启,以恢复正常工作,这种机制叫 suicide。Sun和Veritas使用的是这种机制。
利用STONITH是另一种方式,这种方式直接操作电源开关。当一个节点发送故障时,另一个节点如果能侦测到,就会通过串行口发出命令,控制故障节点的电源开关,通过暂时断电而后又加上点的方式使得故障节点被重启。这种方式需要硬件支持。

ORACLE RAC采用的是软件方式,直接重启故障节点。无论采用哪种方式,IO Fencing目的都是相同的,为了保证故障节点不能再继续访问数据。

集群软件 

集群层由各个节点上的集群软件组成,集群软件在集群环境的作用和地位与OS Kernel在单机系统中的地位和作用是一样的。在单机系统中,硬件资源是由OS Kernel管理的,应用软件是不能访问硬件的,必须通过OS Kernel提供的API接口间接访问。OS Kernel除了要完成用户请求,还要通过进程调度等机制来控制每台主机多进程对资源的使用。但是到了集群环境,硬件尤其是存储设备是共享使用的,不仅需 要协调每台主机内多进程的共享使用,还需要协调主机间进程的共享使用。这种需要传统的OS Kernel就无法满足了,这就需要集群软件的介入。

ORACLE Clusterware有以下几个组件

1、OCR(Oracle Cluster Registry)

负责维护整个集群的配置信息,包括RAC以及Clusterware资源,包括的信息有节点成员、数据库、实例、服务、监听器、应用程序等。

为了解决集群“健忘”的问题,最简单的解决办法就是整个集群只有一份配置,所有节点共用这份配置。ORACLE采用的方法就是把这个配置文件放在共 享存储上,这个文件就是OCR DISK。 节点通过OCR Process读写OCR。 但只有一个节点能够读写OCR DISK 叫OCR Master节点,其它节点通过本节点的OCR process 向master node的OCR process提交请求,由master OCR Process完成物理读写,并同步所有节点OCR cache中的内容。就OCR而言,每个集群都会有一个Master节点,这个节点一半来说是集群中生存时间最长的那个节点(生存时间最长也就意味着该节 点越稳定)。

我们在安装Clusterware的在选择OCR的存储位置时,如果选择"Normal Redundancy",则会存储两份相互镜像的OCR。如果选择"External Redundancy"则表明存储本身已经坐了冗余配置,不需要创建镜像OCR。该位置会记录在/etc/oracle/ocr.loc(Linux)或 /var/opt/oracle/ocr.loc(Solaris)中。

OCR key:整个OCR 的信息是树形结构,有3个大分支。分别是SYSTEM,DATABASE 和CRS。每个分支下面又有许多小分支。这些记录的信息只能由root用户修改。

2、Voting Disk 这个文件也要放在共享存储上,主要用于管理集群的节点成员身份,根据这里的记录判断哪些节点是集群的成员。并在出现脑裂时,仲裁哪个Partition获得集群的控制权。关于Voting Disk的跟多资料可以参见笔者的如下文章:
http://czmmiao.iteye.com/blog/1577531

网络层


在整个RAC环境中,实际上有三个网络
Public
网卡接入的网络,对外提供服务
Private
网卡组成的私有网络,用于RAC的心跳和Cache Fusion。之所以单独开辟一条链路是由于这些通信内容的特点是数据量大,低延迟。如果和对外网络在一起,会占用对外服务带宽。最为廉价常用的是采用G级以太网,有钱一点的可用采用InfiniBand

存储网络

由存储设备,光纤交换机和每个节点的HBA卡组成,用于村上SCSI数据。

VIP和scan
我们都知道Oracle RAC中每个节点都有一个虚拟IP,简称VIP,与公网IP在同一个网段。
没有VIP时,Oracle客户端是靠“TCP/IP协议栈超时”来判断服务器故障。而TCP/IP协议栈是作为OS Kernel的一部分来实现,不同的OS有不同的阀值,用户获悉数据库异常的时间完全取决于OS Kernel的实现,虽然有些OS允许修改这个阀值,但是会对其它程序产生未知影响。因此,oracle RAC引入了VIP,从而避开对TCP协议栈超时的依赖。
VIP和IP最主要的不同之处在于:VIP是浮动的,而IP是固定的。在所有节点都正常运行时,每个节点的VIP会被分配到public NIC上;在linux下ifconfig查看,public网卡上是2个IP地址;如果一个节点宕机,这个节点的VIP会被转移到还在运行的节点上。也 就是幸存的节点的public NIC这个网卡上,会有3个IP地址。
当一个节点宕机,这个节点真实IP就连接不上了,但是这个节点的虚拟IP是可以连接的,他会自动把客户端的连接请求转接给存活的节点。
在tnsname.ora文件里,指定Address列表,客户端会随机选择一个节点来连接数据库,而不是顺序选择的。
VIP特点:
1 VIP是在clusterware安装最后阶段,通过脚本VIPCA创建的;
2 VIP作为一个Nodeapps类型的CRS Resource注册到OCR中,并由CRS维护状态;
3 VIP会绑定到节点的public 网卡上;那么public网卡就有两个地址了;
4 当某个节点发生故障时,CRS会把故障节点的VIP转移到其他节点上;
5 每个节点的Listener会同时在public网卡的public IP和VIP两个地址上监听;
6 客户端的tnsname.ora一般会配置指向节点的VIP;

从上面第6条可以引出一个问题。如果增加一个节点,那么客户端的tnsname.ora需要加入新增节点的VIP。那么想象一下:多个客户端,增加多个节点,那么维护起来特别麻烦。因此到了Oracle11gR2,引入了一个scan的概念。

scan,single client access name,这是一个唯一的名称,在整个公司网络内部唯一,客户端连接的时候只需要知道这个名称并连接即可。Oracle 11gR2 客户端缺省是通过 SCAN 来连接整个 RAC 环境的,如下是 SCAN 的架构图:

如上图所示,如果使用了 DNS 或者 GNS (Grid Naming Service),那么最多可以有 3 个 SCAN VIP 和 3 个 SCAN Listener。 每个SCAN VIP对应一个scan listener,cluster内部的service在每个scan listener上都有注册,scan listener接受客户端的请求,并foward到不同的Local listener中去,还是由local 的listener提供服务给客户端。如果没有使用 DNS 或者 GNS,而是选择使用 hosts 文件,则只会有1个SCAN VIP 和1个SCANListener。

注意:scan不一定要resolve到三个ip,一个也够了。只不过为了防止scan单点故障而推荐3个。

 

参考至:《大话Oracle RAC》张晓明著
               http://www.oracle.com/technetwork/cn/articles/database-performance/oracle-rac-connection-mgmt-1650424-zhs.html

               http://hi.baidu.com/loveyurui/item/ac12d8d6f3c292ca1a72b406
               http://wenku.baidu.com/view/f336b76f25c52cc58bd6be54.html 本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com

0
0
分享到:
评论

相关推荐

    Oracle单机通过rman迁移到RAC集群.docx

    ### Oracle单机通过RMAN迁移到RAC集群 #### 一、背景介绍 随着业务规模的不断扩大和技术的进步,原有的数据库系统可能无法满足当前的需求。为了提高系统的可用性、可扩展性和性能,通常需要将原有的单机Oracle...

    基于天翼云ECS搭建Oracle+RAC集群指南7+11G

    基于天翼云ECS搭建Oracle+RAC集群指南7+11G 本文档旨在指导用户基于天翼云ECS搭建Oracle+RAC集群,涵盖了从资源规划到创建资源的整个过程。 资源规划 资源规划是搭建Oracle+RAC集群的关键步骤之一。在本节中,...

    Windows平台Oracle RAC 集群安装过程

    ### Windows平台Oracle RAC集群安装过程详解 #### 引言 在企业级应用环境中,为了提高数据处理能力和系统的高可用性,Oracle Real Application Clusters (RAC) 成为了一种热门选择。尤其在Windows平台上部署Oracle...

    oracle RAC集群开启归档日志.docx

    Oracle RAC 集群开启归档日志 Oracle RAC 集群开启归档日志是指在 Oracle RAC 集群环境中启用归档日志功能,以便提高数据库的可靠性和可维护性。为了实现这一功能,需要修改集群参数文件,重启数据库。 在开启归档...

    oracle 11g RAC 集群安装教程

    Oracle 11g RAC 集群安装教程 在本教程中,我们将指导您在 CentOS 6.7 环境中使用 VirtualBox 安装 Oracle 11g RAC 集群。该教程将涵盖从安装环境到集群配置的所有步骤。 一、安装环境 在开始安装之前,我们需要...

    Oracle10g RAC集群技术.rar

    Oracle 10g RAC(Real Application Clusters)集群技术是Oracle数据库系统中的一种高可用性和高性能解决方案。它允许多个数据库实例同时访问同一物理数据库,以实现数据的共享和负载均衡,从而提高系统的可靠性和...

    配置Oracle RAC集群数据源

    Oracle RAC 集群数据源配置 Oracle RAC(Real Application Clusters)是一种高可用性和高性能的数据库解决方案。为了实现高可用性和高性能,需要将 Oracle 数据库配置为 RAC 集群模式。配置 Oracle RAC 集群数据源...

    Linux下Oracle RAC集群配置详细说明

    Linux下Oracle RAC集群配置详细说明

    Linux服务器创建oracle数据库RAC集群.docx

    在本篇文档中,我们将详细探讨如何在Linux服务器上创建Oracle数据库RAC集群。RAC(Real Application Clusters)是Oracle数据库的一种高可用性解决方案,它允许多个服务器共享同一个数据库,提供故障转移和负载均衡...

    oracle 11g r2 rac 集群配置方案

    Oracle 11g R2 Grid Infrastructure是RAC的基础,它包括集群ware、网络组件和服务,以及管理工具。Grid Infrastructure为RAC提供了统一的管理平台,简化了集群的部署和维护。 在配置Oracle 11g R2 RAC集群时,以下...

    Oracle 11G RAC集群安装配置

    Oracle 11G RAC 集群安装配置 Oracle 11G RAC 集群安装配置是指将 Oracle 11G 数据库安装到 RedHat Linux 6.2 操作系统上,并且配置成 RAC(Real Application Clusters)集群的过程。这种安装配置可以提供高可用性...

    在redhat5.5下创建oracle11gR2的RAC集群

    在Red Hat 5.5操作系统环境下创建Oracle 11g R2 RAC集群是一项复杂的任务,需要遵循一系列的步骤和注意事项。首先,我们要确保系统版本和内核版本与Oracle软件兼容。在这个例子中,系统是Red Hat Enterprise Linux ...

    oracle RAC集群修改归档日志路径.docx

    Oracle RAC(Real Application Clusters)集群是一种高可用性解决方案,它允许多个实例同时访问同一个数据库,确保在单个节点故障时数据的连续性和一致性。归档日志是Oracle数据库的重要组成部分,它们记录了自上次...

    大话Oracle RAC 集群 高可用性 备份与恢复

    全书分为两个部分,共14章,第一部分是集群理论篇,这部分从集群基础知识入手,通过分析集群环境和单机环境的不同,介绍了集群环境的各个组件及其作用,以及集群环境的一些专有技术,包括oracle clusterware、oracle...

    浅谈ORACLE数据库RAC集群备份.pdf

    浅谈ORACLE数据库RAC集群备份.pdf

    oracle 11g rac 虚拟机搭建集群

    ### Oracle 11g RAC 虚拟机搭建集群 #### RAC概念与特性 RAC(Real Application Clusters)是一种高级的集群技术,它允许多个数据库实例同时访问同一个数据库,这种设置不仅可以提高数据库的并发处理能力,还能...

    Oracle RAC集群aix

    Oracle RAC(Real Application Clusters)集群是一种高可用性解决方案,专为在AIX(Amiga Interactive eXperience)操作系统上运行Oracle数据库设计。RAC允许多台服务器共享同一个数据库实例,提供故障切换和负载均衡...

    基于Linux平台Oracle RAC集群数据库监控系统的设计与实现.pdf

    "基于Linux平台Oracle RAC集群数据库监控系统的设计与实现" 本文设计了一种基于Linux平台的Oracle RAC集群数据库监控系统,旨在解决企业信息化日常管理中的数据库系统稳定性问题。该系统使用信息化方法,在Linux...

    ORACLE11GR2在REDHAT63环境中搭建RAC集群及简单维护.docx

    ORACLE11GR2在REDHAT63环境中搭建RAC集群及简单维护

    CentOS6.x部署实践 Oracle 11g RAC集群搭建

    在CentOS6.x环境下部署Oracle 11g RAC集群是一项需要严格按照步骤执行的任务,涉及到操作系统、网络、存储以及Oracle集群件和数据库的具体安装配置。下面是一些关键知识点的详细介绍: ### CentOS 6.x安装准备 - ...

Global site tag (gtag.js) - Google Analytics