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

一、集群技术基础

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. 提升PPT制作效率和颜值

    [大咖分享]By汤帅,PPT定制师 网站有时比素材库更有效 学会多模板整合利用 网站推荐:花瓣,officeplus,演界网,pptstore 演讲提纲 思维导图听课笔记

  2. 【Jmeter】参数Parameters和Body Data

    在做接口并发测试的时候,才发现Jmeter中的Parameters和Body Data两种参数格式并不是简单的一个是xx=xx,另外一个是json格式的参数 先看一个接口 [post] /api/xx ...

  3. Glide实现查看图片和保存图片到手机

    两种方式, 推荐方式一 方式一 downloadOnly 创建一个 ImageActivity public class ImageActivity extends AppCompatActivity ...

  4. gitattributes中的filter

    .gitattributes文件就是一个简单的text文本文件,它的作用是gives attributes to pathnames. 该文件中的一些配置可以为某些特定目录或者文件来设置,这样Git就 ...

  5. C++ inheritance examples

    1.C++继承经典例子 #include <iostream> using namespace std; class Base { private: int b_number; publi ...

  6. SQL Server 2017 on Linux

    此文转载,原文地址:https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-whats-new CTP 2.0 The CTP 2.0 ...

  7. redis知识树

  8. June 20th 2017 Week 25th Tuesday

    Care and diligence bring luck. 谨慎和勤奋,带来好运气. In my opinion, care and diligence may just gurantee us a ...

  9. 我不 大冰2017新书pdf免费下载

    善意能消戾,善意能得缘,善意能带业往生,善意能回头是岸.善意能够帮人捕捉并建立起独特的幸福感. “我不”是一种善意坦然,也是一种善意的随缘,更是一句善意的自省. <我不>——百万级畅销书作 ...

  10. Kubernetes pod里一个特殊的容器:pause-amd64

    大家在使用Docker容器或者Kubernetes时,遇到过这个容器么?gcr.io/google_containers/pause-amd64 docker ps的命令返回的结果: [root@k8 ...