网格即插即用(GPnP)
网格即插即用帮助管理员来维护集群,以前增加或删除节点需要的一些手动操作的步骤现在可以由GPnP来自动实现。
GPnP不是一个单独的概念,它依赖于以下特性:在一个XML配置文件中储存集群信息;集群时间同步(CTSS);网格命名服务(GNS);单一客户端访问名称(SCAN);服务器池(Server Pools)。
GPnP为公网和私网连接、ASM spfile、CSS投票盘定义了元数据网络接口,profile、XML文件通过wallet保护以避免被修改。如果你需要手动修改profile,那么首先需要使用$GRID_HOME/bin/gpnptool来接触签名,然后修改,最后再使用相同的工具再次进行签名。当使用集群管理工具(比如oifcfg)时,profile将在没有管理员介入的情况下自动更新。
在没有启用NTP的时候,CTSS后台进程负责同步集群节点间的时间,这可以解除对NTP服务器的依赖,但我们建议在可能的情况下还是使用NTP——否则可能最终所有节点的时间是一致的但不准确。
在Oracle 11.2以前,需要将节点的公共IP和虚拟IP注册到DNS服务器中,用来给客户端正常连接数据库,和支持负载均衡。一些集群的维护,比如增加和删除节点,需要在DNS上进行修改,如果这种操作经常发生的话,那将使一个负担。网格命名服务将IP地址和名称间的映射关系从DNS服务器中移除,交给集群软件来管理。严格地说,集群软件运行着自己的一个小型的域名服务,使用子域委派(subdomain delegation)的方法在另一个虚拟IP地址上侦听。简单地说,你为你的域名(example.com)创建了一个新的子域(比如ebsprod),并指定一个根域名服务器来将所有对子域(ebsprod.example.com)的请求转移到GNS中。在随后的安装中,系统会要求提供公共网络和私有网络的相关信息,而不会要求提供虚拟IP的地址和名称。GNS使用的地址来自公共网络中的动态主机配置协议(DHCP)。下表给出这些地址和他们用途、默认名称及软件跟踪分析使用的详细信息的一个概述:
![RAC <wbr>11.2的新特性](http://hi.csdn.net/attachment/201110/7/0_1317989792uTO3.gif?x-oss-process=image/resize,w_1400/format,webp)
我们建议在/etc/hosts文件中定义私有IP地址,以免其他人或其他应用用到它们。
另外,GNS在安装中是可选的,目前尚不够成熟,已经发现了GNS相关的一些BUG。
刚才提到的另一个特性是SCAN,SCAN帮助我们从客户端的连接中抽象出一个节点数,节点的增减是完全透明的,因为SCAN与集群的相关度高于数据库。
另外,还引入了服务器池来简化对RAC数据库实例的增减。
服务器池(Server Pools)
服务器池提供了一个新的方法来在集群中塑造资源,它允许你将集群细分成多个逻辑单元,这在共享环境中很有用。11.2版本集群的所有节点,不管显式还是隐式的,都是服务器池的一部分。默认情况下,在一个全新的安装之后会产生两个池:自由池(free pool)和通用池(generic pool),通用池用于向后兼容,它存储11.2版本以前的数据库或者11.2版本里管理员管理模式(administrator-managed)的数据库。所有非指定的节点都分配给自由池。
服务器池相互间是独占的,包含一些属性,比如最大最小的节点数、重要性、名称。服务器池的重要性属性用来确保低优先级的工作量不会击败高优先级的来获得资源。将服务器从一个池重新分配到另一个池是可能的,这将在容量管理上发生有趣的情况。集群软件可以自动从其他服务器池中移动服务器来得知服务器池大小的最小要求。
服务器池伴随着忙里RAC数据库的新方法。在Oracle 11.2以前,管理员需要负责从RAC数据库中增加或删除实例,包括创建和启用公共在线redo日志线程和undo表空间。服务器池(和ASM中使用的OMF)通过策略管理(policy-managed)数据库的方式来使这些工作自动化。管理员管理的数据库(administrator-managed)是指,就像名字中提到的,全部需要由数据库管理员来管理。换句话说,就是Oracle 11.1以前的RAC数据库。策略管理的数据库(Policy-managed database)使用自动化特性来增删实例和服务。策略管理的数据库启动的节点的数量由服务器池的基数来配置;换句话说,如果你需要一个新的实例,你只要将一个新的节点分配到数据库的服务器池中,Oracle会执行剩下部分的工作。
结合服务器池,Grid Infrastructure引入另一个特性叫角色分离管理(Role Separated Management)。在共享环境中,管理员在管理他们各自的服务器池时受到限制。访问控制列表(Access Control Lists)被用来分配访问给资源。这里还引入了一个新的角色,叫集群管理员(cluster administrator)。默认情况下,Grid Infrastructure软件所有者"grid"和root用户是固定的集群管理员。可以新添加一些系统用户来作为集群管理员,每个用户拥有几个资源、类型和服务器池上的权限。职责的分离现在可以在集群级别中实现,请注意grid和root用户的权限很大。
ACFS
Oracle 11.2扩展了ASM,它不再只用来存储数据库相关的文件架构,还能提供兼容POSIX的集群文件系统,这个文件系统就叫ACFS。兼容POSIX的意思是说,我们在ext3和其他文件系统中使用的所有的操作系统工具都可以用在ACFS上。一个节省空间的只读、写入时拷贝的快照机制同样是可用的,允许最多63个快照。ACFS内部使用64位架构,它是一个可以在线备份(journal file system)的文件系统,使用元数据的校验和来确保数据的完整性。ACFS可以在线调整大小,可以使用所有ASM提供的服务,甚至是I/O分布。
ACFS解决了RAC使用中的一个问题,数据库目录对象和外部表现在可以指向ACFS文件系统,并且集群中所有外部数据在各个节点中看起来是一样的。在现实中,使用外部表的用户需要确保能连接到正确的实例来访问外部表或目录对象中的基础数据。通过ACFS,不再需要去连接一个特定的节点了。让文件系统对所有节点可见就解决了这个问题。ACFS同样说明了一个问题:附加一个集群文件系统的使用(比如OCFS)可能在RAC系统上导致一些问题,因为它意味着第二批心跳进程的存在。
ACFS并不局限于RAC中,另一个可能用到ACFS的情景是Grid Infrastructure高可用架构保护下的网页服务器群,可以使用ACFS来导出web站点的环境或应用代码到服务器的根目录中。
ACFS可以储存数据库二进制文件、bfile、参数文件(pfile)、跟踪文件(trace file)、日志、和任何类型的用户应用数据。数据库文件在ACFS中不被支持,Oracle也不会允许你将它们创建在ACFS的挂载目录中。然后,Oracle明确支持把Oracle二进制文件安装在ACFS中作为一个共享目录;该文件系统的挂载可以合并到集群软件中,在尝试启动数据库前确保文件系统是可用的。
ACFS使用ASM动态卷管理(ADVM)服务,它提供了卷管理服务和一个标准设备驱动接口给它的文件系统客户,比如ACFS和ext3。ACFS文件系统创建在ADVM卷(它是一种特殊的ASM文件类型)之上。下图描述了ASM disk、ASM disk group、动态卷和ACFS文件系统间的关系。
ACFS和ADVM卷的管理被整合到了企业管理器、ASMCA和命令行工具(例如SQL*Plus)中。
Oracle Restart
Oracle Restart,在以前也叫Single Instance High Availability。Oracle Restart延续了对资源的跟踪,比如(单实例)数据库、ASM实例和相应磁盘组、监听和其他节点应用(例如Oracle通知服务)。它同样也使用Oracle高可用服务(OHAS)和它的子进程来监控注册资源的状态,并在需要的时候重启失败的组件。Oracle Restart的原信息保存在Oracle Local Registry中,它还运行一个CSSD例程,让你不用通过执行localconfig add来创建。Oracle Restart最大的好处是它与ONS及资源管理器的融合,我们可以通过它使用RAC中知道的一些命令。于是,数据库管理员不用担心启动脚本的问题,Oracle Restart会在服务器启动时打开数据库。Oracle Restart中定义的一些依赖性可以保证数据库不会先于ASM启动,等等。以前经常会忘了打开监听,现在不会再有这个问题。
Oracle Restart将建议的Oracle Home数量降低到1个,你只需要一个包含了ASM和RDBMS二进制文件的Grid Infrastructure目录。与Grid Infrastructure不同,Oracle Restart可以与数据库软件共享ORACLE_BASE。安装过程与集群的安装很相似,除了没有拷贝文件到远程位置的这一步。另一个好处是:它不需要定义OCR和投票盘的路径。通过执行root.sh脚本来初始化OLR并在制定的磁盘组上创建ASM实例。
安装完Oracle Restart,你能在系统上看到如下的资源列表:
你可以看到,ASM磁盘组是资源的一部分,可以用来更方便地挂载和卸载。磁盘组在第一次挂载后会自动注册,不需要修改asm_diskgroups初始化参数。
当配置了Oracle Restart后,你可以像RAC中一样添加数据库,但有一个重大的不同:不需要注册任何实例。数据库可以通过它们相关的磁盘组来配置,创建依赖性:如果数据库启动的时候磁盘组还没有被挂载,Oracle Restart将首先重试挂载磁盘组。
通过srvctl来定义服务,不要设置初始化参数service_names来制定数据库服务。
默认情况下,Oracle Restart不会实例化ONS。添加这个后台进程在结合使用Data Guard broker(它能发送FAN事件告诉客户端来进行failover)时很有帮助。FAN事件同样用于UP和DOWN事件中,但单实例Oracle高可用性的缺乏限制了这种方法的用途。
SCAN监听
单一客户端访问名称(SCAN)是一个新特性,用来简化对集群数据库的访问。在Oracle 11.2以前,tnsnames.ora文件里的多节点RAC数据库的条目中,总是在ADDRESS_LIST这一段中涉及所有节点,就像下面列出的一样:
添加和删除节点需要改变ADDRESS_LIST。在良好的集中管理的环境中,这可能问题不大;但是,在一些环境里,客户端分布在很多应用服务器上,这个操作就要花很长时间并且容易出错。SCAN地址的使用解决了这个问题——使用几个SCAN虚拟IP来代替所有节点IP。使用SCAN,上面的条目可以简化成以下方式(例中SCAN为scanqacluster.example1.com):
在安装或升级Grid Infrastructure的先决条件中,至少一个(最好是三个)未使用的与公共网络在同一个子网内的IP地址必须在DNS中分配和注册,或者,如果你使用了GNS,GNS后台进程将在DHCP服务器给出的地址范围内分配3个IP地址。DNS中使用robin fashion方式解析这些IP对应的SCAN名称,应该确保反向的查找也没有问题。OUI会创建一些新的实体,叫做SCAN listeners,和SCAN虚拟IP地址一起。SCAN listeners将注册到本地的数据库监听中。一个SCAN listener和一个SCAN虚拟IP地址组成一对资源,如果一个节点故障,它两将一起failover到另一个节点中。如果需要的话,可以使用服务器控制工具来管理SCAN监听和IP。
SCAN监听负责连接时的负载均衡,它们可以将连接放到负载最轻的那个节点上。下面是一张关系图
上图展示了SCAN的使用。假设有一个三层的应用架构和一个手动(非GNS)配置,换句话说,应用服务器代表用户连接到SCAN scanname.example.com中,然后联系DNS服务器来解析SCAN,DNS返回三个IP地址中的一个(这有助于将负载分摊到三个SCAN监听中),连接到的SCAN监听会将请求转发到负载最轻的节点的本地监听上,提供客户端请求的服务。到了这里,就与原来的客户端解析节点虚拟IP地址并创建连接没有什么不同。
SCAN地址的使用并不是强制的,如果你不希望连接到一个策略管理的数据库,可以继续使用以前的连接字符串。
转载:http://blog.sina.com.cn/s/blog_5fe8502601016atb.html