在 RHEL 5.5 下应用 RHCS 实现 Oracle HA
By Robin On 2011年10月16日 · Leave a Comment · In Database, Network, 信息世界 | IT
由于前段时间一直在准备 OCP 的认证考试,所以领导十分 nice 的一直没有给我分配复杂的工作。原先安排的搭建 Oracle HA 环境的实验任务也允许我考完试后再做,国庆假日回来我终于有时间把这部分任务完成了。由于之前在相同的机器上做过 Oracle RAC 的实验,所以卸载的过程中对 CRS 组件没有彻底删除,所以导致我走了不少的弯路,还把机器弄挂一次,为此我还特意跑去 IDC 重装了一次系统。嘿嘿,不抱怨了,至少 HA 环境成功的搭建了起来,结果还是令人满意的。(#^_^#)
下面我来详细介绍一下具体的配置过程:
1. 网络配置
具体的网络配置过程我就不在这里罗嗦了,基本跟 Oracle RAC 相同,每个节点两个网卡其中一个做心跳线。两个节点的 /etc/hosts 配置文件内容一致,内容如下:
# Do not remove the following line, or various programs# that require network functionality will fail.127.0.0.1 localhost.localdomain localhost10.10.6.203 testrac1192.168.122.101 testrac1-priv
10.10.6.207 testrac2192.168.122.102 testrac2-priv
10.10.6.208 testHA
2. 存储配置
在 MSA2312fc 控制界面下划分一个 150G 的空间给两个节点,然后解决多路径问题并进行分区和格式化操作。具体的操作请参见这篇文章。
3.安装和配置 RHCS
RHEL 5.5 的安装光盘镜像中包含了安装 RHCS 所有需要的安装包,配置 yum 安装源,然后进行安装。在每个节点上都执行如下操作:
[root@testrac1 ~]# vi /etc/yum.repos.d/aeon.repo[Server]name=Serverbaseurl=file:///redhat/Serverenabled=1gpgcheck=0gpgkey=
[Cluster]name=Clusterbaseurl=file:///redhat/Clusterenabled=1gpgcheck=0gpgkey=
[ClusterStorage]name=ClusterStoragebaseurl=file:///redhat/ClusterStorageenabled=1gpgcheck=0gpgkey=
[VT]name=VTbaseurl=file:///redhat/VTenabled=1gpgcheck=0gpgkey=
[root@testrac1 ~]#
[root@testrac1 /]# cd media/[root@testrac1 media]# mount -o loop RHEL_5.5_X86_64.iso /redhat
[root@testrac1 media]# yum clean allLoaded plugins: rhnplugin, securityCleaning up Everything[root@testrac1 media]#
[root@testrac1 media]# yum groupinstall ClusteringLoaded plugins: rhnplugin, securityThis system is not registered with RHN.RHN support will be disabled.Setting up Group ProcessResolving Dependencies
... ...
Installed:Cluster_Administration-en-US.noarch 0:5.2-1 cluster-cim.x86_64 0:0.12.1-2.el5 cluster-snmp.x86_64 0:0.12.1-2.el5ipvsadm.x86_64 0:1.24-10 luci.x86_64 0:0.12.2-12.el5 modcluster.x86_64 0:0.12.1-2.el5piranha.x86_64 0:0.8.4-16.el5 rgmanager.x86_64 0:2.0.52-6.el5 ricci.x86_64 0:0.12.2-12.el5system-config-cluster.noarch 0:1.0.57-3
Dependency Installed:cman.x86_64 0:2.0.115-34.el5 httpd.x86_64 0:2.2.3-43.el5 net-snmp.x86_64 1:5.3.2.2-9.el5oddjob.x86_64 0:0.27-9.el5 oddjob-libs.x86_64 0:0.27-9.el5 openais.x86_64 0:0.80.6-16.el5perl-Net-Telnet.noarch 0:3.03-5 perl-XML-LibXML.x86_64 0:1.58-6 perl-XML-LibXML-Common.x86_64 0:0.13-8.2.2perl-XML-NamespaceSupport.noarch 0:1.09-1.2.1 perl-XML-SAX.noarch 0:0.14-8 pexpect.noarch 0:2.3-3.el5php.x86_64 0:5.1.6-27.el5 php-cli.x86_64 0:5.1.6-27.el5 php-common.x86_64 0:5.1.6-27.el5python-imaging.x86_64 0:1.1.5-5.el5 tix.x86_64 1:8.4.0-11.fc6 tkinter.x86_64 0:2.4.3-27.el5tog-pegasus.x86_64 2:2.9.1-2.el5
Complete![root@testrac1 media]#
[root@testrac1 media]# chkconfig --add cman[root@testrac1 media]# chkconfig --add rgmanager
[root@testrac1 media]# chkconfig cman on[root@testrac1 media]# chkconfig rgmanager on
在节点1的图形界面下打开 system-config-cluster 工具进行相应的 RHCS 配置,依次执行如下操作:创建 cluster ,添加节点,配置 fence 设备(如果没有可以不设置),创建故障域,田间节点到故障域,添加三种资源,创建服务(通过服务把故障域和资源整合在一起),请注意添加资源顺序,首先是文件系统,然后是 IP 资源,最后是脚本资源。保存配置文件,并把该配置文件复制到节点2的相同目录下。具体的 /etc/cluster/cluster.conf 配置内容如下:
4.安装 Oracle (无实例)
在两个节点上分别安装 Oracle 软件,具体的安装过程我请参考这篇文章。
两个节点上的 oracle 用户的 ORACLE 相关环境变量设置如下:
ORACLE_BASE=/oracleORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1ORACLE_SID=hatest
5.启动 RHCS 集群
首先我们需要启动 RHCS 集群,需要说明的是,RHCS 集群的启动顺序是在各个节点上依次启动 cman 和 rgmanager 服务,如果想关闭 RHCS 集群,那么请在各个节点上依次关闭 rgmanager 和 cman 服务,顺序是相反的。集群启动成功后,需要把资源转移到节点1上去。具体操作如下:
[root@testrac1 media]# service cman startStarting cluster:Loading modules... doneMounting configfs... doneStarting ccsd... doneStarting cman... doneStarting daemons... doneStarting fencing... done[ OK ][root@testrac1 media]# service rgmanager startStarting Cluster Service Manager: [ OK ][root@testrac1 media]#
[root@testrac2 ~]# service cman startStarting cluster:Loading modules... doneMounting configfs... doneStarting ccsd... doneStarting cman... doneStarting daemons... doneStarting fencing... done[ OK ][root@testrac2 ~]# service rgmanager startStarting Cluster Service Manager: [ OK ][root@testrac1 media]#
[root@testrac1 media]# clustatCluster Status for OracleHA @ Mon Oct 10 17:31:24 2011Member Status: Quorate
Member Name ID Status------ ---- ---- ------testrac1-priv 1 Online, Local, rgmanagertestrac2-priv 2 Online, rgmanager
Service Name Owner (Last) State------- ---- ----- ------ -----service:OracleHA_Service testrac2-priv started[root@testrac1 media]#[root@testrac1 media]# clusvcadm -r OracleHA_Service -m testrac1-privTrying to relocate service:OracleHA_Service to testrac1-priv...Successservice:OracleHA_Service is now running on testrac1-priv[root@testrac1 media]#[root@testrac1 media]# clustatCluster Status for OracleHA @ Mon Oct 10 17:32:05 2011Member Status: Quorate
Member Name ID Status------ ---- ---- ------testrac1-priv 1 Online, Local, rgmanagertestrac2-priv 2 Online, rgmanager
Service Name Owner (Last) State------- ---- ----- ------ -----service:OracleHA_Service testrac1-priv started[root@testrac1 media]#
6.安装 Oracle 实例
由于我们把 Oracle HA 环境的实例安装到共享存储上,所以我们只需要在节点1上安装实例到共享存储上即可。首先,查看共享存储是否通过 RHCS 集群挂载到 /oradata 目录下:
[root@testrac1 ~]# mount/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)devpts on /dev/pts type devpts (rw,gid=5,mode=620)/dev/cciss/c0d0p1 on /boot type ext3 (rw)tmpfs on /dev/shm type tmpfs (rw)/media/RHEL_5.5_X86_64.iso on /redhat type iso9660 (rw,loop=/dev/loop0)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)none on /sys/kernel/config type configfs (rw)/dev/mapper/mpath0p1 on /oradata type ext3 (rw)
修改目录 /oradata 的权限:
[root@testrac1 ~]# chown oracle:oinstall /oradata
在节点1的图形界面下使用 dbca 安装实例到 /oradata 目录下,其中需要说明的是在 Step 8 中,请勾选 “Enable Archiving” 选项,并把归档日志的默认目录设置为共享存储下,比如 “/oradata/archs” 目录。在Step 11和12中请把 Controlfile,Datafiles 和 Redolog 的默认路径都设置到共享存储的 /oradata 的相关目录下。
7.创建监听器
在两个节点上的图形界面下分别运行 netca 创建监听器,如下内容是节点1上的监听器配置文件 listener.ora 的文件内容:
[root@testrac1 oracle]# cat /oracle/product/10.2.0/db_1/network/admin/listener.ora# listener.ora Network Configuration File: /oracle/product/10.2.0/db_1/network/admin/listener.ora# Generated by Oracle configuration tools.
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = /oracle/product/10.2.0/db_1)(PROGRAM = extproc)))
LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = testrac1)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))))
[root@testrac1 oracle]#
8.同步相关配置文件
首先,复制密码文件和参数文件到节点2,过程如下:
[oracle@testrac1 ~]$ cd /oracle/product/10.2.0/db_1/dbs/[oracle@testrac1 dbs]$ lshc_hatest.dat initdw.ora init.ora lkHATEST orapwhatest spfilehatest.ora[oracle@testrac1 dbs]$ scp orapwhatest oracle@10.10.6.207:/oracle/product/10.2.0/db_1/dbs/oracle@10.10.6.207's password:orapwhatest 100% 1536 1.5KB/s 00:00[oracle@testrac1 dbs]$ scp spfilehatest.ora oracle@10.10.6.207:/oracle/product/10.2.0/db_1/dbs/oracle@10.10.6.207's password:spfilehatest.ora 100% 2560 2.5KB/s 00:00[oracle@testrac1 dbs]$
其次,创建 Oracle 在节点2启动需要的目录,过程如下:
[oracle@testrac2 ~]$ mkdir -p /oracle/admin/hatest/{adump,bdump,cdump,dpdump,pfile,udump}[oracle@testrac2 ~]$
最后,确保相关目录的权限是正确的,过程如下:
[root@testrac2 ~]# chown -R oracle:oinstall /oracle
9.编写 Oracle 相关的 RHCS 脚本
这里需要说明一下,之前在 system-config-cluter 里配置添加的脚本资源,请先不要添加到 OracleHA_Service 服务中,因为该脚本资源我们还没有编写和安装。也就是说刚安装 Oracle 实例时启动的 RHCS 集群提供服务中的不包括脚本脚本。现在,我们编写 RHCS 脚本,由于具体的内容,请参考这篇文章。编写完成后,拷贝该脚本文件 dbora 到两个节点的 /etc/init.d/ 目录中去。最后,我们需要添加该脚本资源到 OracleHA_Service 服务中,保存配置文件 cluster.conf ,并发送到 RHCS 集群的所有节点中去,重启 RHCS 集群。至此,配置完毕。
10.测试
由于篇幅的问题,我就不在这里把详细的测试过程贴出来了,说说测试思路吧,主要是针对 RHCS 集群提供三种资源进行测试,IP 资源你在其他机器上 ping 一下就好,文件系统资源需要在各个节点上运行 mount 命令看看是否挂载成功,而 Oracle 数据库则需要用 sqlplus 连接看是否正常访问。如果这些都成功的话,则进行节点服务的切换,再进行测试。注意:文件系统资源只能在生效的节点上挂载,而 Oracle 实例和监听器也只能在生效的节点上运行。如果对 RHCS 集群的管理不是很熟悉,请参考这篇文章。
本文来源:https://www.2haoxitong.net/k/doc/edda01dd7f1922791688e8c3.html
文档为doc格式