集群:是一种由两台或多台节点机构成的松散耦合的计算节点集合,这个集合在整个网络中表现为单一的系统,并通过单一接口进行使用和管理。给用户提供网络服务或应用程序的单一视图。大多数模式下,集群中所有计算机都拥有一个相同的名称,集群内任意一个系统都可以被所有网络客户所使用。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。客户将能很快连接到新应用服务器上,理想情况下用户甚至感觉不到这种故障存在。

一、集群技术基础

1.集群地址

维护集群地址的设施被称为负载均衡器。对内负责管理各节点加入和退出,对外负责集群地址向内部实体地址转换。

2.内部通信

节点间心跳测试信息、服务实体间任务执行上下文信息的通信。

3.集群仲裁

二、集群术语

1.两大特性:可扩展性和高可用性

可扩展:新的服务实体可以动态的加入集群,从而增强集群性能。
高可用性:通过对服务实体的冗余配置,使客户端减少遇到“服务宕机”的可能性。

2.两大核心能力:负载均衡和故障转移

负载均衡:把处理任务尽可能均衡的分散到集群中的每个节点和网络资源。
故障转移:集群中正在执行任务的服务出现故障,另一服务实体中执行同一任务的资源将接手并继续完成任务,这个过程叫故障转移。

三、集群组成元素

  • Cluster
    通过心跳网络,基于共享存储磁盘的心跳网络,将一组机器整合而成的一个集群。

  • Node
    Cluster中的一个主机

  • Resource
    可以从主机接管到备机上的逻辑实体,比如IP地址、文件系统、应用程序

四、集群分类

根据不同功能分类

  • 高性能计算集群
    将计算任务分配到不同计算节点来提高整体计算能力,多见于搜索引擎、文本挖掘等互联网业务。

  • 负载均衡集群(LB)
    核心是把业务的负载流量尽可能平均合理的分摊到集群各个节点。每个节点可以处理一部分负载,并且可以根据节点负载进行动态平衡。

  • 高可用性集群(HA)
    侧重提高系统可用性,通过集成硬件和软件容错性来实现整体服务高可用。如果某节点发生故障,将由另外节点代替。RAC就同时具有HA和LB两种能力。

五、Oracle高可用架构(MAA)

最大可用性体系架构

MAA是通过把所有可用技术组合起来,减少或者消除计划内和计划外的系统宕机时间,包括来自各方面的风险,从硬件故障导致的数据破坏、到自然灾害引起的大范围瘫痪。
RAC不是一个独立的产品,更像是一个实施方案或者指导方针,把Oracle产品中可用于数据保护的技术汇集在一起,进行归纳、整理、分析,最终提出一个“最佳时间规划”。

1.MAA实例

MAA核心思想就是冗余,通过数据、软件、硬件、网络等各种组件的冗余,实现最大程度的数据保护。

易混淆概念:
1)双机热备
两个或多个主机连接一个共享的存储设备,当主机服务器发生故障时,一旦Cluster软件侦测到故障,就会把备用机器激活,保证应用继续提供服务。

2)双机互备
双机热备技术的扩展,当一个服务器出现故障时,另一台机器可以很快把服务接管过来,保证业务连续性。

3)Oracle DataGuard
DataGuard环境也有多个数据库节点,其中一个是活跃的,其余为备用状态Standby,由Primary节点对外提供服务,Primary节点和Standby节点之间通过日志传递,日志恢复机制实现数据同步。当Primary节点发生故障时,可以由DBA或者系统自动进行Primary、Standby角色切换。

区别:DataGuard环境中的两个或者多个主机 并不需要共享存储设备,每个有自己的存储数据,其次DataGuard环境中并不需要心跳机制。

2.RAC集群

逻辑上看,RAC集群由存储层、网络层、集群件层、应用层4层组成

存储层:
RAC是一个多实例、单份数据的系统。数据文件、联机日志文件、控制文件等文件在集群中只有一份。不管有几个节点,这些节点都平等的使用这些数据文件。一般采用EMC等存储阵列,每个服务器通过HBA卡和光纤线连接到存储上。

网络层:
RAC环境有3个物理网络存在:
一个是由每台服务器的Public网卡组成的网络,对外提供数据查询等服务;
一个是由每台服务器的Private网卡组成的私有网络,用于RAC心跳网络和Cache Fusion
一个是存储设备、光纤交换机、每个节点HBA组成的存储网络。

前两个传输IP数据,后一个传输SCSI数据

集群件层:

Clusterware会在OS Kernel之前截获数据库发出的请求,然后和其他节点上Clusterware协商,最终完成上层请求。

应用层:
整个应用层由若干CRS组成,可以简单的理解,一个Resource通常是一个进程、或者由一组进程组成的一个完整服务。

3.RAC集群环境问题3.RAC集群环境问题

1)并发控制
集群环境只能很高数据是共享存放,而集群内各个节点身份是对等的,所有节点对数据有相同的访问权利。利用DML(Distribute Lock Management)机制进行多个实例间的并发控制。

2)健忘症
两个节点集群,节点1因为正常的维护需要被关闭,然后在节点2修改了某些配置,然后关闭了节点2,启动节点1,因为节点2的配置修改没有同步到节点1,所以节点1启动后仍然使用旧配置文件工作,这时就会造成配置丢失,就是所谓的“健忘症”。

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

解决脑裂的通常办法是使用投票算法
集群中各节点需要心跳机制来通报彼此“健康状况”,假设每收到一个节点的“通报”代表一票。对于一个三节点集群,正常运行时,每个节点都会有3票,假设节点1的心跳出现故障,但是节点1还在运行:这时整个集群就分裂成两个小的partition,节点1自己是一个partition,节点2和节点3是一个partition。这时就必须剔除一个partition,应该剔除哪一个?

这时节点2和节点3组成的partition,每个节点有两票:节点1自己一个partition,节点1只有一票。节点2和节点3组成的小集群获得控制权,而节点1被踢出,由节点2和节点3组成的新的集群继续对外提供服务。

如果集群中只有两个节点,则就必须引入第三个设备Quorum Device。

Quorum Device通常采用共享磁盘,这个磁盘叫Quorum Disk。整个Quorum Disk也代表一票。当心跳出现故障时,两个节点同时去争取Quorum Disk这一票,最早到达的请求最先被满足,最后到达的节点就无法获得这一票,只有一票的节点就会被踢出集群。

4)IO隔离
为了保证被踢出集群的节点不能操作共享数据,这就是IO隔离要解决的问题。
有软硬两种方式:
支持SCSI Reserve/Release命令的存储设备,可以用SG命令实现。正常节点使用SCSI Reserve命令“锁住”存储设备,故障节点发现存储设备被锁住后,就知道自己已经被赶出集群了,就要自行重启,这个机制也叫自杀。

STONTH是另一种实现方式,直接操作电源开关。当一个节点发生故障时,另一节点如果能侦测到,就会通过串行口发出命令,控制故障节点的电源开关,通过暂时断电而后又上电的方式使得故障节点被重启动,这种方式需要硬件支持。

Oracle RAC采用的是软件方式,直接重启故障节点。

5.RAC优点

  • 增加可用性
  • 增加扩展能力
  • 增加可维护性
  • 减少总持有成本

1)增加可用性
RAC确实可以有效较少计划外宕机时间,但也不是百分百消除,让然会有部分停止响应时间。
当一个节点或者实例Failed时,RAC Database会发生Crash Recovery。在其他健康节点上的Oracle Clusterware软件能够检查到这个节点或者实例Failure,并通知其他节点。最先察觉到发生故障的那个节点,会读取故障节点的联机日志内容(从最后一次检查点开始读起),并且把这些日子在数据库上重演,这个过程就是前滚(roll-forward),然后所有未提交的事物被回滚撤销掉(roll-back)。在前滚和回滚过程中,整个集群处于冻结状态forzen,这个节点不能处理任何请求,只有全部完成后,才能继续对外提供服务。这个过程叫做“brown-out”阶段。知识这个阶段可能很短。

但是,RAC环境数据本身只有一份,没有任何冗余数据,同时结构也变复杂,包括共享存储、私有网络、光纤网络也引入了更多的故障点。升级也变的复杂,数据库升级必须关闭整个数据库,不能减少计划内宕机时间。

2)扩展性
通过增加资源的方式导致系统吞吐量增长。
对于RAC而言,最好的扩展能力是1.8,应为数据库扩展能力很大部分取决于应用系统的使用方式。

3)容易管理
原来企业中有多个数据库,通过 部署RAC把原来多个数据库整合成一个多节点的RAC数据库,随着数据库减少,DBA管理任务自然减少。

但是RAC环境下,升级是一个很复杂的操作,其次多应用整合到一个数据库中,RAC宕机将影响更多的应用系统,计划内宕机时间更短,人力成本更高。


是否应该选择RAC,最有资格做决定是DBA自己,因为只有你自己知道你的需求、预算、预期。一定要问清自己想通过RAC解决什么问题。RAC并不是包治百病的“万金油”,因此,在考虑RAC之前一定要确定你已经考虑过其他解决方案。


一个好或者坏的系统都是被设计出来的,最初的视野决定了最终系统的负载能力。决定选择RAC之前,一定要确保理解了RAC的优缺点,一定要确保其他方案无法奏效,只有RAC一条路可以走。那种单节点表现极差,并且没有做过任何调整,就企图用RAC解决性能问题的,无异于自寻死路。


<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

集群、RAC和MAA的更多相关文章

  1. 老集群RAC双网卡绑定

    老集群RAC双网卡绑定 作者:Eric 微信:loveoracle11g [root@db-rac02 network-scripts]# cat ifcfg-bond0 DEVICE=bond0 I ...

  2. 数据迁移_老集群RAC迁移数据恢复到新集群RAC

    数据迁移_老集群RAC迁移数据恢复到新集群RAC 作者:Eric 微信:loveoracle11g 1.把老集群RAC备份的数据远程拷贝到新集群RAC [root@old-rac-node1 ~]# ...

  3. weblogic多池与oracle集群RAC

    http://www.techpaste.com/2013/04/soa-infra-start-fails-weblogic-common-resourceexception-good-connec ...

  4. 图解:图形下控制台中weblogic9.2多池配置为oracle集群RAC

    update: 这个东西如果配置不顺利的话:应用请求数据库的时候,会打印类似这样的错误: :open connection err Pool connect failed : weblogic.com ...

  5. oracle 集群RAC搭建(四)--grid部署

    安装教程:

  6. oracle 集群RAC搭建--环境准备

    一,环境介绍 目前我本身环境已经有DG,正在尝试重做搭建.如需完成请移步往期文章--搭建DG

  7. Centos-6.5搭建oracle11g RAC集群

    一.基本概念 RAC( Real Application Clusters-----真正的应用集群) RAC数据库是Oracle公司数据库的集群解决方案.高可用性解决方案.两个或多个服务器之间通过一个 ...

  8. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  9. Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)

    ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

随机推荐

  1. 考勤机sql语句

    考勤机sql语句 SELECT checkinout.id as 序号 ,checkinout.pin as 打卡编号,userinfo.name 姓名, checkinout.checktime 签 ...

  2. Netty入门3之----Decoder和Encoder

    ​ Netty强大的地方,是他能方便的实现自定义协议的网络传输.在上一篇文章中,通过使用Netty封装好的工具类,实现了简单的http服务器.在接下来的文章中,我们看看怎么使用他来搭建自定义协议的服务 ...

  3. [Errno 14] problem making ssl connection Trying other mirror.

    使用yum安装程序,报错 解决方法: 我的是升级了下curl就可以了   yum update curl

  4. 二叉树的二叉链表存储结构及C++实现

    前言:存储二叉树的关键是如何表示结点之间的逻辑关系,也就是双亲和孩子之间的关系.在具体应用中,可能要求从任一结点能直接访问到它的孩子. 一.二叉链表 二叉树一般多采用二叉链表(binary linke ...

  5. vue + element-ui 制作下拉菜单(可配置路由、可根据路由高亮list、可刷新自动展开定位路由)

    本篇文章分享一篇关于 vue制作可路由切换组件.可刷新根据路由定位导航(自动展开).可根据路由高亮对应导航选项 一.实现的功能如下: 1.可折叠导航面板 2.点击导航路由不同组件           ...

  6. base64编码加密图片和展示图片

    base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一.base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于 网络传输.由于这些二进制字符在传输协议中属于控制字符, ...

  7. yii2.0里的redirect跳转方法

    在yii2框架里难免会出现跨控制器跳转,调用方法等,这就用到了redirect了, 带参数的 $control=Yii::app()->runController('site/show/id/2 ...

  8. July 11th 2017 Week 28th Tuesday

    No possession, but use, in the only riches. 真正的财富不是占有,而是使用. These days I have bought tens of books a ...

  9. February 21 2017 Week 8 Tuesday

    To make each day count. 让每一天都物有所值. We always want to make our life meaningful, however, the acutal f ...

  10. Sqlserver2008+搜索型注入技术

    简单的判断搜索型注入漏洞存在不存在的办法是先搜索',如果出错,说明90%存在这个漏洞.然后搜索%,如果正常返回,说明95%有洞了. 然后再搜索一个关键字,比如2006吧,正常返回所有2006相关的信息 ...