vmware workstation 7+openfiler2.3+rhel 5.4+ocfs2+oracle 11g rac配置过程初步记录(第二阶段)
二、第二阶段:在完成两台机器预准备工作后,就进入第二阶段。我们需要把配置好的两个系统都启动起来了。先用ping测试一下连通性。1. 配置oracle用户的同等性(需使用oracle用户登陆)
在两台机器中都执行如下操作:
[oracle@rac1 ~]$ mkdir .ssh
[oracle@rac1 ~]$ chmod 700 .ssh
[oracle@rac1 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
29:88:60:b7:47:8f:32:d7:b6:cf:8a:6a:7f:d6:9b:1b oracle@rac1.test
然后,在rac1上,执行如下操作:
[oracle@rac1 .ssh]$ssh rac1 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
The authenticity of host 'rac1 (192.168.56.132)' can't be established.
RSA key fingerprint is e6:7e:fc:49:c0:32:d5:12:a6:3c:3b:92:c5:44:be:f6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'oracle1,192.168.162.138' (RSA) to the list of known hosts.
oracle@rac1 's password:
[oracle@oracle1 .ssh]$ssh rac2 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
oracle@rac1 's password:
[oracle@rac1 .ssh]$scp authorized_keys rac2:/home/oracle/.ssh/
然后到rac2上,把authorized_keys的权限也改为600.
最后以oracle用户在两个节点上分别执行如下操作:
$ssh rac1 date
$ssh rac2 date
$ssh rac1.test date
$ssh rac2.test date
$exec /usr/bin/ssh-agent $SHELL
$/usr/bin/ssh-add
注意:目录.ssh的权限一定要是700,而.ssh目录下的所有文件权限一定要是600,否则会出现Permission denied (publickey).的错误,这也是我花了一个晚上才解决的问题。
好了,先在两台机器之间oracle用户的同等性建立完成。发现了吗,ssh到对方机器时不再需要密码。
2、接下来就是重要的iscsi磁盘双机同时挂载,这个同时挂载是需要两机能互相通讯才能同时挂载。
(1) 这里需要用到ocfs2,所以要下载下来,如果是oracle redhat linux的话,则可能在操作系统光盘中找到。
OCFS2(Oracle Cluster File System 2)所需的核心包和工具包的下载地址为:
http://oss.oracle.com/projects/ocfs2/files/
http://oss.oracle.com/projects/ocfs2-tools/files/
切忌,核心包一定要装跟你系统相匹配的。我这里用的是RHEL5 。注意一定要ocfs2的版本一定要和内核版本相匹配。
[root@rac1 ~]# uname -r
2.6.18-8.el5xen
[root@rac1 opt]# ls -l
total 1576
-rw-r--r-- 1 root root 278783 Sep 22 21:48 ocfs2-2.6.18-8.el5xen-1.2.9-1.el5.i686.rpm
-rw-r--r-- 1 root root 169193 Sep 22 21:48 ocfs2console-1.2.7-1.el5.i386.rpm
-rw-r--r-- 1 root root 1144294 Sep 22 21:48 ocfs2-tools-1.2.7-1.el5.i386.rpm
直接用#rpm -Uvh * 安装就行了。
(2)连接上iscsi。
在rac1或者rac2上
用root权限执行:iscsiadm -m discovery -t sendtargets -p 10.0.0.140:3260
发现iscsi目标后
执行 iscsiadm -m node -l
注意:实际中发现,只要iscsiadm 命令发现iscsi目标后,这个目标就被保存起来了,以后启动的时候,只要iscsi服务启动,这个就能自动登录。也有可能是我之前已经将iscsi配置为自动启动,这个忘记了。
然后fdisk -l,可以看到,已经有个/dev/sdb了,用fdisk /dev/sdb进行分区。
下面的步骤是很拗口的哈,尽量执行就是了,这里我建议是分成两个区好点,就是执行两次fdisk /dev/sdb,partition number 分别输入的是第一次是1和第二次是2,至于容量,注意第一次的时候 last cylinder不要输入默认的,要输入你需要在第一个分区的容量,其他的容量给第二个分区,第二次的时候,除了partition number是2之外,其他的都默认。
[root@oracle1 ~]# fdisk /dev/sdb
The number of cylinders for this disk is set to 1044.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1): 回车
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044):回车
Using default value 1044
Command (m for help): p
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 1044 8385898+ 83 Linux
Command (m for help): w
The partition table has been
Calling ioctl() to re-read partition table.
Syncing disks.
这时候分区就做好了,由于我们做的是共享存储,所以另外一台机器上,不需要操作了。
(3)现在开始用ocfs2做集群了。
两个分区做好后
[root@oracle1 ~]ocfs2console
选择"Task"菜单下的format,更改volume label为ocfs(这个标记是随便的,自己看的懂就可以了),点击OK,格式化。
查看一下/etc/ocfs2/下是否有cluster.conf文件,把里面的内容清空;如果没有此文件,touch一个。
接下来,点击"Cluster"菜单下的Node Configuration,把两个节点都添加上,名字就是Hostname,即rac1.test和rac2.test。 IP部分添私网IP,即10.0.0.138 10.0.0.139。点击Apply保存,如果激活,就说明配置正确。点击node configuration下面的那个子菜单,Progagate Configuration。不出错误提示,就说明正确了。然后在另外一台机器上,检查/etc/ocfs2/cluster.conf文件是否存在,内容是否和另外一台机器一致。
以后把图放上来。
(4)后面的操作涉及,两个集群组件o2cb和ocfs2。
用ocfs2console格式化完成后,配置双机间通信。据我理解,o2cb主要是用于两机之间的通讯,其中最关键是heartbeat,而ocfs2 主要是挂载共享磁盘,两个组件相互协调,如果o2cb 没有成功设置心跳配置,那么ocfs2只能挂载一个,另外一个挂载的时候会提示错误。
首先执行:
在两台机器上都执行
/etc/init.d/o2cb configure
要求的值,全部采用默认值。修改完成后,/etc/init.d/o2cb restart。
然后检查下两台机器的o2cb和ocfs2服务状态
service o2cb status
service ocfs2 status
ocfs2的操作,相对简单点:service ocfs2 start service ocfs2 stop service ocfs2 restart
o2cb的操作,有好几个,要看status提取出来的状态来确定需要执行什么操作:/etc/init.d/o2cb load online service o2cb restart service o2cb start service o2cb stop
启动了ocfs2和o2cb后,开始挂载,挂载命令如下:
mount -t ocfs2 /dev/sdb1 /oracle/home
mount -t ocfs2 -o datavolume,nointr /dev/sdb2 /oracle/data (注释:datavolume表明这里存储数据,nointr表明不允许中断)
ocfs2一般没有问题,挂载不上主要还是考虑o2cb的问题。o2cb服务错误,一般主要是心跳问题上,就是两机的心跳没连接上,主要考虑三个原因:1、主机名和IP地址不符合,o2cb没通;2、防火墙没关;3、 /etc/init.d/o2cb configure的时候,两台机器的heartbeat dead threshold不一样,或者说是 /etc/init.d/o2cb configure后,没有重新启动o2cb,没有应用刚刚设定的配置。
我在试验中出现的就是防火墙没关,关闭之后就行了。
到这里,基本上,集群文件系统做完了,可以开始安装oracle了。