RAC原理与搭建
RAC原理:
RAC是由网络,共享存储,gi和oracle四个部分组成如下图,下图为一个双节点RAC,两个节点之间需要能够互相访问,这样才能够在其中一个节点发生问题的时候另一个节点能够继续工作;这两个节点上又有GI软件和ORACLE软件安装在上面,同时这两节又能够同时连接到共享存储上(shared storage),需要使用私有IP连接到共享存储,所以这两个节点都需要配置一个网卡;为了外界能够连接进来,所以这两个节点又必须有公有IP连接到外网,所以需要有第二个网卡。
为什么要配置四个网卡:
节点对外提供服务的时候需要一个网络,对内又需要一个网络,为了保证高可用性,对外设置两个网卡,并做一个绑定(bond),这样在一个网卡发生问题的时候仍然能提供服务;对内的私有IP同样设置两个网卡以保证高可用,所以一个节点需要配置四个网卡。
搭建流程:
1,网络配置
2,存储配置
3,GI安装
4,ORACLE安装
安装前工作
安装三台虚拟机,分别为RAC,RAC1,RAC2;RAC作为共享存储,设置1g内存,设置两个硬盘,分别为20g,60g,配置一个网卡,模式为仅主机模式;RA1和RAC2都作为安装GI和oracle的主机,设置2g内存,硬盘30~40g,都需要配置4个网卡eth0~eth4,都为仅主机模式。按照下图做配置即可。(仅在安装虚拟机的时候设置主机名即可,网卡设置按照下方流程设置)
|
虚拟机名 |
主机名(hostname) |
|
RAC |
rac.us.oracle.com |
|
RAC1 |
rac1.us.oracle.com |
|
RAC2 |
rac2.us.oracle.com |
安装完虚拟机安装vmtools,以及关闭iptables、NetworkManager、selinux,然后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
--设置绑定网卡内容,设置绑定IP为10.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,刷新间隔miimon为100毫秒,模式为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:9a,MAC地址这一项可以不写)
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,对应里面对应网卡信息填入到新的eth1,2,3文件里,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
依次按n,p,1,回车,回车,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
依次按n,e,1,回车,回车,w
fdisk /dev/sdb
依次按n,l,回车,+5G、(+14G) (+5表示配置5G磁盘分区,依次操作三次配置3个5G,然后再配置三个14G,如下图)
6个分区全部分完后,如下图,就可以
4,然后在第二个节点(RAC2)
然后连接共享存储:(与上述发现并连接共享存储一样)
iscsiadm -m node -T iqn.2016-5.com.oracle.us:rac -l
然后执行:
partprobe命令,出现以下报警是正常的
--以下操作在RAC1和RAC2上都要编辑
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配置
--此操作需要在所有的节点机上操作(即RAC1和RAC2上都要编辑),将下列内容添加到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 NAME写scan的名字即可,下面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
最后剩下ASM和NTP错误直接忽略即可
--注意:安装过程中也会提示执行脚本,所有节点都执行下即可
--注意:安装完后会有提示报错,忽略即可
4,安装oracle软件
按照一般安装oracle软件和建库方法做即可
这里也需要做下互信
中间直接点下一步即可,如果有提示NTP错误,就配置下时间同步(时间同步所有节点都需要配置)。
最后dbca建库,根据提示选择合适选项即可。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30606702/viewspace-2099723/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30606702/viewspace-2099723/
本文详细介绍了Oracle RAC(Real Application Clusters)的原理及搭建流程,包括网络配置、共享存储配置、GI安装及Oracle软件安装等关键步骤。
3132

被折叠的 条评论
为什么被折叠?



