RAC原理与搭建

本文详细介绍了Oracle RAC(Real Application Clusters)的原理及搭建流程,包括网络配置、共享存储配置、GI安装及Oracle软件安装等关键步骤。

RAC原理与搭建

 

RAC原理:

RAC是由网络,共享存储,gioracle四个部分组成如下图,下图为一个双节点RAC,两个节点之间需要能够互相访问,这样才能够在其中一个节点发生问题的时候另一个节点能够继续工作;这两个节点上又有GI软件和ORACLE软件安装在上面,同时这两节又能够同时连接到共享存储上(shared storage),需要使用私有IP连接到共享存储,所以这两个节点都需要配置一个网卡;为了外界能够连接进来,所以这两个节点又必须有公有IP连接到外网,所以需要有第二个网卡。

为什么要配置四个网卡:

节点对外提供服务的时候需要一个网络,对内又需要一个网络,为了保证高可用性,对外设置两个网卡,并做一个绑定(bond),这样在一个网卡发生问题的时候仍然能提供服务;对内的私有IP同样设置两个网卡以保证高可用,所以一个节点需要配置四个网卡。

搭建流程:

1,网络配置

2,存储配置

3GI安装

4ORACLE安装

 

安装前工作

安装三台虚拟机,分别为RACRAC1RAC2RAC作为共享存储,设置1g内存,设置两个硬盘,分别为20g60g,配置一个网卡,模式为仅主机模式;RA1RAC2都作为安装GIoracle的主机,设置2g内存,硬盘30~40g,都需要配置4个网卡eth0~eth4,都为仅主机模式。按照下图做配置即可。(仅在安装虚拟机的时候设置主机名即可,网卡设置按照下方流程设置)

虚拟机名

主机名(hostname

RAC

rac.us.oracle.com

RAC1

rac1.us.oracle.com

RAC2

rac2.us.oracle.com

安装完虚拟机安装vmtools,以及关闭iptablesNetworkManagerselinux,然后reboot

 

1,网络配置

虚拟机名

主机名(hostname)

eth0

eth1

eth2

eth3

bond0

vip

scan-ip

RAC

rac.us.oracle.com

192.168.0.50

-

-

-

-

 

10.0.0.22/10.0.0.23/10.0.0.24(需要设置三个bond IP,都在DNS服务器即共享内存上设置,)

RAC1

rac1.us.oracle.com

-

-

192.168.0.10

192.168.0.20

10.0.0.2

10.0.0.12

 

RAC2

rac2.us.oracle.com

-

-

192.168.0.30

192.168.0.40

10.0.0.3

10.0.0.13

 

设置RAC1网卡配置

--拷贝一份,以做备份

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/bak-eth0

cp /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/bak-eth1

 

--userctl                        是否允许非root用户控制该设备,

--MASTER=bond0   将这两块网卡绑定到bond0这块逻辑网卡上

--SLAVE=yes           表示这两块网卡附属于bond0这块网卡

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

USERCTL=no

ONBOOT=yes

SLAVE=yes

MASTER=bond0

BOOTPROTO=none

 

vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth0

USERCTL=no

ONBOOT=yes

SLAVE=yes

MASTER=bond0

BOOTPROTO=none

 

--设置绑定网卡内容,设置绑定IP10.0.0.2

vim /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0

IPADDR=10.0.0.2

NETMASK=255.255.255.0

USERCTL=no

BOOTPROTO=static

ONBOOT=yes

IPV6INIT=no

TYPE=Ethernet

 

--编辑dist.conf文件,将下面的内容粘贴到最下面。设置绑定网卡bond0,刷新间隔miimon100毫秒,模式为0

vim /etc/modprobe.d/dist.conf

alias bond0 bonding

options bond0 miimon=100 mode=0

 

--设置完后运行下面命令

modprobe bonding

lsmod|grep bond

 

--设置第三块和第四块网卡为节点与共享存储交互(HWADDR=00:0c:29:f1:99:9aMAC地址这一项可以不写

vim /etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE=eth2

USERCTL=no

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=none

NETMASK=255.255.255.0

IPADDR=192.168.0.10

 

vim /etc/sysconfig/network-scripts/ifcfg-eth3

DEVICE=eth3

TYPE=Ethernet

ONBOOT=yes

USERCTL=no

BOOTPROTO=none

NETMASK=255.255.255.0

IPADDR=192.168.0.20

 

--然后再重启下网卡,重启ssh守护进程,查看bond0状态,执行/etc/init.d/network restart命令时如图所示即为正常

/etc/init.d/network restart

/etc/init.d/sshd restart

cat /proc/net/bonding/bond0 

 

--注意:如果新建虚拟机的时候没有建网卡,可以关闭虚拟机,添加网卡,然后启动虚拟机,执行下面命令,vi /etc/udev/rules.d/70-persistent-net.rules,对应里面对应网卡信息填入到新的eth123文件里,eth1文件需要自己建立。

--很重要的一个命令,可以查看网卡名称:ls /sys/class/net,如果运行上述命令后出现网卡和ifconfig查看网卡的信息不符,或者如下报错:Device eth2 does not seem to be present, delaying initialization. 删除掉/etc/udev/rule.d/70-persistent-net.rules文件即可。

 

--此时RAC1的网络配置就可以了,配置RAC2的网卡信息与RAC1一样,根据上面表格把RAC2的网卡信息设置一下。

 

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

2,配置共享存储

--以下操作是在共享存储的机器(RAC)上操作

1,首先配置yum

rm /etc/yum.repos.d/rhel-source.repo

vi /etc/yum.repos.d/oracle

[oracle]

name=oracle

baseurl=file:///mnt

gpgcheck=0

enabled=1

 

2,安装RPM包,可以用 yum search scsi命令查看有哪些包,共享存储上安装下列两个包即可 scsi-target-utils  iscsi-initiator-utils

yum scsi-target-utils-1.0.24-10.el6.x86_64.rpm iscsi-initiator-utils-6.2.0.873-10.0.1.el6.x86_64.rpm -y

 

3,配置iSCSI Target

vi /etc/tgt/targets.conf

找到第38~40行,去掉前面的注释符号(#),可以输入:set nu 显示行号,.2008-09可以修改成当前日期,.com.oracle.us是域,注意这里是倒着写的,实际上“.”代替的路径中的“/”最大路径在最前面,rac是主机的别名,sdb1是共享存储的扩展主分区(primitive),如下图:

service tgtd restart,重启tgtd

chkconfig tgtd on,将tgtd服务设置开机启动

tgt-admin  --show:查看共享存储是否配置成功

 

4,新建共享存储盘的主分区(sdb分区sdb1

fdisk /dev/sdb

依次按np1,回车,回车,w

 

--以下操作是在节点机(RAC1)上操作

1,安装yum包:

yum install -y iscsi-initiator-utils-6.2.0.873-10.0.1.el6.x86_64.rpm

yum install -y scsi-target-utils-1.0.24-10.el6.x86_64.rpm 这个包可以不装?

 

2,发现以及连接共享存储

iscsiadm -m discovery -t sendtargets -p 192.168.0.50:以IP的方式,发现是哪一台共享存储,如下图

iscsiadm -m node -T iqn.2016-5.com.oracle.us:rac -l:登陆共享存储,.2016-5.com.oracle.us:rac 为之前共享存储上配置的iscsi,上图也可以看到。

 

 

3,在节点上配置共享存储

fdisk /dev/sdb

依次按ne1,回车,回车,w

fdisk /dev/sdb

依次按nl,回车,+5G、(+14G    +5表示配置5G磁盘分区,依次操作三次配置35G,然后再配置三个14G,如下图)

6个分区全部分完后,如下图,就可以

 

4然后在第二个节点(RAC2

然后连接共享存储:(与上述发现并连接共享存储一样)

iscsiadm -m node -T iqn.2016-5.com.oracle.us:rac -l

然后执行:

partprobe命令,出现以下报警是正常的

 

--以下操作在RAC1RAC2上都要编辑

1,编辑节点文件(直接复制即可)

vim /etc/udev/rules.d/99-asmdisk.rules

ACTION=="add",KERNEL=="sdb5",RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add",KERNEL=="sdb6",RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add",KERNEL=="sdb7",RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add",KERNEL=="sdb8",RUN+="/bin/raw /dev/raw/raw4 %N"

ACTION=="add",KERNEL=="sdb9",RUN+="/bin/raw /dev/raw/raw5 %N"

ACTION=="add",KERNEL=="sdb10",RUN+="/bin/raw /dev/raw/raw6 %N"

KERNEL=="raw[1-6]*",OWNER="grid",GROUP="asmdba",MODE="775"

 

2,查看共享存储:

ls /dev/raw/  可以通过该命令查看

如下图即是可以看到

 

3,两个节点添加用户和组

添加用户组

groupadd -g 1000 oinstall 

groupadd -g 1001 dba 

groupadd -g 1002 oper 

groupadd -g 1003 asmadmin 

groupadd -g 1004 asmoper 

groupadd -g 1005 asmdba 

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

添加用户

useradd -u 1100 -g oinstall -G dba,oper,asmadmin,asmdba,asmoper   grid

useradd -u 1101 -g oinstall -G dba,oper,asbmda   oracle

echo "oracle" | passwd --stdin oracle

echo "grid" | passwd --stdin grid

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

查看用户

id oracle

id grid

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

创建目录结构

mkdir -p /u01/app/grid

mkdir -p /u01/app/11.2.0/grid

mkdir -p /u01/app/oracle

chown -R oracle:oinstall /u01

chown -R grid:oinstall /u01/app/grid

chown -R grid:oinstall /u01/app/11.2.0

chmod -R 775 /u01

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

GRID环境变量

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_HOSTNAME=rac1.us.oracle.com

export ORACLE_SID=+ASM1

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export NLS_DATE_FORMAT="yy-mm-dd hh24:mi:ss"

export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

umask 022

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

ORACLE环境变量

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_HOSTNAME=rac1.us.oracle.com

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_UNQNAME=PROD

export ORACLE_SID=PROD1

export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib 

export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

umask 022

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

内核参数(将下列文本添加到末端,已有的可以直接修改)

vim /etc/sysctl.conf

#kernel.shmall = 2097152(已有)

#kernel.shmmax = 2147483648(已有)**********

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128 

net.core.rmem_default = 262144 

net.core.rmem_max = 4194304 

net.core.wmem_default = 262144 

net.core.wmem_max = 1048576  

net.ipv4.ip_local_port_range = 9000 65500 

fs.file-max = 6815744 

fs.aio-max-nr = 1048576  

net.ipv4.conf.default.rp_filter = 2

net.ipv4.conf.all.rp_filter = 2

 

sysctl -p

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

资源限制

vi /etc/security/limits.conf 

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

grid soft stack 10240

grid hard stack 32768

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

oracle hard stack 32768

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

 

配置时间同步

vim /etc/ntp.conf

添加到server

server 127.127.1.0

fudge  127.127.1.0 stratum 10

 

vim /etc/sysconfig/ntpd

OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g"

SYNC_HWCLOCK=yes

 

/etc/init.d/ntpd restart

chkconfig ntpd on

 

配置DNS服务器

--以下操作全部在共享存储的机器上(即RAC)操作

yum install bind bind-chroot -y

cd /etc/

cp -p named.conf named.conf.bak

--删除named.conf里原来的内容,将下列内容粘贴进去

vim named.conf

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

options {

        listen-on port 53 { any; };

        directory       "/var/named";

        allow-query     { any; };

        allow-query-cache     { any; };

        recursion no;

};

 

zone "." IN {

        type hint;

        file "named.ca";

};

 

zone "us.oracle.com" IN {

        type master;

        file "us.oracle.com.zone";

};

 

zone "0.0.10.in-addr.arpa" IN {

        type master;

        file "10.0.0.local";

};

 

zone "0.168.192.in-addr.arpa" IN {

        type master;

        file "192.168.0.local";

};

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

cd /var/named/

cp -p named.localhost us.oracle.com.zone

--原来的内容全部删除,将下列内容直接粘贴进去

vim  us.oracle.com.zone

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

$TTL 1D

@       IN SOA  us.oracle.com.    root.us.oracle.com. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

                        NS      rac.us.oracle.com.

rac1                A       10.0.0.2

rac2                A       10.0.0.3

rac1-vip            A       10.0.0.12

rac2-vip            A       10.0.0.13

rac1-priv1           A       192.168.0.10

rac1-priv2           A       192.168.0.20

rac2-priv1           A       192.168.0.30

rac2-priv2           A       192.168.0.40

rac-scan                A       10.0.0.22

rac-scan                A       10.0.0.23

rac-scan                A       10.0.0.24

rac                     A       192.168.0.50

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

cp -p us.oracle.com.zone 10.0.0.local

vi 10.0.0.local

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

$TTL 2D

@       IN SOA  us.oracle.com.    root.us.oracle.com. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

                        IN NS   rac.us.oracle.com.

2                       IN PTR  rac1.us.oracle.com.

3                       IN PTR  rac2.us.oracle.com.

12                      IN PTR  rac1-vip.us.oracle.com.

13                      IN PTR  rac2-vip.us.oracle.com.

22                      IN PTR  rac-scan.us.oracle.com.

23                      IN PTR  rac-scan.us.oracle.com.

24                      IN PTR  rac-scan.us.oracle.com.

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

cp -p 10.0.0.local 192.168.0.local

vi 192.168.0.local

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

$TTL 1D

@       IN SOA  us.oracle.com.    root.us.oracle.com. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

                        IN NS   rac.us.oracle.com.

10                       IN PTR  rac1-priv1.us.oracle.com.

20                       IN PTR  rac1-priv2.us.oracle.com.

30                       IN PTR  rac2-priv1.us.oracle.com.

40                       IN PTR  rac2-priv2.us.oracle.com.

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

/etc/init.d/named restart

chkconfig named on

chkconfig named --list

 

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

CLIENT DNS配置

--此操作需要在所有的节点机上操作(即RAC1RAC2上都要编辑),将下列内容添加到search下即可。

vim /etc/resolv.conf 

nameserver 192.168.56.2

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

 

DNS配置完了以后,可以敲nslookup + ip地址或者机器别名  可以查看域名解析是否正常,如下图

 

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

安装GI 检查(如果执行此命令之后有很多passed,则表示没有问题,其中如果有某些包failed可以通过安装时的提示再安装。)

./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose

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

 

3,安装GI

安装GI流程:

 

选第二个选项

 

SCAN NAMEscan的名字即可,下面GNS的勾去掉

先点ADD添加第二个节点,按照上面写即可,然后点ssh_connectivty,写上grid的密码(前面写的grid),再点setup将两个节点互信下,出现successed即可,最后点test按钮测试。

将节点2的改成private(私有的)

--注意:安装gi过程出现 Verification of the hosts config file failed 这个报错是hosts文件里有未注释的行,去掉即可。

 

名称改成ORA,也可以是别的,然后把三个5G的勾选上

勾选第二项,设置密码,最好复杂点的Abcd1234

 

 

 

 

 

接下来根据提示安装yum包和其他脚本。

--注意:该YUM命令和脚本需要在所有节点上都执行,如下图,节点2上就没有执行下面脚本。

yum install -y compat-libcap1-1.10-1.x86_64.rpm compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm libstdc++-devel-4.4.7-4.el6.x86_64.rpm gcc-c++-4.4.7-4.el6.x86_64.rpm ksh-20120801-10.el6.x86_64.rpm libaio-devel-0.3.107-10.el6.x86_64.rpm 

/tmp/CVU_11.2.0.4.0_grid/runfixup.sh

最后剩下ASMNTP错误直接忽略即可

--注意:安装过程中也会提示执行脚本,所有节点都执行下即可

--注意:安装完后会有提示报错,忽略即可

 

4,安装oracle软件

按照一般安装oracle软件和建库方法做即可

 

 

这里也需要做下互信

 

 

 

 

中间直接点下一步即可,如果有提示NTP错误,就配置下时间同步(时间同步所有节点都需要配置)。

 

最后dbca建库,根据提示选择合适选项即可。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30606702/viewspace-2099723/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30606702/viewspace-2099723/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值