网格即插即用帮助管理员来维护集群,以前增加或删除节点需要的一些手动操作的步骤现在可以由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)。下表给出这些地址和他们用途、默认名称及软件跟踪分析使用的详细信息的一个概述:
我们建议在/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)数据库的方式来使这些工作自动化。策略管理的数据库启动的节点的数量由服务器池的基数来配置;换句话说,如果你需要一个新的实例,你只要将一个新的节点分配到数据库的服务器池中,Oracle会执行剩下部分的工作。
结合服务器池,Grid Infrastructure引入另一个特性叫角色分离管理(Role Separated Management)。在共享环境中,管理员在管理他们各自的服务器池时受到限制。访问控制列表(Access Control Lists)被用来分配访问给资源。这里还引入了一个新的角色,叫集群管理员(cluster administrator)。默认情况下,Grid Infrastructure软件所有者"grid"和root用户是固定的集群管理员。可以新添加一些系统用户来作为集群管理员,每个用户拥有几个资源、类型和服务器池上的权限。职责的分离现在可以在集群级别中实现,请注意grid和root用户的权限很大。