集群、RAC和MAA
集群:是一种由两台或多台节点机构成的松散耦合的计算节点集合,这个集合在整个网络中表现为单一的系统,并通过单一接口进行使用和管理。给用户提供网络服务或应用程序的单一视图。大多数模式下,集群中所有计算机都拥有一个相同的名称,集群内任意一个系统都可以被所有网络客户所使用。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。客户将能很快连接到新应用服务器上,理想情况下用户甚至感觉不到这种故障存在。
一、集群技术基础
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的更多相关文章
- 老集群RAC双网卡绑定
老集群RAC双网卡绑定 作者:Eric 微信:loveoracle11g [root@db-rac02 network-scripts]# cat ifcfg-bond0 DEVICE=bond0 I ...
- 数据迁移_老集群RAC迁移数据恢复到新集群RAC
数据迁移_老集群RAC迁移数据恢复到新集群RAC 作者:Eric 微信:loveoracle11g 1.把老集群RAC备份的数据远程拷贝到新集群RAC [root@old-rac-node1 ~]# ...
- weblogic多池与oracle集群RAC
http://www.techpaste.com/2013/04/soa-infra-start-fails-weblogic-common-resourceexception-good-connec ...
- 图解:图形下控制台中weblogic9.2多池配置为oracle集群RAC
update: 这个东西如果配置不顺利的话:应用请求数据库的时候,会打印类似这样的错误: :open connection err Pool connect failed : weblogic.com ...
- oracle 集群RAC搭建(四)--grid部署
安装教程:
- oracle 集群RAC搭建--环境准备
一,环境介绍 目前我本身环境已经有DG,正在尝试重做搭建.如需完成请移步往期文章--搭建DG
- Centos-6.5搭建oracle11g RAC集群
一.基本概念 RAC( Real Application Clusters-----真正的应用集群) RAC数据库是Oracle公司数据库的集群解决方案.高可用性解决方案.两个或多个服务器之间通过一个 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...
- Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
随机推荐
- 考勤机sql语句
考勤机sql语句 SELECT checkinout.id as 序号 ,checkinout.pin as 打卡编号,userinfo.name 姓名, checkinout.checktime 签 ...
- Netty入门3之----Decoder和Encoder
Netty强大的地方,是他能方便的实现自定义协议的网络传输.在上一篇文章中,通过使用Netty封装好的工具类,实现了简单的http服务器.在接下来的文章中,我们看看怎么使用他来搭建自定义协议的服务 ...
- [Errno 14] problem making ssl connection Trying other mirror.
使用yum安装程序,报错 解决方法: 我的是升级了下curl就可以了 yum update curl
- 二叉树的二叉链表存储结构及C++实现
前言:存储二叉树的关键是如何表示结点之间的逻辑关系,也就是双亲和孩子之间的关系.在具体应用中,可能要求从任一结点能直接访问到它的孩子. 一.二叉链表 二叉树一般多采用二叉链表(binary linke ...
- vue + element-ui 制作下拉菜单(可配置路由、可根据路由高亮list、可刷新自动展开定位路由)
本篇文章分享一篇关于 vue制作可路由切换组件.可刷新根据路由定位导航(自动展开).可根据路由高亮对应导航选项 一.实现的功能如下: 1.可折叠导航面板 2.点击导航路由不同组件 ...
- base64编码加密图片和展示图片
base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一.base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于 网络传输.由于这些二进制字符在传输协议中属于控制字符, ...
- yii2.0里的redirect跳转方法
在yii2框架里难免会出现跨控制器跳转,调用方法等,这就用到了redirect了, 带参数的 $control=Yii::app()->runController('site/show/id/2 ...
- July 11th 2017 Week 28th Tuesday
No possession, but use, in the only riches. 真正的财富不是占有,而是使用. These days I have bought tens of books a ...
- February 21 2017 Week 8 Tuesday
To make each day count. 让每一天都物有所值. We always want to make our life meaningful, however, the acutal f ...
- Sqlserver2008+搜索型注入技术
简单的判断搜索型注入漏洞存在不存在的办法是先搜索',如果出错,说明90%存在这个漏洞.然后搜索%,如果正常返回,说明95%有洞了. 然后再搜索一个关键字,比如2006吧,正常返回所有2006相关的信息 ...