集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图。集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据。除了作为单一系统提供服务,集群系统还具有恢复服务器级故障的能力。集群系统还可通过在集群中继续增加服务器的方式,从内部增加服务器的处理能力,并通过系统级的冗余提供固有的可靠性和可用性。
1、高性能计算集群:
高性能计算集群采用将计算任务分配到不同节点来提高整体计算能力主要应用在科学计算领域。
2、负载均衡集群LB:
负载均衡集群为企业需求提供更实用的系统。该系统使各节点的负载流量可以在服务器集群中尽可能平均合理地分摊处理。该负载需要均衡计算的应用程序处理端口负载或网络流量负载。这样的系统非常适合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现平衡。对于网络流量也如此。通常,网络服务器应用程序接受了大量入网流量,无法迅速处理,这就需要将流量发送给在其它节点。负载均衡算法还可以根据每个节点不同的可用资源或网络的特殊环境来进行优化。
3、高可用性集群HA:
为保证集群整体服务的高可用,考虑计算硬件和软件的容错性。如果高可用性群集中的某个节点发生了故障,那么将由另外的节点代替它。整个系统环境对于用户是一致的。
实际应用中HA与LB经常是同时具备,ORACLE RAC就同时具备HA和LB。
理解 了前面的内容,有助于 理解ORACLE RAC的 架构及各个组件的功能。
集群最终的目的是为了 向客户端提供单一视图并提供HA及LB。在集群中每个节点都 能处理客户端的请求。所以每个节点至少要运行一个实例。
在单实例环境中,ORACLE 实例通过OS Kernel访问硬件并通过进程调 度 多个进程对硬件资源的使用,但在集群环境下 存储设备是共享使用 ,ORACLE 实例不仅 需 要协调节点内多进程的共享使用,还需 要协调主机间进程的共享使用。这种需求靠传统的OS kernel就无法满足了 ,这就需要集群软件来实现。集群软件主要有Sun Cluster , IBM HACMP 等,ORACLE也推 出了自己的集群软件 Clusterware
ORACLE Clusterware 有以下几个组件
1、OCR Oracle Cluster Registry 为了解决集群“健忘”的问题,最简单的解决办法就是整个集群只 有一份配置,所有节点共用这份配置。ORACLE采用的方法就是把这个配置文件放在共享存储上,这个文件 就是OCR DISK。 节点通过OCR Process读写OCR。 但只有一个节点能够读写OCR DISK 叫OCR Master节点,其它节点 通过本节点的OCR process 向master node的OCR process提交请求,由master OCR Process 完成物理读写,并同步所有节点OCR cache中的内容。
2、Voting Disk 这个文件主要用于记录节点中成员状态,在出现脑裂时,仲裁那个Partition获得集群的控制权
3、Cluster Synchronization Service(css) : CSS 服务 通过 多种心跳机制 实时监控集群的健康状态,提供脑裂保护等集群服务功能
CSS服务有二个心跳机制:私有网络的Network Heartbeat 用于监控节点之间的健康状态(超时阈值参数MisCount MC) ,通过Voting Disk 的Disk Heartbeat (超时阈值参数IO timeout IOT) 。用于监控是否有访问共享存储的IO故障如HBA卡故障,SAN交换机或者存储的线缆损坏导致I/O超时。
这两个心跳机制决定节点是否应驱逐。下面描述了驱逐行为发生的条件:
(1)、都不超时,不会驱逐
(2)、网络PING在MC时间内完成 ,磁盘ping超过了MC,但是在 IOT内成,也不会驱逐
(3)、网络ping在MC时间内完成,磁盘ping超过了IOT,则节点被驱逐
(4)、网络ping超过MC设置,磁盘ping在MC内完成,节点也会被驱逐
4、Cluster Ready Service CRS管理的任何事物被称之为资源,它们可以是一个数据库、一个实例、一个监听、一个虚拟IP(VIP)地址、一个应用进程等等。CRS是根据存储于OCR中的资源配置信息来管理这些资源的。这包括启动、关闭、监控及故障切换(start、stop、monitor及failover)操作。当一资源的状态改变时,CRS进程生成一个事件。当你安装RAC时,CRS进程监控Oracle的实例、监听等等,并在故障发生时自动启动这些组件。默认情况下,CRS进程会进行5次重启操作,如果资源仍然无法启动则不再尝试。集群的高可用HA就靠它了
5、Event Manager Service 负责发布CRS产生的各种事件
6、 Oracle Notification Service(ONS):FAN Fast Application Notification事件的发布及订阅服务
7、RACG 为clusterware进行功能扩展以支持Oracle的特定需求。它在FAN事件发生时执行服务器端的调用脚本(server callout script)
8、Process Monitor Daemon: 监视集群和提供I/O隔离(fencing)
下表是Clusterware后台进程列表, 其中带(r)的进程表示需要以root用户运行
PS:摘自《大话RAC 》ORACLE集群
Clusterware 组件 |
Linux/unix 进程 |
Windows 服务 |
Windows 进程 |
Process Monitor Daemon |
oprocd(r) |
OraFenceService |
|
RACG |
racgmain racgimon |
|
racgmain.exe racgimon.exe |
Oracle Nonification Service(ONS) |
ons |
|
|
Event Manager |
evmd(r) evmd.bin evmlogger |
OracleEVMService |
evmlogger.exe evmd.exe |
Cluster Ready |
crsd.bin(r) |
OracleCRSService |
crsd.exe |
Cluster Synchronization Services |
init.cssd(r) ocssd(r) ocssd.bin |
OracleCSService |
ocssd.exe |