吴丽杰,张 婷,张璐璐
(安徽粮食工程职业学院,合肥 230011)
在教育领域,信息技术及其广泛应用正在引发人类历史上教育的第四次革命[1]。随着信息技术的不断发展,信息系统服务的可持续性、系统的高可用性成为衡量一个企业服务能力的重要标准,作为后台支撑的数据库系统其作用更不容忽视.如何提供高可用性、高性能以及灵活的数据库应用系统,成为各数据库厂商、集成厂商致力解决的问题,Oracle Real Application Clusters(RAC)就是其中一种优秀的解决方案[2-3]。
Oracle是计算机软件专业一门重要课程,但由于Oracle RAC很难部署,很多出校门的高校学生都没有Oracle RAC的部署经验,对Oracle RAC中若干特性及用法不甚了解。
利用Oracle VM模板则可以快速部署Oracle RAC。讨论了基于Oracle VM模板的Oracle RAC部署在教学及项目实践过程中的重要步骤及快速部署要点。
Oracle RAC是备受赞誉的 Oracle Database 企业版的一个选件。Oracle RAC 是一个具有共享缓存架构的集群数据库,它克服了传统的不共享和共享磁盘方法的限制,为所有的业务应用程序提供了具有高度可扩展性和可用性的数据库解决方案。Oracle RAC 是 Oracle 私有云架构的关键组成部分[4]。
Oracle RAC是一种使得多个服务器能同时共享对某个单一数据库的实时访问,从而获取更高的可用性、最灵活的可伸缩性以及经济型的系统架构。RAC节点之间通过私有高速网络进行通信,所有的控制文件、联机日志和数据文件存放在共享的存储设备上,能够被集群中的所有节点同时读写[5]。3节点Oracle RAC的体系框架如图1所示[6]:
图1 3节点Oracle RAC的体系框架图
图1显示了3台服务器作为Oracle RAC的3个节点,每个节点都是相对独立的。节点间可以通过各自的通讯层在无人工干预的情况下实现互联互通,从而实现故障保护、缓存融合和负载均衡。所有的节点共享一个数据库,在数据库中除了数据文件,还有控制文件、日志文件等内容。由此可见,Oracle RAC是所有的节点共享磁盘的体系架构。在RAC环境下,所有节点可以同时在同一个数据库上并发处理事务,RAC协调各个节点,把大的事务分解为多个小事务,分发给不同的节点执行,并保证每个节点访问共享数据的完整性和一致性[6]。
Oracle RAC本质上是一个高度可用的系统。与传统单一数据库服务器相比,Oracle RAC解决了单一数据库昂贵的和不灵活变化的能力和资源需求。Oracle RAC通过连接多个集群计算机,提供整体系统的冗余、可伸缩性和高可用性。通过Oracle RAC体系,可以满足日益增长的数据处理需求并且不用改变应用程序。N个节点的Oracle RAC集群可允许n-1个节点故障而不影响系统服务,且Oracle RAC体系允许维护集群中若干节点但保持其他节点继续提供服务,从而减少整体系统的停机时间。
手工部署Oracle RAC大概包括几个步骤:操作系统、存储、网络的准备,包括操作系统升级补丁到满足Oracle的版本、存储的设置、所有安装文件拷贝到所有节点上、每个节点的主机名及网络的配置、用户组及安装目录的配置等;Oracle Clusterware、ASM等Oracle Grid集群基础架构的安装及相应补丁的升级、用户环境变量、操作系统参数等参数的调整等;Oracle RAC的安装,包括安装Oracle RAC、打补丁、安装后的调试等。
由此可见,手工部署Oracle RAC,除了需要安装Oracle Grid集群基础架构,针对操作系统、共享磁盘进行参数配置外,还需要进行繁琐的系统依赖包的安装及打补丁等。总体来说面临下面的挑战[7]:
挑战1:Oracle RAC相关的操作系统、数据库系统打补丁会耗时十几个小时并且难以管理;
挑战2:安装过程中容易遗漏一些关键步骤和关键文件的下载安装,导致安装失败并重复一些安装过程;
挑战3:网络或存储等方面在配置过程中容易犯错。
Oracle VM模板(又称为 Oracle VM虚拟软件设备)提供了一种通过提供预安装和预配置的软件映像来部署完全配置的软件体系的创新方法。使用 Oracle VM 模板可消除安装和配置成本,并可减少持续维护成本。目前,Oracle公司提供许多关键 Oracle 产品的 Oracle VM 模板,包括 Oracle Linux、Oracle Solaris、Oracle Database、Fusion Middleware 等[8]。
面向Oracle集群的Oracle VM 模板为在Oracle VM上部署单实例或集群数据库提供了一种快速和容易的方法。用户仅需要提供很少量的信息(如节点名、IP 地址等)就可以建立N个节点的集群,并且整个安装过程是自动进行的。通过Oracle VM模板,只需一条命令即可在集群中添加或删除任意数量的节点或实例,支持Oracle Flex 集群和 Flex ASM等[4]。
Oracle RAC模板由Oracle公司提前将需要的操作系统及其他补丁全部打上,相关参数配置信息配置完整,因此可以大幅度提高部署成功率。由于Oracle RAC所有节点的配置信息是一致的,使用RAC模板能够保证部署的完整性。Oracle VM和Oracle RAC相结合,可保障系统出现硬件和软件故障时业务系统的连续可用性。与目前市场上通过VMware等厂商提供的虚拟化数据库所获得的可用性相比,Oracle RAC模板的可用性要高得多。
因此,使用Oracle RAC模板解决了手工部署Oracle RAC的3个挑战。
使用 Oracle VM 模板可消除安装和配置成本。由第三方评估组织做出的实验表明,在实际生产环境中,2个以上节点的RAC环境使用RAC模板可以极大提升工作效率,并降低经济成本[7],如图2所示,
图2 部署2节点Oracle RAC 12c 时间比较
利用Oracle VM模板,快速部署3节点Oracle RAC 12c,部署阶段主要包括如下几个要点[9]:
宿主机网卡接口为eth0,IP地址为:192.168.56.1,基本配置如下:64位 Windows Server 2008 R2 Enterprise+ Intel E5620 2.4Ghz(16核)+16 GB内存+600 GB。
SCSI硬盘。整个Oracle RAC环境部署在Oracle VM VirtualBox虚拟机上。虚拟机上分别部署Oracle VM Manger服务器(OS:Oracle Linux 6 Update 7 X86-64位,IP:192.168.56.30,CPU:2vCPU,内存:4 GB,存储:45 GB)和Oracle VM Server服务器(OS:Oracle VM Server 3.3.3 X86-64位,IP:192.168.56.20,CPU:2 vCPU,内存:1 0GB,存储:115 GB)。系统通过Oracle VM Manager来管理Oracle VM Server,并在Oracle VM Server上部署3个RAC节点和ASM管理的共享磁盘。私有网络和ASM网络网卡接口分别为eth1和eth2,节点1和节点2作为Hub Node角色,节点3作为Leaf Node角色,具体部署图如图3所示。
图3 Oracle RAC部署图
Fig.3 The deployment diagram of Oracle RAC
首先安装Oracle VM VirtualBox,采用的是VirtualBox-5.2.6版本。VirtualBox是Oracle公司的一款开源虚拟机软件,文章中网络(Host-Only网络)地址配置为宿主机IP地址:192.168.56.1。
导入Oracle VM Manager(ovmm10471.oow.local.ova)及Oracle VM Server(ovs10471.oow.local.ova)模板。从VirtualBox虚拟机启动Oracle VM Manager及Oracle VM Server服务。启动后,在宿主机上通过ping 192.168.56.30(Oracle VM Manager)和ping 192.168.546.20(Oracle VM Server),判断是否安装成功。
宿主机上启动浏览器访问Oracle VM Manager控制台(https://192.168.56.30:7002/ovm/console),在Oracle VM Server的物理磁盘上创建存储资源(命名为repo01),如图4所示。
存储资源repo01上,包含了Oracle RAC 12c模板(OVM_OL6U6_X86_64_12102DB RAC_PVM)。通过创建新虚拟机向导,利用Oracle RAC 12c模板克隆并配置3个RAC节点,如图5所示。
图4 创建存储资源
Fig.4 Create storage repository
图5 克隆并配置3个RAC节点
Fig.5 Clone and configure 3 RAC nodes
使用ASM管理共享磁盘,并使用Oracle VM CLI命令来自动化执行相关创建任务。
通过SSH登录Oracle VM Manger,使用VirtualDisk CLI命令创建1个共享磁盘,create VirtualDisk name=racasm1 size=5 sparse=no shareable=yes on Repository name=repo01,如图6所示。
图6 创建共享磁盘
Fig.6 Creating shared disk
映射共享盘到2个Hub Node节点,Leaf Node不需要访问共享盘。映射共享盘到节点1(create vmDiskMapping name=racasm1 slot=2 virtualDisk=racasm1 on vm name=racnode0.1),映射共享盘到节点2(create vmDiskMapping name=racasm1 slot=2 virtualDisk=racasm1 on vm name=racnode0.2),如图7所示。
图7 映射共享盘到2个Hub Node节点
Fig.7 Mapping shared disk to 2 Hub Nodes
通过访问Oracle VM Manager控制台,在2个RAC节点磁盘属性界面,检查共享盘(racasm1)是否分配成功。
通过SSH登录Oracle VM Manger,根据图3所示Oracle RAC部署图,检查或修改部署参数(/root/deploycluster3/ utils/netconfig12cRAC3node.ini),主要包括:3个节点的Private、Public IP地址及名称、3个私有心跳IP地址、Scan IP地址及名称,如表1所示。文章部署参数启用Oracle 12c的新特性,即Flex Cluster、Flex ASM。
通过Oracle VM Manager提供的Deploy
Cluster tool部署脚本(/root/deploycluster3),利用Oracle VM 3 API及VM,即可将其快速启动并发送所需配置细节,然后开始自动构建RAC集群。先以预检模式运行脚本,如发现错误,根据提示信息修正,见表1。
表1 RAC部署信息
Table.1 RAC deployment information
配置项节点1节点2节点3节点名称racnode01 hracnode02 hracnode0 3 hPublic IP192.168.56.120192.168.56.121192.168.56.122VIP192.168.56.230192.168.56.231192.168.56.232Private IP10.10.10.23010.10.10.23110.10.10.232Scan IP192.168.56.235192.168.56.235192.168.56.235
正式运行DEPLOYCLUSTER.PY脚本,./deploycluster.py -u admin -p Welcome1 -H localhost --vms racnode0.? -N utils/netconfig 12cRAC3node.ini -P utils/params12c.ini。部署过程中,先启动3个RAC节点,进行网络和相关参数的配置,再进行集群服务的启动等,如图8所示。
图8 运行RAC部署脚本
Fig.8 Running RAC deployment script
通过访问Oracle VM Manger控制台,检查3个节点的运行状态是否为“running”,如图9所示:
登录RAC节点,通过crsstat-t命令查看ASM监听、ONS、GNS等集群资源是否启动,以确认Oracle RAC是否部署成功,如图10所示。
图9 确认RAC节点运行状态
Fig.9 Confirm the running status of the RAC nodes
图10 确认RAC是否部署成功
Fig.10 Verify whether the RAC deployment is successful
讨论了基于Oracle VM 模板的Oracle RAC部署的若干要点及重要步骤。部署过程中,利用部署脚本仅仅5 min左右完成了RAC部署。VirtualBox虚拟机上导入Oracle VM Manager及Oracle VM Server模板也仅耗时30 min左右,可见利用Oracle VM模板能极大提高部署效率及成功率。
虽然Oracle公司官方认为Oracle VM是最佳部署Oracle数据库的平台[10],但项目实践表明使用Oracle VM模板部署RAC有如下缺点:RAC系统的稳定性需要进一步在实际生产环境中检验;部署的宿主机内存要求较高,不然RAC节点启动不了。但此种基于Oracle VM模板的Oracle RAC快速部署方式省去了通常需要耗时长达10几个小时且复杂的Oracle Grid集群基础架构安装及繁琐的系统依赖包的安装及打补丁等,非常适合在高校教学环境中使用,用以提高学生对Oracle RAC集群环境的理解及RMAN备份、ASM实例配置、RAC新节点加入等操作的实践能力。