Oracle 11g笔记——RAC简介、意义

一、RAC简介
1、高可用性
   是指整合了硬件和软件技术的综合解决方案。它保证在不丢失数据的前提下,应用程序(服务)能够不间断运行,也就是服务的有效性或服务的可持续访问性。
   特征:可靠性:可靠的硬件和可靠的软件
         可恢复性:提供各种机制,确保能从失败中恢复丢失的数据和失败的进程
         错误自动检测:能自动探测各种错误,并采取相应措施
         可持续性:当某些组件失败时,仍然能够继续对外界提供服务
         Oracle HA解决方案:Oracle Golden Gate、Oracle Data Guard、Oracle Stream Replication和Oracle Real Application Cluster(RAC)
   (1)Oracle Golden Gate是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志(Online Redo)或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。
   (2)Oracle Data Guard通常由两台机器组成,其中一台叫primary database,另外一台叫standby database,两台机器为复制关系。当primary database宕机时,standby database可以代替primary database,不间断地对外提供服务。
   (3)Oracle Stream Replication叫流复制,它是基于消息队列的一种复制技术
   (4)Oracle集群(RAC)是HA常用的一种解决方案,它通过共享存储等一系列技术实现数据库的高可用性。

2、Oracle集群
   一个Oracle集群(RAC)通常由多台服务器(每台服务器称作一个“节点”)组成,多台服务器形成一个整体,对外提供服务。
   但对外来说,好像只有一台机器。集群内部很复杂,但对外的访问接口却很简单。一个集群最多可支持100个节点。
   节点间通过私有网络进行通信,数据库被放在共享存储上。集群中的每个节点都运行一个实例(instance),每个实例都有自己的内存和进程。
   集群中的多个实例可以并行地访问共享存储上的数据库。通常,一个数据库对应一个实例 ,但是在RAC环境下,一个数据库对应多个实例。
   RAC优点:
   (1)高可用性:结合硬件(RAID)技术,当一块硬盘失败时,数据没有丢失,数据库仍然正常运行。当一个节点掉线时,另外一个节点将接管失败节点的负载,并正常对外提供数据库访问服务
   (2)负载均衡:集群中的多个节点同时工作,共同接受客户端连接,共同分担负载。
   (3)可扩展性:当性能或者容量成为瓶颈时,我们可以往集群中增加新的节点或新的磁盘

3、RAC硬件架构
    A.分类 
   (1)外挂式(Direct Attached Storage, DAS),又名“直接附着存储”、“直接附加存储”
        存储设备不在主机内,存储是一个单独的设备,它通过主机总线适配器(Host Bus Adapter, HBA)与主机直接进行连接。主机和存储设备之间没有任何网络设备(交换机、路由、HUB)
        优点:速度快、安全、成本低廉、容易实施
        缺点:服务器和存储设备间的距离短,对存储设备的访问会增加服务器的负载,服务器发生故障,数据将不可访问,难于扩展,集中度低。
   (2)网络式(Network Attached Storage,NAS),又名“网络附加存储”、“网络附着存储”
        存储设备通过网络和主机进行连接。利用普通网络(以太网)进行数据传输,可以利用现有的网络,因此成本较低。
   (3)网络式(Storage Area Network,SAN)存储区域网络
        存储设备也通过网络和主机进行连接。利用光纤通道的专有网络进行数据传输
        优点:速度快,传输距离远,可靠性高,易于扩展。SAN代表了存储技术的主流,但成本较高
 
   B.RAID级别
     通过RAID技术,可以把几块物理硬盘虚拟成一块大硬盘,或者N块硬盘。
     RAID技术两大意义:数据保护、提高I/O的吞吐量。

   C.网络简介
     (1)公有网络(Public Network):客户端通、Web通过公有网络访问RAC
     (2)私有网络(Private Network):用于节点成员之间的相互通信,也就是节点互联,只有节点才能使用私有网络。不能用于公有网络,以免引起节点之间的通信延迟,从而影响RAC的性能。
      注:无论是公用网络还是私有网络,都应该考虑网络的冗余性、高可用性。


4、软件架构
  (1)软件分层
       A. Oracle RAC:是一个独立的软件(不和Orae Grid Infrastructure集成到一起),是数据库软件,但加入了集群功能,负责集群数据库的管理。
                   一个集群中有一个数据库,每个节点上有一个实例,多个实例并发地访问数据库,每个实例有自己的内存和后台进程。    
      

       B.Orae Grid Infrastructure(网格基础层、网格基础软件、集群软件):是一个软件,负责管理集群中的节点、各种资源及存储的管理,是RAC的基础。先安装GI,再安装RAC。GI可以再分为:
            a. Oracle Clusterware
            b. 自动存储管理ASM(Oracle Automatic Storage Management),用于管理共享存储
            oracle 11g将Oracle Clusterware与ASM整合到了一起
      
      C.硬件

  (2)Oracle Clusterware软件
       是一个集群软件,称为“集群构件”,它将多台服务器整合为一个集群,使它们作为一个相互协作的系统。
       主要管理节点及各种资源,这些资源包括虚拟IP(Virtual IP,VIP)、数据库(Databases) 、监听器(Listeners)以及各种服务(Services)等。
       Oracle Clusterware软件是Oracle公司提供的集群组件。第三方也提供了类似功能的软件,如IBM的High Availability Cluster Multi-Processing, HACMP
       原理:Clusterware启动时,会自动启动各种注册的资源(如VIP),并监控各种资源的状态,一量有资源失败,Clusterware会自动重启失败的资源,Clusterware的后台进程运行在各个节点上。
     
       资源:任命被Clusterware管理的东西都叫CRS资源。资源可以是数据库、实例、监听器、VIP、服务或应用程序。
  
       步骤:a.安装Oracle时,Oracle会创建各种资源,我们可以使用srvctl命令管理这些Oracle预定义的资源
             b.安装Oracle后,我们可以创建自己的资源。当启动资源时,Oracle会读取资源的配置信息(记录了资源的各种属性),资源的配置信息被放在Oracle集群注册表(Oracle Cluster Registry, OCR)中。
             c.资源配置信息放在OCR中,而OCR必须放在共享存储中(磁盘陈列)
               共享存储中包含:Data files、SPFILE、Online Redo Log、Voting Disks、Control Files、OCR
               Clusterware组成:集群注册表(OCR)、表决盘(Voting Disks)、共享存储、网络、后台进程
     
       (2.1)集群注册表(Oracle Cluster Registry, OCR)
              OCR存放资源配置,为防止OCR丢失或损坏,应多路镜像OCR,把它同时放到多个路径下(最多可有5个)

       (2.2)表决盘(Voting Disks)
              用于判断哪些节点在同一个集群,也必须放在共享存储中,多个节点共享这些信息。为了防止表决盘丢失或损坏,也应将它放在多个路径,以实现多路镜像,通常应该至少需要3个表决盘。

       (2.3)共享存储(软件层)
              从软件的角度,如何访问共享存储,形式:
              a.Oracle集群文件系统(OCFS)
                是Oracle官方提供的。各普通的文件系统(Ext2、Ext3)一样,首先,它是一种文件系统,其次,集群文件系统用于实现多台服务器共享存放在共享存储中的数据,这是它的最大特性。OCFS具有高性能各高可用性等优点。
           
              b.网络文件系统(NFS)
                NFS是一种分布式文件系统协议,它允许客户端通过网络访问另一台机器上的数据(目录),通过NFS,可以把远程机器上的目录映射成本地机器上的目录,本地机器只要访问本地的目录,就可以实现对远程机器上的目录的访问。
                NFS服务器通常是文件服务器,为整个网络提供文件共享服务。
               
              c.自动存储管理(ASM)
                ASM是一种高性能的、易于管理的存储解决方案。ASM替Oracle管理磁盘,而Oracle数据库通过ASM实现对共享数据的存储和访问。

               Oracle主推的还是自动存储管理(ASM)。它利华了磁盘管理,将数据分布到多块磁盘,重新平衡数据,最终实现数据的高可用性和访问的高性能。

       (2.4)网络
              a.公有IP地址
                在安装Orae Grid Infrastructure时,要设置公有网卡地址,通常用于从外部连接集群中指定的节点,每个节点都有一个公有IP地址
            
              b.节点互联(节点间通信)----私有网络
                 私有网络把组成集群的节点连接在一起。私有网络是专用的,只供节点间通信使用。
                 通信协议:UDP(User Datagram protocol,用户数据报文协议)、RDS(Reliable Data Socket Protocol,可靠数据套接字协议)
             
              c.虚拟IP(VIP)
                VIP是一个不与特定计算机工计算机中的网卡绑定死的IP地址。通常一台服务器有一个VIP,当该VIP所在的节点宕机时,该VIP可以从一台机器漂移到另外一台机器,继续为外界提供数据库访问服务。VIP是Oracle高可用性的一个重要环节。
                VIP是在安装Orae Grid Infrastructure时创建的。
                一个集群中可以有多个VIP,也就是多个对集群的访问接口。缺点:当特定的节点从集群中被删除/增加时,我们需要重新配置客户端。
             
              d.集群统一入口(Single Client Access Name, SCAN)
                SCAN是一个主机名,它提供了单一的名字(单一的访问集群的接口),这个名字不对应某个节点,而是对应整个集群。
                集群和SCAN的关系是一一对应的。当客户端想访问集群时,不需要指定VIP,只需要指定SCAN即可。
                当集群内部发生变化时(如删除一个节点),对SCAN没有影响,也不需要重新配置客户端
                一个SCAN可以对应一个或者多个IP地址(最多3个),出于高可用性的目的,一个SCAN应该对应多个IP地址,但可对应多个SCAN VIP
                SCAN优点:
                负载均衡:当客户端请求数据库连接时,SCAN的名字要被解析成IP地址,利用DNS的轮询调度算法,每次SCAN都会被解析成不同的IP地址,根据IP地址(SCAN VIP)客户端会去连接指定的SCAN监听器。
                          轮询调度算法也可以用Oracle的GNS(Grid Naming Service)来实现。若使用GNS,Oracle会自动创建SCAN,若使用DNS解析,需要我们自己定义SCAN
                高可用性:若SCAN对应多个IP地址,当尝试第一个IP地址失败时,Oracle会尝试使用SCAN中的第二个IP地址,依此类推。若失败,Oracle才返回错误。


       (2.5)后台进程
              Clusterware运行在集群中的每个节点上,它被分成两个层次,上层为:Cluster Ready Services(crsd),下层是Oracle High Availability Services(ohasd)
              每层都由一系列的组件组成,这些组件表现为进程或服务。

 

二、RAC的意义----负载均衡和失败转移
    1、负载均衡分类:
       (1)服务器端负载均衡
       (2)客户端负载均衡:SCAN负载均衡、非SCAN VIP负载均衡、混合型
    2、负载均衡示例
       (1)非SCAN VIP负载均衡
            是传统负载均衡,需要修改客户端的tnsnames.ora文件,并设置LOAD_BALANCE=ON,加入数据库服务器的VIP(不是SCAN VIP)
            客户端请求连接时,将从地址列表中随机选择一台主机进行连接。
            如:
            orcl =(DESCRIPTION =
                    (LOAD_BALANCE=0N)
                    (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.83)(PORT=1521))
                    (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.84)(PORT=1521))
                    (CONNECT_DATE=
                       (SERVICE_NAME=ZERODB)
                     )
                  )

             注:LOAD_BALANCE=0N表示开户客户端负载均衡,ZERODB是服务名,通常和数据库的名字相同
             192.168.0.83、192.168.0.84是VIP(不是SCAN VIP)
             测试tnsnames.ora配置是否正确:SQL>tnsping orcl
             测试tnsnames.ora成功后,登录,查看当前会话的实例:SQL>select instance_name from v$instance;
             测试发现:在不同的实例间切换
       (2)SCAN负载均衡
            本例中myscan对应3个IP地址(192.168.0.85、192.168.0.86、192.168.0.87)
            修改客户端的tnsnames.ora文件
            orcl =(DESCRIPTION =
                    (ADDRESS=(PROTOCOL=TCP)(HOST=myscan)(PORT=1521))
                    (CONNECT_DATE=
                       (SERVICE_NAME=ZERODB)
                     )
                  )
            注:ZERODB是服务名,myscan就SCAN的名字(其实是通过DNS进行解析的一个主机名),注host必须为主机名,不能是IP地址。
            测试tnsnames.ora配置是否正确:SQL>tnsping orcl
            测试tnsnames.ora成功后,登录,查看当前会话的实例:SQL>select instance_name from v$instance;
            测试发现:在不同的实例间切换
 
       (3)混合型负载均衡
            混合型融合了普通的VIP和SCAN VIP。若使用混合型,需要修改参数REMOTE_LISTENER
            SQL>ALTER SYSTEM SET REMOTE_LISTENER='......' SCOPTE=BOTH SID='*';

            若我们使用的是Oracle 11.2,推荐使用SCAN负载均衡方式。

    3、服务器端负载均衡
       当客户端选择特定的IP地址连接到指定的监听器后,监听器需要决定要让客户端连接至哪个实例。监听器会根据第个实例的繁忙程度,让客户端连接到最空闲的实例。
       选择实例后,如果数据库实例被配置成共享服务器模式(Shared Server),则监听器会让最空闲的高度进程(dispatcher)为该客户服务。
       服务器端负载均衡由Oracle自动完成,基本不需要DBA的干预。

    4、失败转移
       (1)分类:连接时失败转移(Connet-time Failover)、透明应用程序失败转发(Transparent Application Failover, TAF)
                 连接时失败转移:当客户端连接数据库里,会尝试连接第一个监听器,失败后再尝试别的监听器
                             注:配置网络服务名时,可以设置FAILOVER=ON,表示开户连接时失败转移
                 透明应用程序失败转发:是运行时发生的失败转移,如节点失败时,该节点上的会话会重新建立连接。

你可能感兴趣的:(Oracle 11g笔记——RAC简介、意义)