RAC集群概述.docx

上传人:b****5 文档编号:6295714 上传时间:2023-01-05 格式:DOCX 页数:14 大小:129.11KB
下载 相关 举报
RAC集群概述.docx_第1页
第1页 / 共14页
RAC集群概述.docx_第2页
第2页 / 共14页
RAC集群概述.docx_第3页
第3页 / 共14页
RAC集群概述.docx_第4页
第4页 / 共14页
RAC集群概述.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

RAC集群概述.docx

《RAC集群概述.docx》由会员分享,可在线阅读,更多相关《RAC集群概述.docx(14页珍藏版)》请在冰豆网上搜索。

RAC集群概述.docx

RAC集群概述

 OracleRAC产品概述

  OracleRealApplicationServer,真正应用集群,简称OracleRAC,是Oracle的并行集群,位于不同服务器系统的Oracle实例同时访问同一个Oracle数据库,节点之间通过私有网络进行通信,所有的控制文件、联机日志和数据文件存放在共享的设备上,能够被集群中的所有节点同时读写。

其系统架构如下图:

  RAC提供的好处包括:

  

(1)多节点负载均衡;

  

(2)提供高可用:

故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化,下表是RAC与传统的双机热备方式切换时间的对比:

  (3)通过并行执行技术提高事务响应时间----通常用于数据分析系统;

  (4)通过横向扩展提高每秒交易数和连接数;----通常对于联机事务系统;

  (5)节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型机,同时节约相应维护成本;

  (6)可扩展性好,可以方便添加删除节点,扩展硬件资源;

  RAC的缺点有:

  相对单机,管理更复杂,要求更高;

  在系统规划设计较差时性能甚至不如单节点;

  可能会增加软件成本(如果使用高配置的pc服务器,Oracle一般按照CPU个数收费)

  在Oracle9i之前,RAC的名称是OPS(OracleparallelServer)。

RAC与OPS之间的一个较大区别是,RAC采用了CacheFusion(高速缓存合并)技术。

在OPS中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。

使用Cachefusion时,RAC的各个节点的数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。

  OracleRAC在中国各行各业使用都比较广泛,包括通信移动、金融服务、社会保障和电子商务等,据Oracle统计,2007财年中国有500多家企业使用Oracle实时应用集群,考虑到未登记信息,实际数字更高于这一数字。

典型的用户包括:

中彩在线/OLTP/4节点/10gR2/AIX5.3、淘宝/DataWarehouse/4节点/10gR2/RHEL4、北京社保/6节点/HP_Alpha/MA8000、建行证券系统/2节点/IBM_P595/EMC_DMX3、上海电力/2节点/Alpha_GS160、广东移动、山东网通等。

  OracleRAC/Clusterware的结构和组件

  一、RAC主要组件,软硬件两部分

  

(1)服务器>=2

  

(2)操作系统,推荐使用Oracle认证的系统;版本不要太老,也不要太新

  (3)CPU/内存根据业务需要,内存至少1G

  (4)本地磁盘空间,>=30G

  (5)网卡>=2,推荐4个以上千兆网卡

  (6)私有以太网络,推荐千兆交换机以上

  (7)HBA卡,如果是SAN,推荐2个冗余HBA

  (8)共享存储设备,推荐SAN设备

  (9)存储管理,ASM/ClusterLV/裸分区/CFS,不推荐用OCFS,卷管理软件、多路径软件等

  (10)第三方集群软件:

可选

  (11)OracleClusterware软件

  (12)OracleRDBMS软件

  二、Clusterware主要进程

  

(1)crsd:

负责管理集群的高可用操作。

管理的crs资源包括数据库、实例、监听、虚拟IP,ons,gds或者其他,操作包括启动、关闭、监控及故障切换。

改进程由root用户管理和启动。

crsd如果有故障会导致系统重启。

  

(2)cssd,管理各节点的关系,用于节点间通信,节点在加入或离开集群时通知集群。

该进程由oracle用户运行管理。

发生故障时cssd也会自动重启系统。

  (3)oprocd–集群进程管理—Processmonitorforthecluster.用于保护共享数据IOfencing。

  仅在没有使用vendor的集群软件状态下运行

  (4)evmd:

事件检测进程,由oracle用户运行管理

  三、Clusterware使用的共享设备

  

(1)OracleClusterRegistry(OCR):

记录集群的配置信息;

  

(2)Votingdisk:

即投票盘,保存节点的成员信息,当配置多个投票盘的时候个数必须为奇数,每个节点必须同时能够连接半数以上的投票盘才能够存活;

  四、安装路径的选择

    注:

  

(1)在OracleRAC中,软件不建议安装在共享文件系统上;包括CRS_HOME和ORACLE_HOME,尤其是CRS软件,推荐安装在本地文件系统中,这样在进行软件升级,以及安装patch和patchset的时候可以使用滚动升级(rollingupgrade)的方式,减少计划当机时间。

另外如果软件安装在共享文件系统也会增加单一故障点。

  

(2)如果使用ASM存储,需要为asm单独安装ORACLE软件,独立的ORACLE_HOME,易于管理和维护,比如当遇到asm的bug需要安装补丁时,就不会影响RDBMS文件和软件。

  (3)在Oracle11gR2中将新增存储选项:

acfs(OracleASMClusterFileSystem)

第三方集群

  在Oracle9i中,除了Windows和Linux,在安装RAC之前必须先安装vendorclusterware,即第三方集群,包括IBM的HACMP,HP的ServiceGuardfororacleRAC,Suncluster,VeritasSFRAC等,这一类的集群软件为OracleRAC提供了下面的功能:

  

(1)共享的逻辑卷管理或者集群文件系统用于存放数据文件;

  

(2)提供了统一的集群的成员组管理;

  (3)使用更健壮的SCSI-3PGR机制来防止心跳故障(即裂脑splitbrain)导致的数据损坏,这种功能一般叫做IOfencing;

  (4)提供效率更高的、更低延迟的心跳网络用于cachefusion,可以相对减少TCP/IP的开销,包括:

  HPSGeRAC:

HMP(HyperMessagingProtocol),

  SunCluster:

RSM(RemoteSharedMemory),

  VeritasSFRAC:

LLT(low-latencytransport),

  CompacTrueCluster:

RDG(reliabledatagrams);

  通常如果要使用第三方集群的心跳协议,需要将$ORACLE_HOME/lib/libskgxpX.so文件替换为第三方集群

  软件提供的libskgxpX.so文件(其中X代表Oracle版本号9/10/11),skgxp是SystemKernelGenericInterfaceInter-ProcessCommunications的缩写,是oracle开放的一个应用接口,用于传输GCS和GES的数据。

Oracle自带的libskgxp文件定义的传输协议是UDP/IP。

  (5)提供扩展的容灾方案,例如campuscluster/metrocluster/extendedRAC;如下图,以Veritas的SFRAC为例,它提供两种OracleExtendedRAC方案,方案一是使用VeritasVolumeManager对底层阵列进行镜像,提供同城容灾级别的实时数据保护;方案二使用GCO/VVR对数据库进行数据复制,可以实现距离更远、超过10km广域网的容灾;

  (6)VeritasSFRAC还提供了以下特性:

  补充的OracleODM,可以使Oracle同时拥有文件系统的易管理和裸设备的性能;

  标准的多路径软件(DMP),不需要再安装其他软件就可支持绝大多数磁盘阵列,在异构SAN环境中有更好的兼容性;

  从Oracle10g起,Oracle提供了自己的集群软件,叫Oracleclusterware简称CRS,这个软件是安装oraclerac的前提,而上述第三方集群则成了安装的可选项。

同时提供了另外一个新特性叫做ASM,可以用于RAC下的共享磁盘设备的管理,还实现了数据文件的条带化和镜像,以提高性能和安全性(S.A.M.E:

stripeandmirroreverything),不再依赖第三方存储软件来搭建RAC系统。

  那么Oracle是如何识别第三方集群的呢?

  在安装完第三方集群后,会在特定目录下生成OracleRAC接口文件,这个文件的作用就是上面的第二点功能:

集群成员管理信息(clustermembership简称CM)。

在HPUX下该文件是/opt/nmapi/nmapi2/lib/pa20_64,在AIX/Solaris/Linux下这个文件是/opt/ORCLcluster/lib/libskgxn2.so。

  当安装CRS的的检查阶段,就会检测是否有该文件,如果有的话,在安装CRS过程中生成一个软连接文件,文件名是ligskgxn2.so,指向上面的libskgxn2.so或pa20_64文件,这个软连接的位置在CRS_HOME/lib/目录;如果没有第三方集群,那么CRS安装过程中生成自己的libskgxn2.so文件。

换句话说,在有第三方集群存在的情况下,CRS的集群成员信息是来自于第三方集群,两套集群的成员信息保持一致和同步;没有第三方集群情况时,CRS自己管理成员信息。

  通过查询$CRS_HOME/log/hostname/cssd/ocssd.log可以看到css识别到的第三方集群,下面的例子分别是HACMP、SFRAC、SunCluster、ServiceGuide:

  [CSSD]2008-05-2715:

09:

43.456[1029]>TRACE:

clssnm_skgxninit:

initializedskgxnversion(2/0/IBMAIXskgxn)

  [CSSD]2008-12-3021:

44:

56.172[1029]>TRACE:

clssnm_skgxninit:

initializedskgxnversion(2/0/VeritasClusterServerMM

  [CSSD]2007-08-1002:

19:

39.572[3]>TRACE:

clssnm_skgxninit:

initializedskgxnversion(2/2/OracleSolarisUDLM)

  [CSSD]2006-09-2918:

57:

53.323[5]>TRACE:

clssnm_skgxninit:

initializedskgxnversion(2/0/Hewlett-PackardSKGXN2.0)

  在9i/8i中没有css/crs,该信息可以在后台进程lmon的trace文件中得到(在bdump中);

  在安装Oracle9iRAC/8iOPS的过程中,Oracle识别集群方法类似。

  在多个平台上,如果两个节点没有正确链接libskgxn2文件,可能会导致第二个实例无法mount或出现ORA-600错误。

  Oracle支持的RAC环境

  因为OracleRAC本身比较复杂,在安装和管理中可能会遇到各种问题,涉及到OS、RDBMS、Cluster软件和网络、主机、存储等硬件,为了避免不必要的问题发生,在安装之前,我们需要确认安装环境是否满足要求,包括软件和硬件两方面,尤其是Vendorclusterware和OS的版本的兼容性需要注意,可以从metalink中得到最新的Oracle官方认证信息:

登陆M选择Certify,选择byproduct,选择realapplicationserver,选择对应平台就可以得到。

下面列出一些关于硬件和平台支持的常见问题:

  官方不支持的:

Vmware,SunLDOM,SolarisLocalContainer/Zones

  官方支持的:

IBMLPAR,IBMVIOS(VirtualIOServer),SolarisGlobalContainers

  RHELGFS,ISCSI,

  私有网络(心跳线)的支持:

不支持使用交叉线,支持InfinibandRDS(10gR2之后)

  异构环境:

支持不同的硬件、但相同的软件(OS/Oracle)组成的集群,不支持32位与64位系统间的集群

  目前支持的NFS的server包括:

  EMCCelerra

  FujitsuFilerNR1000Series

  IBMNSeries

  NetAppFAS,F,GSeries

  PillarDataSystemsAxiom500

  SunStorageTek5000Series

OracleClusterware的心跳

  Oracleclusterware使用两种心跳设备来验证成员的状态,保证集群的完整性;一是对votingdisk的心跳,ocssd进程每秒向votedisk写入一条心跳信息;二是节点间的私有以太网的心跳,两种心跳机制都有一个对应的超时时间,分别叫做misscount和disktimeout:

  misscount用于定义节点间心跳通信的超时,单位为秒;

  disktimeout,默认200秒,定义css进程与votedisk连接的超时时间;

  reboottime,发生裂脑并且一个节点被踢出后,这个节点将在reboottime的时间内重启;默认是3秒;

  其中misscount默认值见下表

  用下面的命令查看上述参数的实际值:

1.#crsctlgetcssmisscount

  2.#grepmisscount$CRS_HOME/log/hostname/cssd/ocssd.log

  [CSSD]2008-11-2722:

29:

42.397[1]>TRACE:

clssnmInitNMInfo:

misscountsetto600

  在下面两种情况发生时,css会踢出节点来保证数据的完整,:

  

(1)PrivateNetworkIOtime>misscount,会发生splitbrain即裂脑现象,产生多个“子集群”(subcluster),这些子集群进行投票来选择哪个存活,踢出节点的原则按照下面的原则:

  节点数目不一致的,节点数多的subcluster存活;节点数相同的,nodeID小的节点存活。

  

(2)VoteDiskIOTime>disktimeout,踢出节点原则如下:

失去半数以上votedisk连接的节点将在reboottime的时间内重启;例如有5个votedisk,当由于网络或者存储原因某个节点与其中>=3个votedisk连接超时时,该节点就会重启。

当一个或者两个votedisk损坏时则不会影响集群的运行。

  可以手工修改这三个参数的值,单位都是秒:

(谨慎使用)

  $CRS_HOME/bin/crsctlsetcssmisscount

  $CRS_HOME/bin/crsctlsetcssreboottime[-force]

  $CRS_HOME/bin/crsctlsetcssdisktimeout[-force]

  或者重新设置成默认值:

crsctlunsetcssmisscount

  Clusterware的私有网络

  在Oracle10g/11g中,Oracle的私有网络(privatenetwork)包括clusterware的私有网络和数据库实例的私有网络:

  clusterware的私有网络主要包括css数据的传送,即用一种特殊的ping命令来检测其他机器的状态;

  数据库实例的私有网络,包括RDMS和ASM的,用于cachefusion(GCS/GES)数据的传输。

  当我们只使用一个私有网卡的时,同时传送上面两类的数据。

如果我们在安装时指定了两个私有网卡,首先使用如下面$CRS_HOME/bin/oifcfggetif命令来得到所有网络接口列表,这些信息保存在ocr中:

  #oifcfggetif

  en010.200.56.0globalpublic

  en3192.168.3.0globalcluster_interconnect

  en5192.168.5.0globalcluster_interconnect

  情况会有所不同,clusterware的私有网络,目前(10g/11g)只能使用一个网络接口,对应于/etc/hosts中定义的privatehostname的那个网卡,可以通过查看ocssd的log来确定:

  当/etc/hosts中定义privatehostname为192.168.3.233时看到:

  [CSSD]2009-01-1617:

34:

12.406[1029]>TRACE:

clssgmPeerListener:

Listeningon(ADDRESS=(PROTOCOL=tcp)(DEV=12)(HOST=192.168.3.233)(PORT=45527))

  这个是与其他节点css进行通信的信息:

  [CSSD]2009-01-1617:

36:

27.463[1029]>TRACE:

clssgmConnectToNode:

node2clsc(ADDRESS=(PROTOCOL=tcp)(DEV=12)(HOST=192.168.3.234)(PORT=37732))-size64ver1

  当/etc/hosts中定义privatehostname为192.168.5.233时,css使用了另外一个网络:

  [CSSD]2009-01-1618:

59:

56.411[1029]>TRACE:

clssgmPeerListener:

Listeningon(ADDRESS=(PROTOCOL=tcp)(DEV=12)(HOST=192.168.5.233)(PORT=50415))

  Oracle实例的私有网络

  Oracle实例的心跳网络使用方式的优先级从高到低如下:

  

(1)如果使用了第三方集群的IPC,替换了对应$ORACLE_HOME/lib/libskgxnX.so文件,那么数据库实例的cachefusion会使用对应的网络协议,而忽略ocr中和数据库初始化参数中cluster_interconnects的配置,下面的例子当中就使用了VCSIPC,可以从对应的alertlog中验证:

  db_name=r10g

  open_cursors=300

  pga_aggregate_target=1237319680

  FriMar1314:

00:

352009

  OracleinstancerunningwithODM:

Veritas6.0ODMLibrary,Version1.1

  clusterinterconnectIPCversion:

  VERITASIPC5.1.0.015:

16:

24Feb122009

  IPCVendor86proto76

  Version1.0

  PMONstartedwithpid=2,OSid=4399196

  DIAGstartedwithpid=3,OSid=3936288

  

(2)如果没有使用第三方IPC,则优先使用数据库初始化参数的cluster_interconnects配置,这个参数的格式为if1:

if2:

...:

ifn,可以不同于crs的私有网络,需要注意的是,该参数不支持多个网卡的故障切换;

  (3)没有上面两个配置,数据库会使用oifcfg列出的心跳的网络,在对应的告警日志中可以得到:

  Interfacetype1en6192.168.61.0configuredfromOCRforuseasaclusterinterconnect

  Interfacetype1en010.182.0.0configuredfromOCRforuseasapublicinterface

  ....

  Clustercommunicationisconfiguredtousethefollowinginterface(s)forthisinstance

  192.168.61.0

  (4)没有1和2的配置,并且oifcfg也没有配置cluster_interconnect,则数据库会使用共有网络进行心跳信息的传输,这种配置其实是配置失败的情况,数据库虽然能够启动,但急需DBA修正,在告警日志中可以看到:

  WARNING:

Noclusterinterconnecthasbeenspecified.Dependingon

  thecommunicationdriverconfiguredOracleclustertraffic

  maybedirectedtothepublicinterfaceofthismachine.

  OraclerecommendsthatRACclustereddatabasesbeconfigured

  withaprivateinterconnectforenhancedsecurityand

  performance.

  对于一个已经有的系统,可以用下面几种方法确认数据库实例的心跳配置,包括网卡名称,IP地址,使用的网络协议:

  

(1)最简单的方法:

可以在数据库的后台报警日志中得到。

具体参见上面列出的告警日志;

  

(2)使用oradebug;

  SQL>oradebugsetmypid

  SQL>oradebugipc

  SQL>oradebugtracefile_name

  找到对应trace文件的这一行:

socketno10IP10.0.0.1UDP49197

  (3)从数据字典中得到(V$CLUSTER_INTERCONNECTS和V$CONFIGURED_INTERCONNECTS),或查询x$ksxpia

  SQL>SELECT*FROMV$CLUSTER_INTERCONNECTS;----Oracle11g开始支持此试图

  NAMEIP_ADDRESSIS_SOURCE

  --------------------------------------------------------------------------------

  en3192.168.2.31NOOracleClusterRepo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1