文章目录
准备规划
对于Oracle RAC环境来说,在最初就需要规划好网络和共享磁盘。
网络规划
在配置网络时,Oracle RAC的每个节点必须具有至少两个以上的网卡,一张网卡对外提供网络服务,另一张网卡用于各个节点间的通信和心跳检测等。
注意,在配置RAC集群的网卡时,如果节点1的公共接口是eth0,则所有节点的公共接口必须是eth0。(配置私有网口时也必须一致)另外,每个节点的主机名必须符合RFC 952标准,不允许使用下划线。
对于Oracle 11G RAC双节点来说,Oracle要求我们至少有7个ip地址,Public IP、Virtual IP和Scan IP在同一个网段下,Private IP在另一个网段中。例如,我这里配置的双节点网络如下所示:
| 主机名 | rac-1 | rac-2 |
|---|---|---|
| Public IP | 192.168.12.20 | 192.168.12.21 |
| Private IP | 1.1.1.1 | 1.1.1.2 |
| Virtual ip | 192.168.12.22 | 192.168.12.23 |
| Scan ip | 192.168.12.100 | 192.168.12.100 |
另外,在虚拟机配置双网卡时,一张网卡设置为桥接或NET模式,另一个网卡必须配置为仅主机模式。
共享存储规划
每个硬件提供厂商都有不同的共享存储解决方案,我这里测试使用的是VMware Workstation Pro虚拟机来配置共享存储。
在创建共享存储时,建议是OCR给3个磁盘,每个在1G-10G左右就足够了,冗余模式选择Normal,有条件的可以选择High;DATA盘尽量给多点空间,毕竟是要存储数据,需要根据业务去评估数据的大小,而我这里是测试使用,因此仅分配50G,冗余选择External;FRA可配也可不配置,如果不配置就将其放在Linux的文件系统中。配置如下表所示:
| 磁盘名 | 磁盘数量 | 磁盘大小 | 冗余模式 |
|---|---|---|---|
| OCR | 3 | 10G/个 | Normal |
| DATA | 1 | 50G | External |
| FRA | 1 | 20G | External |
方案
1、主机名配置
首先是配置两台节点的主机名,通常将其改成辨识度高的主机名。我这里分别修改为rac-1,rac-2。
rac-1
# 修改主机名
[root@localhost ~]# hostnamectl set-hostname rac-1
# 编辑配置文件hosts
[root@localhost ~]# vim /etc/hosts
修改rac-1的hosts文件,在下面新增映射规则,修改后保存并退出。
# Public ip
192.168.12.20 rac-1
192.168.12.21 rac-2
# Private ip
1.1.1.1 rac-1-priv
1.1.1.2 rac-2-priv
# Virtual ip
192.168.12.22 rac-1-vip
192.168.12.23 rac-2-vip
# Scan ip
192.168.12.100 rac-scan
配置好后刷新主机名
[root@localhost ~]# exec bash
rac-2
# 修改主机名
[root@localhost ~]# hostnamectl set-hostname rac-2
# 编辑配置文件hosts
[root@localhost ~]# vim /etc/hosts
修改rac-2的hosts文件,在下面新增映射规则,修改后保存并退出。
# Public ip
192.168.12.20 rac-1
192.168.12.21 rac-2
# Private ip
1.1.1.1 rac-1-priv
1.1.1.2 rac-2-priv
# Virtual ip
192.168.12.22 rac-1-vip
192.168.12.23 rac-2-vip
# Scan ip
192.168.12.100 rac-scan
配置好后刷新主机名
[root@localhost ~]# exec bash
2、创建用户组及用户
配好主机名后,在两台节点上创建grid和oracle的管理用户。
rac-1
# 新建用户组oinstall
[root@rac-1 ~]# groupadd oinstall -g 500
# 新建用户组dba
[root@rac-1 ~]# groupadd dba -g 501
# 新建用户组oper
[root@rac-1 ~]# groupadd oper -g 502
# 新建用户组asmadmin
[root@rac-1 ~]# groupadd asmadmin -g 2003
# 新建用户组asmdba
[root@rac-1 ~]# groupadd asmdba -g 2004
# 新建用户组asmoper
[root@rac-1 ~]# groupadd asmoper -g 2005
# 创建oracle用户并加入到相应组中
[root@rac-1 ~]# useradd -u 500 -g oinstall -G dba,oper,asmdba,asmadmin,asmoper -d /home/oracle oracle
# 创建grid用户并加入到相应组中
[root@rac-1 ~]# useradd -u 2001 -g oinstall -G asmadmin,asmdba,asmoper,dba -d /home/grid grid
# 设置oracle用户密码
[root@rac-1 ~]# passwd oracle
# 设置grid用户密码
[root@rac-1 ~]# passwd grid
rac-2
# 新建用户组oinstall
[root@rac-2 ~]# groupadd oinstall -g 500
# 新建用户组dba
[root@rac-2 ~]# groupadd dba -g 501
# 新建用户组oper
[root@rac-2 ~]# groupadd oper -g 502
# 新建用户组asmadmin
[root@rac-2 ~]# groupadd asmadmin -g 2003
# 新建用户组asmdba
[root@rac-2 ~]# groupadd asmdba -g 2004
# 新建用户组asmoper
[root@rac-2 ~]# groupadd asmoper -g 2005
# 创建oracle用户并加入到相应组中
[root@rac-2 ~]# useradd -u 500 -g oinstall -G dba,oper,asmdba,asmadmin,asmoper -d /home/oracle oracle
# 创建grid用户并加入到相应组中
[root@rac-2 ~]# useradd -u 2001 -g oinstall -G asmadmin,asmdba,asmoper,dba -d /home/grid grid
# 设置oracle用户密码
[root@rac-2 ~]# passwd oracle
# 设置grid用户密码
[root@rac-2 ~]# passwd grid
3、关闭并禁用firewalld和selinux
为避免在安装过程中受到firewalld和selinux的影响,导致安装失败,暂时将它们全部禁用掉。
rac-1
# 停止firewalld服务运行
[root@rac-1 ~]# systemctl stop firewalld
# 禁用firewalld服务自启动
[root@rac-1 ~]# systemctl disable firewalld
# 禁用selinux自启动
[root@rac-1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 立即停止selinux
[root@rac-1 ~]# setenforce 0
rac-2
# 停止firewalld服务运行
[root@rac-2 ~]# systemctl stop firewalld
# 禁用firewalld服务自启动
[root@rac-2 ~]# systemctl disable firewalld
# 禁用selinux自启动
[root@rac-2 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 立即停止selinux
[root@rac-2 ~]# setenforce 0
4、关闭并禁用avahi-daemon
avahi-daemon服务可能会在网卡流量大的时候,造成网络请求障碍,因此禁用它。
rac-1
# 停止avahi-daemon服务
[root@rac-1 ~]# systemctl stop avahi-daemon
# 禁用avahi-daemon服务的自启动
[root@rac-1 ~]# systemctl disable avahi-daemon
# 配置NOZEROCONF参数
[root@rac-1 ~]# echo 'NOZEROCONF=yes' >> /etc/sysconfig/network
rac-2
# 停止avahi-daemon服务
[root@rac-2 ~]# systemctl stop avahi-daemon
# 禁用avahi-daemon服务的自启动
[root@rac-2 ~]# systemctl disable avahi-daemon
# 配置NOZEROCONF参数
[root@rac-2 ~]# echo 'NOZEROCONF=yes' >> /etc/sysconfig/network
5、关闭透明大页和NUMA
Oracle官方文档中指出透明大页可能会导致在RAC中造成性能影响,因此关闭透明大页。NUMA为什么关闭,暂时不清楚,后续研究下。
rac-1
# 配置启动禁用透明大页和NUMA
[root@rac-1 ~]# sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
# 生成启动规则
[root@rac-1 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启服务器
[root@rac-1 ~]# reboot
rac-2
# 配置启动禁用透明大页和NUMA
[root@rac-2 ~]# sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
# 生成启动规则
[root@rac-2 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启服务器
[root@rac-2 ~]# reboot
6、禁用NTP服务
Oracle会在安装时检测是否有NTP服务,如果有,则会认为你的服务器是使用NTP来同步节点时间的,会将自身的CTSS服务配置成观察状态;如果检测到没有NTP服务,则会使用CTSS服务来同步时间。CTSS服务会将安装Grid软件的那台来作为主节点,然后让集群的其他节点时间与主节点的时间进行同步。
禁用NTP服务,使用Oracle的CTSS服务来同步节点的时间。
rac-1
# 停止NTP服务
[root@rac-1 ~]# systemctl stop ntpd
# 禁用NTP服务自启动
[root@rac-1 ~]# systemctl disable ntpd
禁用ntp服务后,确认下主节点的时区和时间。如果时区和时间错误,则将其改为正确的。
# 确认时区和时间
[root@rac-1 ~]# date
rac-2
# 停止NTP服务
[root@rac-1 ~]# systemctl stop ntpd
# 禁用NTP服务自启动
[root@rac-1 ~]# systemctl disable ntpd
禁用ntp服务后,确认下服务器与主节点的时间和时区。如果时区和时间差异较大,则将其修改为主节点的时区,并将时间调整到与主节点相近的时间,后续CTSS服务会修正时间。
# 确认时区和时间
[root@rac-1 ~]# date
7、配置内核参数
配置内核参数,调整Oracle性能。
rac-1
[root@rac-1 ~]# vim /etc/sysctl.conf
新增以下参数,并根据实际情况调整参数大小。
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
配置介绍:
- fs.file-max 最大打开文件数
- kernel.shmall 共享内存的总量,8G内存设置:2097152*4k/1024/1024
- kernel.shmmax 最大共享内存的段大小,一般设置为服务器的80%内存总大小
- net.ipv4.ip_local_port_range 可使用的ipv4端口范围
其他参数有时间再去研究,这里暂时先写这几个重要的。如果你的服务器只运行单个实例(数据库),我这里给出一个大概的建议值参考:
- 内存为12G
- kernel.shmall = 3145728
- kernel.shmmax = 12884901887
- 内存为16G
- kernel.shmall = 4194304
- kernel.shmmax = 17179869183
- 内存为32G
- kernel.shmall = 8388608
- kernel.shmmax = 34359738367
- 内存为64G
- kernel.shmall = 16777216
- kernel.shmmax = 68719476735
重加载内核参数
# 让参数生效
[root@rac-1 ~]# sysctl -p
rac-2
[root@rac-1 ~]# vim /etc/sysctl.conf
新增以下参数,并根据实际情况调整参数大小。
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
配置介绍:
- fs.file-max 最大打开文件数
- kernel.shmall 共享内存的总量,8G内存设置:2097152*4k/1024/1024
- kernel.shmmax 最大共享内存的段大小,一般设置为服务器的80%内存总大小
- net.ipv4.ip_local_port_range 可使用的ipv4端口范围
其他参数有时间再去研究,这里暂时先写这几个重要的。如果你的服务器只运行单个实例(数据库),我这里给出一个大概的建议值参考:
- 内存为12G
- kernel.shmall = 3145728
- kernel.shmmax = 12884901887
- 内存为16G
- kernel.shmall = 4194304
- kernel.shmmax = 17179869183
- 内存为32G
- kernel.shmall = 8388608
- kernel.shmmax = 34359738367
- 内存为64G
- kernel.shmall = 16777216
- kernel.shmmax = 68719476735
重加载内核参数
# 让参数生效
[root@rac-1 ~]# sysctl -p
8、限制用户资源使用
配置oracle用户和grid用户的资源硬限制和软限制。
rac-1
编辑limits配置文件
[root@rac-1 ~]# vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc

本文介绍在CentOS系统上搭建Oracle RAC环境的方案。先进行网络和共享存储规划,接着给出详细搭建步骤,包括主机名配置、用户创建、服务禁用、参数配置等,还提及共享存储的不同配置方式,最后说明了安装过程中可能出现的错误及解决办法。
最低0.47元/天 解锁文章
1341

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



