背景:
一般假如用Veritas Cluster Server for Solaris,就会用到VxVM,但是假如环境中没有VxVM(比如说我)但又要确保数据的安全,一般人都会想到Solstice Disksuite(SDS),他能够构建Raid,作为存储资源。在Cluster中,最根本的就是资源,Vcs本身附带了很多的agent,用来探测这些资源的可用性,但是对于存储,他只支持Disk,Disk-group连同Volumn等,他并不支持SDS,用SDS构建的逻辑驱动器部署在/dev/md/rdsk和/dev/md/dsk中,虽然他能够像一般磁盘相同被系统所访问,但vcs disk agent仅仅从/dev/rdsk/下搜索可用的物理设备,因此disk agent不能管理您的sds逻辑设备,即使您在/dev/rdsk/下建立了/dev/md/rdsk/dx的连接,也是不能够的,表面上看来,您的cluster能够启动工作了,当您的机器重新启动后,md(sds)的daemon会报错,系统宕机。您能做的就是每次启动前删除那些symbolink,启动后建立那些symbolink,这样太麻烦,而且也不符合Cluster的需要,因此需要我们来写关于sds的agent,幸好vcs提供了agent developer guide和vcsqs custom agent guide。对于双机环境(仅高可用),SDS也提供了相应的程式,在SDS里有个叫diskset,就是为共享SDS Raid逻辑驱动器而出现的。我们的想法是用SDS的agent来控制diskset的转换,来实现高可用的目的。
这里的VCS仅限于VCSQS-双机高可用软件,用他和Oracle连同SDS能够构建较经济的高可用方案, Oracle只用Workgroup版本即可,相对企业版便宜多了。但是此方案构建的数据库不能应付大规模的应用,一是性能不够(I/O问题),二是没有达到真正集群的目的(依然存在单点故障),只是没有办法的情况下不得已而为之,以下方法仅作为参考。
硬件环境:
Sun Fire 280Rx2(900,1G,36.4x1,ge,qfe),D1000(36.4x4)
Solaris 2/02,VCSQS 3.5,Oracle 9.2,Solstice Disksuite 4.2.1
1.连接线,D1000中间SCSI接口用自带的SCSI线短接,两边的SCSI接口通过SCSI线连接到280的SCSI卡(额外买的一个)的外接口上,两台机器的qfe0,1用568a-568b跳线连接,ge连接到交换机上。
2.修改其中一台280的SCSI init ID,在ok状态setenv scsi-initiator-id=5,就能够了。
3.打开阵列,打开两台机器,分别安装solaris,记得分区的时候在系统盘末尾留50M左右的空间,用来存metadb,装Oracle需要大点的swap,我用了2048M,两台机器装完,再安装software 2里的SDS,然后分别打补丁,Recommended和SDS的。
4.配置网络和rsh,rcp等,这些都是安装cluster基本的东西,网络就不用说了,rhost也简单,在/下建立.rhosts,写上对方机器的名字就好了,前提是双方都能够通过机器名访问对方。
5.两台机器都从系统盘里分出s7,大约10M左右,作为metadb,我的是c2t0d0s7。在阵列上的分别是:c1t0d0,c1t1d0,c1t8d0,c1t9d0。
6.创建metadb,在两台机器上分别执行:metadb -a -f -c3 /dev/dsk/c2t0d0s7,创建了metadb,能够用metadb查看。
7.创建meta diskset,一下步骤在其中的一台机器上运行即可,没有特别说明,都是在一台机器上执行,metaset -s storage -a -h dbserver1 dbserver2,这样创建了storage的diskset
8.将磁盘加入到diskset里,metaset -s storage -a c1t0d0 c1t1d0 c1t8d0 c1t9d0,能够用metaset查看storage的归属一次所包含的磁盘,应该能看到host,owner和driver等。此时假如您用format查看磁盘,您能够发现阵列上的磁盘已被SDS自动分区了,一个s0,一个s7,s7是storage的metadb,s0是可用的。能够用metadb -s storage查看diskset的metadb。
9.创建md,我做的是raid 0 1,所以用了一下命令
metainit -s storage d10 1 2 c1t0d0s0 c1t1d0s0
metainit -s storage d20 1 2 c1t8d0s0 c1t9d0s0
metainit -s storage d0 -m d10
metattach -s storage d0 d20
这样d0的阵列就做完了,系统自动同步,时间比较长大约2各小时左右。这个时候diskset就能够进行release和switch的操作了,但是不要在resync的时候执行转换操作,否则要重新resync,用metaresync -s storage d0进行重新resync。
10.同步完成后,能够newfs了,newfs /dev/md/storage/rdsk/d0,块设备在/dev/md/storage/dsk/d0上,能够mount在某一台机器上了。此时的storage只能够挂靠一台机器,在mount前先看看属于哪个机器,metaset -s storage,看owner是谁,谁才能够mount。假如要挂靠另一台机器,先umount,用metaset -s storage -r释放磁盘资源,另一台机器能够用metaset -s storage -t获得磁盘资源,然后才能够mount,是不是比较麻烦,这些动作都无需您手工来完成,待会的VCSQS会做。
11.假设我们把storage mount在了dbserver1的/share(dbserver2上也要建立这个目录)上了,mount /dev/md/storage/dsk/d0 /share,我们能够安装Oracle了,这个也不多说,建立Oracle用户,将Oracle用户的home放到/export/home/oracle里,只要在本机磁盘上就能够了,哪儿无所谓。配置环境变量,将$ORACLE_HOME放到/share里,两台机器完全相同的变量,也没有什么特别的,安装Oracle,将任何的文档安装到/share下,也就是磁盘阵列上,注意最后运行root.sh的时候提示oraenv的路径,记得改到/share的某个目录就能够,不要放到/usr/local/bin里。至于那个oratab,本来是放到/etc下的,那就放那儿吧,反正也用不到,假如您不放心,您能够copy一份到对方机器上,但是我觉得奇怪的是,我安装的Oracle居然没有。建立的数据库也要放到/share,不要创建spfile。
12.在安装的那个机器上关闭Oracle,以oracle身份:sqlplus "/ as sysdba";sql>shutdown,然后以root身份:umount /share,metaset -s storage -r,在另一个机器上以root身份:metaset -s storage -t,mount /dev/md/storage/dsk/d0 /share,然后以oracle身份:sqlplus "/ as sysdba";sql>startup,假如上面的操作没有问题,那么您应该能够启动您的oracle了。
13.安装VCSQS,这个似乎以前有个帖子也说了,比较简单,确保rsh能用就能够了,能做到这一步,我想您的rsh早就能够用了,任意一台机器上放上光盘,自动会mount,installvcs就能够了,其中会问几个啥问题,比如什么ip,hostname,clustername,license什么的,想好了自己添。安装文档光盘里有,比较简单。安装顺利完成后,您能够通过一个漂浮IP(安装vcsqs的时候让您添的,一般是您的公用网络的网卡的一个additional ip,我的dbserver1上ge0的ip是172.16.1.2,dbserver2上ge0的ip是172.16.1.3,我把172.16.1.4作为漂浮IP)的http://IP:8181/vcsqs来访问您的cluster,但是现在那里面啥都没有,因为您还没有添加资源组。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




