使用多路径在Oracle Linux 6.5上搭建Oracle RAC 11.2.0.4

1. 目的

2. 适用范围

数据库管理员和系统管理员。

3. 环境规划

3.1 硬件环境

在此环境中,使用了3台服务器。服务器的配置如表1所示:

服务器 CPU 内存 硬盘
racdb1.dhc.com 4核 4G 100G
racdb2.dhc.com 4核 4G 100G
storages.dhc.com 4核 2G 100G

表1 RAC安装硬件环境

3.2 软件环境

此环境使用的软件及其版本如表2所示:

软件类型 软件名称 版本
操作系统 Enterprise Linux 6.4
存储系统 scsi-target-utils 0.4.9
数据库 Oracle Database, Oracle Infrastructure 11.2.0.4

表2 RAC安装软件环境

3.3 网络环境

此环境使用的网络IP如表3所示:

  racdb1.dhc.com racdb2.dhc.com
公共网络 10.128.20.101 10.128.20.102
专用网络 192.168.1.101 192.168.1.102
存储网络 192.168.136.101 192.168.136.102
网关 10.128.20.103 10.128.20.103
DNS 10.128.20.103 10.128.20.103
SCAN IP 10.128.20.110 10.128.20.110
SCAN IP 10.128.20.111 10.128.20.111
SCAN IP 10.128.20.112 10.128.20.112

表3 RAC安装网络环境

3.4 存储规划

存储服务器这里使用多种存储,这里使用的是scsi-target-utils来搭建一个简单存储。存储的规划可以参考表4。

卷名称 磁盘組 大小
data1 DATA 10G
data2 DATA 10G
data3 DATA 10G
data4 DATA 10G
fra1 FRA 10G
fra2 FRA 10G
quorum1 QUORUM 1G
quorum2 QUORUM 1G
quorum3 QUORUM 1G

表4 RAC安装存储规划

4. 搭建数据库服务器

为每台数据库服务器配置最少三个网卡。将操作系统的安装盘放到服务器的光驱里,然后启动服务器,根据环境规划来安装操作系统。
操作系统安装完成,需要配置YUM源。
新建/var/yum目录,存储安装文件

# mkdir /var/yum

将系统安装盘中的文件复制到/var/yum中
编辑/etc/yum.repos.d/rhel.repo,加入下面的内容

[base]
name=local source
baseurl=file:///var/yum
enable=1

导入yum安装密钥

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY--release

搭建好YUN源之后,我们就可以用YUM来安装所需要的软件。
关闭selinux
修改/etc/selinux/config文件,将SELINUX设置为disabled

SELINUX=disabled

关闭防火墙

service iptables stop
chkconfig iptables off

5. 配置共享存储

参照存储的使用手册,在存储服务器上根据存储的规划,划分出9个盘。使用网线或者是光纤卡,将存储和数据库服务器连接起来。

6. 配置数据库服务器

在安装ORACLE RAC之前,需要对数据库服务器做一些配置。下面的配置需要在两台数据库服务器上面分别进行操作。

6.1 安装软件包

安装Oracle RAC需要安装一些额外的软件包,下面列出了必须的RPM包。

binutils-2.20.51.0.2-5.11.el6 (x86_64)
compat-libcap1-1.10-1 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64)
compat-libstdc++-33-3.2.3-69.el6.i686
gcc-4.4.4-13.el6 (x86_64)
gcc-c++-4.4.4-13.el6 (x86_64)
glibc-2.12-1.7.el6 (i686)
glibc-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6.i686
ksh
libgcc-4.4.4-13.el6 (i686)
libgcc-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6.i686
libstdc++-devel-4.4.4-13.el6 (x86_64)
libstdc++-devel-4.4.4-13.el6.i686
libaio-0.3.107-10.el6 (x86_64)
libaio-0.3.107-10.el6.i686
libaio-devel-0.3.107-10.el6 (x86_64)
libaio-devel-0.3.107-10.el6.i686
make-3.81-19.el6
sysstat-9.0.4-11.el6 (x86_64)

通过一下的命令来检测上面列出的包是否安装成功

rpm -q binutils  elfutils compat-libstdc++-33 gcc glibc libaio libgcc libstdc++ \
make sysstat unixODBC compat-libcap1 elfutils-libelf-devel glibc-devel ksh libaio-devel sysstat gcc-c++

如果上面的包没有安装,可以用yum来进行安装。

yum install libaio-devel

6.2 配置hosts文件
编辑/etc/hosts文件,加入以下内容。

10.128.20.101 racdb1.dhc.com racdb1
10.128.20.102 racdb2.dhc.com racdb2
192.168.1.101 racdb1-priv.dhc.com racdb1-priv
192.168.1.102 racdb2-priv.dhc.com racdb2-priv
10.128.20.201 racdb1-vip.dhc.com racdb1-vip
10.128.20.202 racdb2-vip.dhc.com racdb2-vip
192.168.136.103 storage1.dhc.com storage1

6.3 配置域名解析服务

本环境配置DNS来解析SCAN名字。在DNS服务器里加入dhc.com域和10.128.20.0网段的反向解析域即可。

/etc/named.conf

zone "dhc.com" IN {
        type master;
        file "/var/named/dhc.com.zone";
};

zone "20.128.10.in-addr.arpa" IN {
        type master;
        file "/var/named/20.128.10.in-addr.arpa.zone";
};

/var/named/dhc.com.zone

$TTL 1D
@     IN SOA      @ rname.invalid. (
                                              0       ; serial
                                              1D    ; refresh
                                              1H    ; retry
                                              1W   ; expire
                                              3H )  ; minimum
        NS    @
        A       127.0.0.1
        AAAA        ::1
racdb-cluster-scan A 10.128.20.110
racdb-cluster-scan A 10.128.20.111
racdb-cluster-scan A 10.128.20.112

/var/named/20.128.10.in-addr.arpa.zone

$TTL 1D
@     IN SOA      @ rname.invalid. (
                                              0       ; serial
                                              1D    ; refresh
                                              1H    ; retry
                                              1W   ; expire
                                              3H )  ; minimum
        NS    @
        A       127.0.0.1
        AAAA        ::1
110 PTR racdb-cluster-scan.dhc.com.
111 PTR racdb-cluster-scan.dhc.com.
112 PTR racdb-cluster-scan.dhc.com.
103 PTR storage1.dhc.com.

将数据库服务器的DNS配置成该服务器的地址,在数据库服务器上做测试。

[root@racdb1 ~]# host racdb-cluster-scan.dhc.com
racdb-cluster-scan.dhc.com has address 10.128.20.111
racdb-cluster-scan.dhc.com has address 10.128.20.112
racdb-cluster-scan.dhc.com has address 10.128.20.110

6.4 内核参数调整

由于现在oracle新版本提供一个script来修改内核参数,这一步现在可以省略。

6.5 创建用户

用root用户执行下面的命令,添加以下用户组

groupadd -g 1000 oinstall
groupadd -g 1200 asmadmin
groupadd -g 1201 asmdba
groupadd -g 1202 asmoper
groupadd -g 1300 dba
groupadd -g 1301 oper

用root用户添加grid和oracle用户

useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash grid
useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -g /home/oracle -s /bin/bash oracle

修改grid和oracle用户的密码。

[root@racdb1 ~]# passwd grid
更改用户 grid 的密码 。
新的 密码:
无效的密码: 它基于字典单词
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

6.6 配置登录安全验证选项

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

grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
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

6.7 创建挂载点
用root用户执行下面的命令创建挂载点

mkdir -p /u01/app/11.2.0.4/grid
mkdir -p /u01/app/grid
chown -R grid:oinstall /u01
mkdir -p /u01/app/oracle/product/11.2.0.4/dbhome_1
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01

6.8 配置用户的环境变量

  1. 配置grid用户的环境变量
    切换到grid用户,编辑.bash_profile文件,加入以下内容
export ORACLE_SID=+ASM1    
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0.4/grid
export PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin
export TEMP=/tmp
export TMP=/tmp
export TMPDIR=/tmp
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD"
umask 022

注意在另外一个节点ORACLE_SID要改为+ASM2。
2. 配置oracle的环境变量
切换到oracle用户,编辑.bash_profile文件,加入以下内容

export ORACLE_SID=PROD_1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
export ORACLE_TERM=xterm
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export PATH=$ORACLE_HOME/bin:$PATH:/usr/bin:/bin:usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export TEMP=/tmp
export TMPDIR=/tmp
umask 022

注意在另外一个节点ORACLE_SID为PROD_2
为了使新的环境变量生效,重启服务器或者执行下面的命令:

. .bash_profile

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

if [ $USER = "oracle" ] || [ $USER = "grid" ] ; then
    if [ $SHELL = "/bin/ksh" ] ; then 
        ulimit -p 16384
        ulimit -n 65536
     else
        ulimit -u 16384 -n 65536
    fi
    umask 022
fi

6.9 配置共享存储

安装iscsi和多路径包

yum install iscsi-initiator-utils device-mapper-multipath

配置iscsi和多路径自动启动

chkconfig iscsi on
chkconfig iscsid on
chkconfig multipathd on

发现target

[root@racdb1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.136.103 --discover
192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:data1
192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:data2
192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:data3
192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:data4
192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:fra1
192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:fra2
192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:quorum1
192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:quorum2
192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:quorum3

挂载存储

iscsiadm -m node -T  iqn.2014-09.com.dhc.storage1:quorum1 -p 192.168.136.103:3260 -l
iscsiadm -m node -T  iqn.2014-09.com.dhc.storage1:quorum2 -p 192.168.136.103:3260 -l
iscsiadm -m node -T  iqn.2014-09.com.dhc.storage1:quorum3 -p 192.168.136.103:3260 -l
iscsiadm -m node -T  iqn.2014-09.com.dhc.storage1:data1 -p 192.168.136.103:3260 -l
iscsiadm -m node -T  iqn.2014-09.com.dhc.storage1:data2 -p 192.168.136.103:3260 -l
iscsiadm -m node -T  iqn.2014-09.com.dhc.storage1:data3 -p 192.168.136.103:3260 -l
iscsiadm -m node -T  iqn.2014-09.com.dhc.storage1:data4 -p 192.168.136.103:3260 -l
iscsiadm -m node -T  iqn.2014-09.com.dhc.storage1:fra1 -p 192.168.136.103:3260 -l
iscsiadm -m node -T  iqn.2014-09.com.dhc.storage1:fra2 -p 192.168.136.103:3260 -l

注意,这里要按照顺序挂载存储,方便后面配置多路径。
磁盘挂在好之后,使用fdisk -l 可以看到多了几个磁盘,但是重启之后这些磁盘的挂载点会改变,因此需要用多路径软件来固定共享磁盘的挂载点。
要使用多路径,首先要获得磁盘的scsi id。
在存储节点运行 tgt-admin –show可以看到

[root@storage1 named]# tgt-admin –show
Target 1: iqn.2014-09.com.dhc.storage1:data1
。。。。。。
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 10737 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /target/data1.img
            Backing store flags: 
    Account information:
    ACL information:
        ALL

这里scsi id就是我们需要的,记下每个target的scsi id。
在数据库服务器上生成多路径的配置文件
从文档里拷贝一个配置文件到/etc目录中。

cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc

编辑/etc/multipath.conf

defaults {
    udev_dir        /dev
    polling_interval    10
    path_selector       "round-robin 0"
    path_grouping_policy    multibus
    getuid_callout      "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
    path_checker        readsector0
    rr_min_io       100
    max_fds         8192
    rr_weight       priorities
    failback        immediate
    no_path_retry       fail
    user_friendly_names yes
}
blacklist {
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^vd[a-z][0-2]"
}
multipaths {
       multipath {
               wwid                    "1IET     00070001"
               alias                   quorum1
       }
       multipath {
               wwid                    "1IET     00080001"
               alias                   quorum2
       }
       multipath {
               wwid                    "1IET     00090001"
               alias                   quorum3
       }
       multipath {
               wwid                    "1IET     00010001"
               alias                   data1
       }
       multipath {
               wwid                    "1IET     00020001"
               alias                   data2
       }
       multipath {
               wwid                    "1IET     00030001"
               alias                   data3
       }
       multipath {
               wwid                    "1IET     00040001"
               alias                   data4
       }
       multipath {
               wwid                    "1IET     00050001"
               alias                   fra1
       }
       multipath {
               wwid                    "1IET     00060001"
               alias                   fra2
       }
}
devices {
       device {
               vendor "IET"
               product "VIRTUAL-DISK"
               path_grouping_policy group_by_prio
               getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
               path_selector "round-robin 0"
               path_checker tur
               hardware_handler "0"
               failback immediate
               rr_weight uniform
               rr_min_io 128
               rr_min_io_rq 1
               flush_on_last_del yes
               fast_io_fail_tmo 5
               dev_loss_tmo infinity
       }
}

启动多路径

modprobe dm_multipath
modprobe dm_mod
/etc/init.d/multipathd start

查看多路径multipath -ll

[root@racdb2 ~]# multipath -ll
quorum3 (1IET     00090001) dm-7 IET,VIRTUAL-DISK
size=1.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 8:0:0:1  sdh 8:112 active ready  running
quorum2 (1IET     00080001) dm-2 IET,VIRTUAL-DISK
size=1.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 4:0:0:1  sdb 8:16  active ready  running
quorum1 (1IET     00070001) dm-10 IET,VIRTUAL-DISK
size=1.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 9:0:0:1  sdf 8:80  active ready  running
fra2 (1IET     00060001) dm-9 IET,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 5:0:0:1  sdc 8:32  active ready  running
fra1 (1IET     00050001) dm-4 IET,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 6:0:0:1  sde 8:64  active ready  running
data4 (1IET     00040001) dm-5 IET,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 10:0:0:1 sdi 8:128 active ready  running
data3 (1IET     00030001) dm-8 IET,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 3:0:0:1  sdd 8:48  active ready  running
data2 (1IET     00020001) dm-6 IET,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 7:0:0:1  sdg 8:96  active ready  running
data1 (1IET     00010001) dm-3 IET,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 2:0:0:1  sda 8:0   active ready  running

如果绑定成功,会在/dev/mapper目录下面看到新生成的磁盘

[root@racdb1 mapper]# ll
crw-rw---- 1 root root 10, 58 928 02:33 control
lrwxrwxrwx 1 root root      7 928 02:52 data1 -> ../dm-2
lrwxrwxrwx 1 root root      7 928 02:52 data2 -> ../dm-8
lrwxrwxrwx 1 root root      7 928 02:52 data3 -> ../dm-5
lrwxrwxrwx 1 root root      7 928 02:52 data4 -> ../dm-6
lrwxrwxrwx 1 root root      7 928 02:52 fra1 -> ../dm-9
lrwxrwxrwx 1 root root      7 928 02:52 fra2 -> ../dm-4
lrwxrwxrwx 1 root root      8 928 02:52 quorum1 -> ../dm-10
lrwxrwxrwx 1 root root      7 928 02:52 quorum2 -> ../dm-3
lrwxrwxrwx 1 root root      7 928 02:52 quorum3 -> ../dm-7
lrwxrwxrwx 1 root root      7 928 02:34 vg_racdb-lv_root -> ../dm-0
lrwxrwxrwx 1 root root      7 928 02:33 vg_racdb-lv_swap -> ../dm-1

将第一个节点的 multipathd.conf复制到第二个节点,然后在第二个节点启动多路径
修改共享存储的权限

chown grid:asmadmin data1
chmod 660 data1

使用同样的方法更改所有存储的权限。
最终的权限如下面所示:

[root@racdb1 mapper]# ls -lL
总用量 0
brw-rw---- 1 root disk     253,  5 9月  29 03:23 data1
brw-rw---- 1 root disk     253,  7 9月  29 03:23 data2
brw-rw---- 1 root disk     253,  3 9月  29 03:24 data3
brw-rw---- 1 root disk     253, 10 9月  29 03:24 data4
brw-rw---- 1 root disk     253,  2 9月  29 03:25 fra1
brw-rw---- 1 root disk     253,  8 9月  29 03:25 fra2
brw-rw---- 1 root disk     253,  4 9月  29 03:20 quorum1
brw-rw---- 1 root disk     253,  6 9月  29 03:22 quorum2
brw-rw---- 1 root disk     253,  9 9月  29 03:22 quorum3

为了保证重启之后,虚拟磁盘的权限不变,在udev里加入规则文件。

[root@racdb1 mapper]# cd /etc/udev/rules.d/
[root@racdb1 rules.d]# vi 99-grid-permission.rules 
PROGRAM="/bin/chown grid:asmadmin /dev/mapper/quorum1"
PROGRAM="/bin/chown grid:asmadmin /dev/mapper/quorum2"
PROGRAM="/bin/chown grid:asmadmin /dev/mapper/quorum3"
PROGRAM="/bin/chown grid:asmadmin /dev/mapper/data1"
PROGRAM="/bin/chown grid:asmadmin /dev/mapper/data2"
PROGRAM="/bin/chown grid:asmadmin /dev/mapper/data3"
PROGRAM="/bin/chown grid:asmadmin /dev/mapper/data4"
PROGRAM="/bin/chown grid:asmadmin /dev/mapper/fra1"
PROGRAM="/bin/chown grid:asmadmin /dev/mapper/fra2"
PROGRAM="/bin/chmod 660 /dev/mapper/quorum1"
PROGRAM="/bin/chmod 660 /dev/mapper/quorum2"
PROGRAM="/bin/chmod 660 /dev/mapper/quorum3"
PROGRAM="/bin/chmod 660 /dev/mapper/data1"
PROGRAM="/bin/chmod 660 /dev/mapper/data2"
PROGRAM="/bin/chmod 660 /dev/mapper/data3"
PROGRAM="/bin/chmod 660 /dev/mapper/data4"
PROGRAM="/bin/chmod 660 /dev/mapper/fra1"
PROGRAM="/bin/chmod 660 /dev/mapper/fra2"

将99-grid-permission.rules文件复制到节点2同样的目录下
这样如果服务器重启之后,共享存储的权限也不会改变。

6.10 配置时间同步服务

集群都要求在集群各节点之间保持时间一致。时间同步服务可以采用NTP,从11gR2之后,集群时间同步推荐使用oracle自带的工具CTSS。
下面配置禁用NTP,从而在安装Oracle RAC的时候启用CTSS。
在两个节点停止分别禁用NTP。

service stpd stop

禁止NTP自动启动

chkcong ntpd off

把ntp的配置文件改名

mv /etc/ntp.conf /etc/npt.conf.bk

7. 部署Oracle RAC

1. 安装 Grid Infrastructure

加载grid的安装介质,执行runInstaller,然后会弹出Grid安装界面

[grid@racdb1 ~]$ /media/grid_11204_linux64/runInstaller
正在启动 Oracle Universal Installer...

检查临时空间: 必须大于 120 MB。   实际为 77481 MB    通过
检查交换空间: 必须大于 150 MB。   实际为 8191 MB    通过
检查监视器: 监视器配置至少必须显示 256 种颜色。    实际为 16777216    通过
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2014-09-29_03-53-36AM. 请稍候...
[grid@racdb1 ~]$

跳过软件更新
跳过软件更新,如果有MOS账号,可以尝试更新
选择集群
选择为集群安装和配置Oracle Grid Infrastructure

猜你喜欢

转载自www.linuxidc.com/Linux/2016-11/137424.htm