技术开发 频道

在OracleVM虚拟机上安装OracleClusterware11g

  【IT168 技术文档】

  很多用户都想了解Oracle RAC ,但是又缺少硬件条件来安装和了解RAC。这里我们应用Oracle VM,在XEN虚拟机上来实现安装。

  Oracle VM于2007年11月12日正式推出,目前最新的版本是2.1.1。它是一款基于开源Xen管理器的虚拟化软件,支持Oracle和非Oracle的应用程序。在OTN 上可以免费下载到相关资源。用户可以在OVM中通过多种方式快捷地创建虚拟机和虚拟磁盘。

  1 创建虚拟机

  这里我们创建2台虚拟机作为集群里的2个节点。

  ·通过Oracle Virtual Machine Template创建虚拟机 RAC1_13 和 RAC2_13。

  ·虚拟机的内存至少为 1G

  ·每台机器应创建 2 块虚拟网卡,如下图所示:

  ·作为RAC节点的虚拟机的OS 版本应一致,这里我们都选择 Oracle Enterprise Linux Release 4 Update 5.

  ·创建完毕,“Power On”所有的节点。

  2 安装Clusterware前的准备

  2.1 检查系统硬件环境 (在所有节点上)

  系统硬件条件至少应满足

  ·1G RAM

  # grep MemTotal /proc/meminfo

  ·Swap 1.5G

  # grep SwapTotal /proc/meminfo

  ·/tmp >400MB

  # df -k /tmp

  ·650MB的磁盘空间作为Oracle Clusterware home

  ·1G磁盘空间用来放Oracle Clusterware file

  如果考虑冗余的话,需要再增加分区

  ·至少4G磁盘空间作为Oracle Database home

  ·虚拟机的磁盘空间不够的话,可以通过增加虚拟磁盘的方法解决

  2.2 配置和检查系统软件环境 (在所有节点上)

  检查系统是否已经安装以下的包

  binutils-2.15.92.0.2-18

  elfutils-libelf-0.97-5

  elfutils-libelf-devel-0.97.5

  glibc-2.3.9.4-2.19

  glibc-common-2.3.9.4-2.19

  glibc-devel-2.3.9.4-2.19

  gcc-3.4.5-2

  gcc-c++-3.4.5-2

  libaio-devel-0.3.105-2

  libaio-0.3.105-2

  libgcc-3.4.5

  libstdc++-3.4.5-2

  libstdc++-devel-3.4.5-2

  make-3.80-5

  通过模板创建的虚拟机,OS可能没有安装全部需要的包。

  用户在安装前请参照Oracle官方文档检查系统是否已经安装所需的包。

  2.3 配置和检查网络 (在所有节点上)

  RAC1_13 eth0 10.182.108.86 eth1 192.168.0.11

  RAC2_13 eth0 10.182.108.88 eth1 192.168.0.12

  ·修改节点的/etc/hosts文件

  127.0.0.1 localhost.localdomain localhost

  10.182.108.86 rac1_13.cn.oracle.com rac1_13

  10.182.108.87 rac1_13-vip.cn.oracle.com rac1_13-vip

  192.168.0.11 rac1_13-priv.cn.oracle.com rac1_13-priv

  192.168.0.12 rac2_13-priv.cn.oracle.com rac2_13-priv

  10.182.108.88 rac2_13.cn.oracle.com rac2_13

  10.182.108.89 rac2_13-vip.cn.oracle.com rac2_13-vip

  ·修改节点的hostname

  vi /etc/sysconfig/network

  设置节点的hostname分别为RAC1_13和RAC2_13。

  2.4 配置内核参数 (在所有节点上)

  编辑/etc/sysctl.conf

  kernel.core_uses_pid = 1

  fs.file-max=327679

  kernel.msgmni=2878

  kernel.msgmax=8192

  kernel.msgmnb=65536

  kernel.sem=250 32000 100 142

  kernel.shmmni=4096

  kernel.shmall=3279547

  kernel.sysrq=1

  net.core.rmem_default=262144

  net.core.rmem_max=2097152

  net.core.wmem_default=262144

  net.core.wmem_max=262144

  fs.aio-max-nr=3145728

  net.ipv4.ip_local_port_range=1024 65000

  vm.lower_zone_protection=100

  kernel.shmmax=536934400

  2.5 创建用于安装oracle的用户和用户组 (在所有节点上)

  首先确认系统中是否已创建oinstall,dba用户组和oracle用户,

  #id oracle

  如果没有创建,请用命令创建

  # /usr/sbin/groupadd –g 501 dba

  # /usr/sbin/groupadd –g 502 dba

  # /usr/sbin/useradd –g oinstall –G dba oracle

  2.6 配置ssh/rsh协议 (在所有节点上)

  这里我们介绍了ssh/rsh协议的配置。实际安装中,用户只需要配置其中的一个协议(推荐使用SSH 协议)。

  2.6.1 SSH 协议

  在每个节点上创建.ssh目录并生成RSA Key

  1) 以oracle用户登录

  2) 检查在在/home/oracle/下是否已有.ssh目录

  如果没有.ssh目录,请创建该目录

  mkdir ~/.ssh

  创建后修改目录权限

  [oracle@rac1_13 ~]$ chmod 700 ~/.ssh

  3) 生成rsa key

  [oracle@rac1_13 ~]$ /usr/bin/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:

  3f:d2:e4:a3:ee:a1:58:e5:73:92:39:0d:8e:3f:9b:11 oracle@rac1_13

  4) 在每个节点上重复以上步骤

  将所有的RSA Key添加到文authorized_keys

  1) 在节点rac1_13上面,将RSA Key添加到文件authorized_keys

  [oracle@rac1_13 ~]$ cd .ssh

  [oracle@rac1_13 .ssh]$ cat id_rsa.pub >> authorized_keys

  [oracle@rac1_13 .ssh]$ ls

  authorized_keys id_rsa id_rsa.pub

  2) 将节点rac1_13上的 authorized_keys 抄送到节点rac2_13

  [oracle@rac1_13 .ssh]$ scp authorized_keys rac2_13:/home/oracle/.ssh/

  The authenticity of host 'rac2_13 (10.182.108.88)' can't be established.

  RSA key fingerprint is e6:dc:07:c3:d5:2a:45:43:66:72:d3:44:17:4d:54:42.

  Are you sure you want to continue connecting (yes/no) yes

  Warning: Permanently added 'rac2_13,10.182.108.88' (RSA) to the list of known hosts.

  oracle@rac2_13's password:

  authorized_keys 100% 224 0.2KB/s 00:00

  3) 在节点rac2_13上,将该节点的RSA Key也添加到authorized_keys

  [oracle@rac2_13 .ssh]$ cat id_rsa.pub >> authorized_keys

  4) 当所有节点的RSA Key都添加到authorized_keys时,将authorized_keys文件抄送到每个节点

  在节点上启用SSH协议

  1) 在每个节点上执行 SSH hostname date

  [oracle@rac1_13 .ssh]$ ssh rac1_13 date

  The authenticity of host 'rac1_13 (10.182.108.86)' can't be established.

  RSA key fingerprint is e6:dc:07:c3:d5:2a:45:43:66:72:d3:44:17:4d:54:42.

  Are you sure you want to continue connecting (yes/no) yes

  Warning: Permanently added 'rac1_13,10.182.108.86' (RSA) to the list of known hosts.

  Enter passphrase for key '/home/oracle/.ssh/id_rsa':

  Sun Apr 20 23:31:06 EDT 2008

  [oracle@rac1_13 .ssh]$ ssh rac2_13 date

  …

  在节点rac2_13上重复以上步骤

  2) 在每个节点上启动SSH Agent,并将SSH keys装载到内存

  [oracle@rac1_13 .ssh]$ exec /usr/bin/ssh-agent $SHELL

  [oracle@rac1_13 .ssh]$ /usr/bin/ssh-add

  [oracle@rac2_13 ~]$ exec /usr/bin/ssh-agent $SHELL

  [oracle@rac2_13 ~]$ /usr/bin/ssh-add

  ·验证SSH 协议

  [oracle@rac1_13 .ssh]$ ssh rac1_13 date

  Sun Apr 20 23:40:04 EDT 2008

  [oracle@rac1_13 .ssh]$ ssh rac2_13 date

  Sun Apr 20 23:40:09 EDT 2008

  [oracle@rac1_13 .ssh]$ ssh rac2_13-priv date

  Sun Apr 20 23:41:20 EDT 2008

  …

  到这里SSH信任访问协议配置完毕。

  2.6.2 RSH 协议

  ·检查系统是否已经安装rsh协议所需的包

  [root@rac1_13 rpm]# rpm -q rsh rsh-server

  rsh-0.17-25.4

  rsh-server-0.17-25.4

  确认 Disable SELinux

  执行 system-config-securitylevel

  编辑/etc/xinetd.d/rsh文件,将 disable 属性设置为 no

  运行以下命令重新装载xinetd

  [root@rac1_13 rpm]# chkconfig rsh on

  [root@rac1_13 rpm]# chkconfig rlogin on

  [root@rac1_13 rpm]# service xinetd reload

  Reloading configuration: [ OK ]

  创建/etc/hosts.equiv文件,将可信节点信息加入到文件中

  [root@rac1_13 rpm]# more /etc/hosts.equiv

  +rac1_13 oracle

  +rac1_13-priv oracle

  +rac2_13 oracle

  +rac2_13-priv oracle

  修改/etc/hosts.equiv文件的属性

  [root@rac1_13 rpm]# chown root:root /etc/hosts.equiv

  [root@rac1_13 rpm]# chmod 775 /etc/hosts.equiv

  修改rsh的路径

  [root@rac1_13 rpm]# which rsh

  /usr/kerberos/bin/rsh

  [root@rac1_13 rpm]# cd /usr/kerberos/bin

  [root@rac1_13 bin]# mv rsh rsh.original

  [root@rac1_13 bin]# which rsh

  /usr/bin/rsh

  验证RSH协议,以oracle 用户

  [oracle@rac1_13 ~]$ rsh rac1_13 date

  Wed Apr 16 22:13:32 EDT 2008

  [oracle@rac1_13 ~]$ rsh rac1_13-priv date

  Wed Apr 16 22:13:40 EDT 2008

  [oracle@rac1_13 ~]$ rsh rac2_13 date

  Wed Apr 16 22:13:48 EDT 2008

  [oracle@rac1_13 ~]$ rsh rac2_13-priv date

  Wed Apr 16 22:13:56 EDT 2008

  [oracle@rac2_13 ~]$ rsh rac1_13 date

  Wed Apr 16 22:14:33 EDT 2008

  [oracle@rac2_13 ~]$ rsh rac1_13-priv date

  Wed Apr 16 22:14:41 EDT 2008

  [oracle@rac2_13 ~]$ rsh rac2_13 date

  Wed Apr 16 22:14:47 EDT 2008

  [oracle@rac2_13 ~]$ rsh rac2_13-priv date

  Wed Apr 16 22:14:54 EDT 2008

  2.7 配置用户环境 (在所有节点上)

  root 用户

  编辑/etc/bashrc 文件,加入以下语句

  if [ -t 0 ]; then

  stty intr ^C

  fi

  oracle用户环境配置

  编辑文件 /etc/security/limits.conf,加入以下内容

  oracle soft nproc 2047

  oracle hard nproc 16384

  oracle soft nofile 1024

  oracle hard nofile 65536

  编辑文件/etc/pam.d/login 文件,加入以下内容

  session required pam_limits.so

  编辑/etc/profile,加入以下内容

  if [ $USER = "oracle" ]; then

  if [ $SHELL = "/bin/ksh" ]; then

  ulimit -u 16384

  ulimit -n 65536

  else

  ulimit -u 16384 -n 65536

  fi

  umask 022

  fi

  2.8 NFS 服务设置

  我们计划将Clusterware和RAC DB的相关文件都放在NFS目录中。

  NFS服务器端设置

  1) 10.182.108.27 作为NFS服务器

  2) 在NFS服务器的本地磁盘上创建共享目录

  /crs_13

  /racdb_13

  3) 编辑/etc/exports文件

  /crs_13 10.182.108.0/255.255.255.0(rw,sync,no_root_squash)

  /racdb_13 10.182.108.0/255.255.255.0(rw,sync,no_root_squash)

  在RAC节点上创建安装目录

  [root@rac1_13 etc]# mkdir /crs_13

  [root@rac1_13 etc]# chown -R root:oinstall /crs_13/

  [root@rac1_13 etc]# chmod -R 775 /crs_13/

  [root@rac1_13 etc]# mkdir /racdb_13

  [root@rac1_13 etc]# chown -R oracle:dba /racdb_13/

  [root@rac1_13 etc]# chmod -R 775 /racdb_13/

  [root@rac2_13 ~]# mkdir /crs_13

  [root@rac2_13 ~]# chown -R root:oinstall /crs_13/

  [root@rac2_13 ~]# chmod -R 775 /crs_13/

  [root@rac2_13 ~]# mkdir /racdb_13

  [root@rac2_13 ~]# chown -R oracle:dba /racdb_13/

  [root@rac2_13 ~]# chmod -R 775 /racdb_13/

  在RAC节点上配置NFS服务

  编辑/etc/fstab 文件,将NFS目录加入文件

  10.182.108.27:/crs_13 /crs_13 nfs rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=3,timeo

  =600

  10.182.108.27:/racdb_13 /racdb_13 nfs rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=3,timeo

  =600

  在NFS服务器端和客户端重启NFS服务

  service nfs restart

  df –h检查NFS目录是否已经mount上

  [root@rac1_13 etc]# df -h

  Filesystem Size Used Avail Use% Mounted on

  /dev/mapper/VolGroup00-LogVol00

  3.9G 1.6G 2.1G 43% /

  /dev/hda1 99M 8.3M 86M 9% /boot

  none 513M 0 513M 0% /dev/shm

  10.182.108.27:/crs_13

  127G 7.8G 113G 7% /crs_13

  10.182.108.27:/racdb_13

  127G 7.8G 113G 7% /racdb_13

  [root@rac2_13 ~]# df -h

  Filesystem Size Used Avail Use% Mounted on

  /dev/mapper/VolGroup00-LogVol00

  3.9G 1.6G 2.1G 43% /

  /dev/hda1 99M 8.3M 86M 9% /boot

  none 513M 0 513M 0% /dev/shm

  10.182.108.27:/crs_13

  127G 7.8G 113G 7% /crs_13

  10.182.108.27:/racdb_13

  127G 7.8G 113G 7% /racdb_13

  2.9 创建安装目录

  为虚拟机添加磁盘

  通过模板创建的虚拟机磁盘空间不够来安装clusterware 和 database,需要增加磁盘空间。

  我们可以通过OVM Manager Console来为每个节点增加一个名为data,大小为5000MB的磁盘。

  磁盘创建完毕在每个节点上可以用 fdisk –l命令查看新增加的磁盘。

  [root@rac1_13 ~]# fdisk -l

  Disk /dev/hda: 6442 MB, 6442450944 bytes

  255 heads, 63 sectors/track, 783 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot Start End Blocks Id System

  /dev/hda1 * 1 13 104391 83 Linux

  /dev/hda2 14 783 6185025 8e Linux LVM

  Disk /dev/hdb: 5242 MB, 5242880000 bytes

  255 heads, 63 sectors/track, 637 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Disk /dev/hdb doesn't contain a valid partition table

  可以看到新增加的磁盘为/dev/hdb,但是里面还没有创建磁盘分区

  为新磁盘创建分区 hdb1

  # fdisk /dev/hdb

  # fdisk -l /dev/hdb

  Disk /dev/hdb: 5242 MB, 5242880000 bytes

  255 heads, 63 sectors/track, 637 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot Start End Blocks Id System

  /dev/hdb1 1 633 5084541 83 Linux

  格式化分区/dev/hdb1

  # mkfs.ext3 -b 1024 -i 8192 /dev/hdb1

  创建Mount Point

  mkdir /data

  将分区挂载到安装目录下

  mount /dev/hdb1 /data

  将目录信息写人文件/etc/fstab

  /dev/hdb1 /data ext3 defaults 0 0

  创建安装所需的目录

  mkdir –p /data/crs

  chown –R oracle:oinstall /data/crs

  chmod –R 775 /data/crs

  2.10 创建ocr和voting file文件

  ocr和voting file文件必须放在NFS目录。在其中一个节点创建ocr文件和voting file文件即可。

  [root@rac1_13 crs_13]# chown root:oinstall ocrfile

  [root@rac1_13 crs_13]# chmod 775 ocrfile

  [root@rac1_13 crs_13]# touch votingfile

  [root@rac1_13 crs_13]# chown oracle:dba votingfile

  [root@rac1_13 crs_13]# chmod 775 votingfile

  3 安装 Clusterware

  3.1 下载并解压 Oracle Clusterware 安装软件

  # unzip linux_11gR1_clusterware.zip –d /stage

  3.2 安装Clusterware

  Step 1 到解压目录执行 ./runInstaller

  Step 2 指定inventory目录以及安装用户组

  Step 3 指定CRS Home

  Step 4 输入集群中的节点信息,与/etc/hosts里面的信息保持一致

  Step 5 指定节点公网/私网信息

  Step 6 指定OCR 文件的路径

  Step 7 指定Voting File文件的位置

  Step 8 开始安装

  Step 9 在所有节点上依次执行这些脚本(请注意一个节点上所有脚本执行完毕,才能去另外的节点执行)

  [root@rac1_13 crs_13]# /data/crs/root.sh

  Checking to see if Oracle CRS stack is already configured

  Setting the permissions on OCR backup directory

  Setting up Network socket directories

  Oracle Cluster Registry configuration upgraded successfully

  Successfully accumulated necessary OCR keys.

  Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.

  node :

  node 1: rac1_13 rac1_13-priv rac1_13

  node 2: rac2_13 rac2_13-priv rac2_13

  Creating OCR keys for user 'root', privgrp 'root'..

  Operation successful.

  Now formatting voting device: /crs_13/votingfile

  Format of 1 voting devices complete.

  Startup will be queued to init within 30 seconds.

  Adding daemons to inittab

  Expecting the CRS daemons to be up within 600 seconds.

  Cluster Synchronization Services is active on these nodes.

  rac1_13

  Cluster Synchronization Services is inactive on these nodes.

  rac2_13

  Local node checking complete. Run root.sh on remaining nodes to start CRS daemons

  [root@rac2_13 crs]# sh root.sh

  Checking to see if Oracle CRS stack is already configured

  Setting the permissions on OCR backup directory

  Setting up Network socket directories

  Oracle Cluster Registry configuration upgraded successfully

  clscfg: EXISTING configuration version 4 detected.

  clscfg: version 4 is 11 Release 1.

  Successfully accumulated necessary OCR keys.

  Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.

  node :

  node 1: rac1_13 rac1_13-priv rac1_13

  node 2: rac2_13 rac2_13-priv rac2_13

  clscfg: Arguments check out successfully.

  NO KEYS WERE WRITTEN. Supply -force parameter to override.

  -force is destructive and will destroy any previous cluster

  configuration.

  Oracle Cluster Registry for cluster has already been initialized

  Startup will be queued to init within 30 seconds.

  Adding daemons to inittab

  Expecting the CRS daemons to be up within 600 seconds.

  Cluster Synchronization Services is active on these nodes.

  rac1_13

  rac2_13

  Cluster Synchronization Services is active on all the nodes.

  Waiting for the Oracle CRSD and EVMD to start

  Oracle CRS stack installed and running under init(1M)

  Running vipca(silent) for configuring nodeapps

  Creating VIP application resource on (2) nodes...

  Creating GSD application resource on (2) nodes...

  Creating ONS application resource on (2) nodes...

  Starting VIP application resource on (2) nodes...

  Starting GSD application resource on (2) nodes...

  Starting ONS application resource on (2) nodes...

  Done.

  脚本都执行完毕后,进入下一步。

  Step 10 配置确认

  Step 11 结束安装

  3.3 查看CRS状态

  [root@rac1_13 bin]# ./crs_stat -t

  Name Type Target State Host

  ------------------------------------------------------------

  ora...._13.gsd application ONLINE ONLINE rac1_13

  ora...._13.ons application ONLINE ONLINE rac1_13

  ora...._13.vip application ONLINE ONLINE rac1_13

  ora...._13.gsd application ONLINE ONLINE rac2_13

  ora...._13.ons application ONLINE ONLINE rac2_13

  ora...._13.vip application ONLINE ONLINE rac2_13

  [root@rac2_13 bin]# ./crs_stat -t

  Name Type Target State Host

  ------------------------------------------------------------

  ora...._13.gsd application ONLINE ONLINE rac1_13

  ora...._13.ons application ONLINE ONLINE rac1_13

  ora...._13.vip application ONLINE ONLINE rac1_13

  ora...._13.gsd application ONLINE ONLINE rac2_13

  ora...._13.ons application ONLINE ONLINE rac2_13

  ora...._13.vip application ONLINE ONLINE rac2_13

  [root@rac1_13 bin]# ps -ef|grep d.bin

  oracle 20999 20998 0 06:45 00:00:00 /data/crs/bin/evmd.bin

  root 21105 20310 0 06:45 00:00:00 /data/crs/bin/crsd.bin reboot

  oracle 21654 21176 0 06:45 00:00:00 /data/crs/bin/ocssd.bin

  root 26087 5276 0 06:54 pts/0 00:00:00 grep d.bin

  到这里Oracle Clusterware的安装完毕。

  Oracel Real Application Cluster的安装和数据库的创建在这里就不介介绍了

0
相关文章