Kingredfly 2959550727@qq.com 

前言
一直说搞ORACLE RAC历经快一个月总算对RAC安装配置的各个细节有了深刻理解,想说的很多,感情高度上的扯淡就算了,主要整理一下RAC在虚拟机(相对物理服务器更简单)环境下的OEL 7平台的搭建过程。既然一下为自己观点,那么将不会从大而全的观点出发,基本记述内容为自己感想即可。

一、RAC简介
RAC(Oracle Real Application Cluster),我觉得应该是一种全活应用的集群,和RHCS的集群的最终表象应用一样。不过RAC是ORACLE自己专门针对数据库设计的一套高可用集群方案(不是具体技术或软件)。使用grid(ORACLE 12c)实现集群之间成员状态通知和服务管理;使用共享存储来存储永久性数据保持各节点数据一致性;使用cache fusion(重要)缓存融合技术保证各节点实例读写操作同一个数据库后各节点保持统一的数据源。

二、需求与应用场景
节点1:DB1、DB2 节点2:DB1、DB2

对外服务地址:scan-ip1、scan-ip2(使用DNS解析时才能实现配置最多三个scan name),使用hosts文件做scan name解析时只能配置一个scan name,不知道为什么,只是官网上这样speak。

假设使用dns解析scan name:

正常情况下:app1—scan-name1–节点1(vip1)—DB1

app2—scan-name2–节点2(vip2)—DB2

当app1或者app2应用所在节点任意一台服务器故障或者服务故障后:

(app1、app2)–(scan-name1对应vip1—DB1、scan-name2对应vip2—DB2)

在两个节点上的VIP都是存在的切VIP具有漂移的特性。这样就保证了正常时各自坚守岗位,异常时互相接管服务。然后本章配置只使用host方式解析scan name,达到效果为双机提供高可用服务,即一个app使用两个节点做主备,当然如果你觉得浪费可在备机上进行读、主机上进行写,达到读写分离,至于缺点也是有的,自己体会。

三、安装准备与总体步骤
1、安装准备
系统平台:VMWare workstation 12c安装OEL 7系统

软件:oracle database 12c、grid(低版本的叫做clusterware)、asm相关工具包

2、总体步骤
2.1、系统安装
2.2、hosts文件配置
2.3、内核参数配置
2.4、Oracle asm工具安装
2.6、设置shell对Oracle用户限制
2.7、配置hangcheck-timer内核模块
2.8、系统安全设置
2.9、创建oracle用户与组
2.9、oracle用户环境变量设置
2.10、克隆虚拟机修改必要参数
2.11、建立ssh互信
2.12、配置共享存储
2.13、安装条件检测

四、具体安装配置步骤
1、系统安装
配置多网卡,心跳网络(用于集群间通信私有网络),服务网络(用于向外部提供服务的网络),存储网络(用于连接存储的网络,如iSCSI)。物理服务器建议心跳、服务、存储三组网络都设置bond。

2、hosts文件配置
配置文件中主要用于解析scan name,官网上解释说使用hosts解析时,实际应用中只能使用一个scan name。下面为hosts配置实例,两个节点配置相同。

192.168.1.2 oelmaster

192.168.2.2 oelmaster-pri

192.168.1.101 oelvip1

192.168.1.3 oelslave

192.168.2.3 oelslave-pri

192.168.1.102 oelvip2

192.168.1.254 oel-scan

3、内核参数配置
内核配置参数主要配置/etc/sysctl.conf,根据实际的系统资源可能各不相同,我使用的(OEL7 -4cores-8G-70G ),配置实例如下:

kernel.sem = 250 32000 100 128

kernel.shmmax = 4045199360

kernel.shmmni = 4096

kernel.shmall = 790078

fs.file-max = 6815744

net.ipv4.ip_local_port_range = 9000 65535

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

fs.aio-max-nr = 1048576

kernel.panic_on_oops = 1

4、Oracle asm工具安装
asm工具主要包括oracleasm、oracleasmlib、oracleasm-support,貌似有时候(如rhel)需要oracleasm-kmod内核模块。建议从官网下载工具包,系统对工具包安装顺序有一定要求,安装时根据提示可以方便快速区分。

asm工具包主要是使用oracle自动存储管理需要这些工具包支持。当然也可以使用裸设备进行存储。而本文选择asm存储,不使用共享文件系统、裸设备。

6、创建oracle用户与组
groupadd –g oinstall

useradd –g oinstall oracle

passwd oracle

7、设置shell对Oracle用户限制
配置/etc/security/limits.conf对oracle用户能够占用的系统资源进行限制,保证系统资源的合理分配。配置实例如下:

oracle soft nproc 65536

oracle hard nproc 65535

oracle soft nofile 4096

oracle hard nofile 65536

8、系统安全设置
强烈建议先关闭防火墙和selinux,安装完成后再逐步完善,避免安装配置过程出现不必要问题。

9、配置hangcheck-timer内核模块
可不配置,但由于hangcheck-timer提供更加提精确的时间度量建议配置一下

a、在/etc/modprobe.conf中配置

options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

b、加入开机启动

9、oracle用户环境变量设置
网上众说纷纭,说需要grid、oracle两个账户,我只使用了一个oracle账户,不过在管理过程中有时候grid和oracle环境切换的确存在。双节点中主节点配置实例如下:

(1)配置文件.bash_profile添加如下内容

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_HOMENAME=oelmaster

export ORACLE_UNQNAME=RAC

export ORACLE_BASE=/u01/app/oracle

export GRID_HOME=/u01/app/12c/grid

export DB_HOME=$ORACLE_BASE/product/12c/db_1

export ORACLE_HOME=$DB_HOME

export ORACLE_SID=master 不同节点不同也可以不写

export BASE_PATH=/usr/sbin:$PATH

export PATH=/u01/app/oracle/product/12c/db_1/bin:/u01/app/12c/grid/bin:$BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH= ORACLEHOME/JRE: ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

alias grid_env=’. /home/oracle/grid_env’

alias db_env=’. /home/oracle/db_env’

(2)新建grid_env文件配置如下:

export ORACLE_SID=+ASM1不同节点不同+ASM2

export ORACLE_HOME=$GRID_HOME

export PATH= ORACLEHOME/bin: BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH= ORACLEHOME/JRE: ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

(3)新建db_env文件配置如下:

export ORACLE_SID=master

export ORACLE_HOME=$DB_HOME

export PATH= ORACLEHOME/bin: BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH= ORACLEHOME/JRE: ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

10、克隆虚拟机修改必要参数
以上如果在虚拟机上配置,则可以现在单机上完成以上配置,然后克隆虚拟机。修改主机名、IP、oracle环境变量(ORACLE_SID)

11、建立ssh互信
建立ssh互信主要是为了在一个节点上安装配置时能够自动同步到其他节点,当然也可以自己加入到集群中(没有搞但是可以)。

12、配置共享存储
我使用的是VMWARE workstation,创建和挂载共享存储。

a、使用vmware命令创建需要的存储磁盘

b、共享磁盘设置,在虚拟机的配置文件中(本实例oelmaster.vmx添加)

diskLib.dataCacheMaxSize=0

diskLib.dataCacheMaxReadAheadSize=0

diskLib.dataCacheMinReadAheadSize=0

diskLib.dataCachePageSize=4096

diskLib.maxUnsyncedWrites = “0”

disk.locking = “FALSE”

scsi0.sharedBus = “virtual”

以上很重要,不然共享磁盘容易出现问题导致安装失败,物理服务器iSCSI可不考虑,这主要针对虚拟机虚拟磁盘。

scsi0:1.present = “TRUE”

scsi0:2.present = “TRUE”

scsi0:3.present = “TRUE”

scsi0:4.present = “TRUE”

scsi0:5.present = “TRUE”

scsi0:6.present = “TRUE”

scsi0:8.present = “TRUE”

scsi0:1.fileName = “E:\VMWareDisks\shareDisks\vmdisk5g-01.vmdk”

scsi0:2.fileName = “E:\VMWareDisks\shareDisks\vmdisk5g-02.vmdk”

scsi0:3.fileName = “E:\VMWareDisks\shareDisks\vmdisk5g-03.vmdk”

scsi0:4.fileName = “E:\VMWareDisks\shareDisks\vmdisk5g-04.vmdk”

scsi0:5.fileName = “E:\VMWareDisks\shareDisks\vmdisk20g-01.vmdk”

scsi0:6.fileName = “E:\VMWareDisks\shareDisks\vmdisk20g-02.vmdk”

scsi0:8.fileName = “E:\VMWareDisks\shareDisks\vmdisk20g-03.vmdk”

13、安装条件检测
到这里对前面的配置来一个大检查,如果检测通过就可以进行RAC的一系列安装过程了。

使用./runcluvfy.sh stage -pre crsinst -n oelmaster,oelslave -verbose 1>demo.txt将检测结果存入文本中方便进一步分析(一切与DNS或scan name相关的告警错误可以忽略,确保scan name可以ping通)。

五、双机测试
开始双机测试前需要说明:

1、ASM实例与ORACLE_SID实例不一样
+ASM1、+ASM2是asm用来管理自动管理存储的实例与database无关,如果需要进入ASM管理,命令行export ORACLE_SID=+ASM1可管理ASM。

2、ORACLE_SID与instance_name不一样
前者属于系统级别,后者是数据库变量,只有两者完全一样时才能“在命令行sqlplus启动并进入数据库”否则在WINNT或者Linux都会报错,linux显示not availabled。

3、连接测试
配置远程用户两个节点都可以看到,通过数据库名称(服务名称连接),任意关闭其中一个节点,重新发起连接执行相同任务不受影响。

六、续集内容
后续内容主要会说明备份恢复方案策略以及基本操作和实例,这些都是可以百度中迅速掌握的吗,故而有时间在慢慢搞吧。

最后附上一张来自网上的架构图,
引用地址http://blog.itpub.net/17997/viewspace-567570/
这里写图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐