网络
网卡分配
网卡名 | 作用 | 网段 |
---|---|---|
eth0 | Public IP | 192.168.1.0/24 |
eth1 | NET IP | 192.168.2.0/24 |
eth2 | Private IP | 192.168.6.0/24 |
这里我用了三块网卡:
eth0做Public IP的网卡,同时会绑定Virtual IP 和 SCAN IP
eth1做NET IP的网卡,用来提供访问互联网的服务
eth2做Private的网卡,用来做节点之间的数据交互
注:在华为云控制台关闭node01节点和node02节点的Public IP网卡的
源/目的检查
,否则虚拟ip是不通的
IP段分配
Name | node01 | node02 |
---|---|---|
Public IP | 192.168.1.14 | 192.168.1.15 |
Private IP | 192.168.6.2 | 192.168.6.3 |
Virtual IP | 192.168.1.16 | 192.168.1.17 |
SCAN IP | 192.168.1.18 | 192.168.1.19 |
192.168.1.20 | ||
NET IP | 192.168.2.95 | 192.168.2.96 |
安全组
修改华为云安全组,放行169.254.0.0/16 网段、放行Public IP、放心Virtual IP、放行SCAN IP、Private IP
修改主机名
分别将两个节点的主机名改为node01.myCluster.com、node02.myCluster.com
配置host解析
修改node1和node2的hosts文件,添加如下内容
|
|
关闭libvirt的虚拟网卡功能
如果服务器安装了libvirt,则需要关闭其自带的虚拟网卡功能,方法如下:
|
|
(注:华为云提供的Centos6.8镜像不需要做此操作)
禁用ZEROCONF
分别编辑node01和node02上的/etc/sysconfig/network,添加如下内容
|
|
操作系统配置
安装依赖
|
|
配置swap
oracle要求swap空间至少为8G,我用的这个镜像默认swap为4G,因此需要调整,参考centos6.8调整swap空间 调整即可
配置内核参数
我服务器配置为4C/8G
在node01和node02上编辑/etc/sysctl.conf,添加或修改如下内容
|
|
关于以上部分参数的介绍:
kernel.shmmax:
用来定义共享内存单个共享内存段可使用的内存大小,最好设置改值得大小能容下整个SGA的大小,否则会导致性能下降,原因是因为在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。
以上未经过验证
基于以上的说法,在设置改参数的时候需要考虑SGA的大小。在我的数据库中,一般设置MEMORY_TARGET为物理内存80%,SGA又占MEMORY_TARGET的80%,因此可将kernel.shmmax设置为物理内存的64%,一般情况下大于SGA即可,这里为了方便计算,我设置为物理-1byte,既8589934591byte
kernel.shmall:
该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍)。这时可以将shmmax参数调整到16G了,同时可以修改SGA_MAX_SIZE和SGA_TARGET为12G(您想设置的SGA最大大小,当然也可以是2G~14G等,还要协调PGA参数及OS等其他内存使用,不能设置太满,比如16G)
以上的说法来自于网络,这里贴出来仅供参考
其实,该参数是用来控制可用的共享内存数的,单位是page(通常在linux中1page=4KB),只要可用的共享内存书大于SGA的大小即可,一般默认的大小就可以满足大部分oracle的需求了,这里我没有修改默认值
kernel.shmmni:
该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。
fs.file-max:
该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。
fs.aio-max-nr:
此参数限制并发未完成的请求,应该设置避免I/O子系统故障。
kernel.sem:
以kernel.sem = 250 32000 100 128为例:
250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
32000是参数semmns的值,表示系统内可允许的信号量最大数目。
100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。
128是参数semmni的值,表示系统信号量集合总数。
net.ipv4.ip_local_port_range:
表示应用程序可使用的IPv4端口范围。
net.core.rmem_default:
表示套接字接收缓冲区大小的缺省值。
net.core.rmem_max:
表示套接字接收缓冲区大小的最大值。
net.core.wmem_default:
表示套接字发送缓冲区大小的缺省值。
net.core.wmem_max:
表示套接字发送缓冲区大小的最大值。
执行sysctl -p
使其生效
关闭NTP
Oracle Rac有自带的Oracle Cluster Time Synchronization Service来保证节点间的时间同步,因此,关闭自带的NTP服务
命令如下:
|
|
配置PAM
在node01和node02节点上编辑/etc/pam.d/login,添加如下内容:
|
|
limit文件
在node01和node02节点上编辑/etc/security/limits.conf,添加如下内容:
|
|
关闭SELinux
在node01和node02上分别执行
|
|
在node01和node02节点上编辑文件/etc/sysconfig/selinux,修改如下内容:
|
|
创建用户、组、文件夹
在node01和node02上分别执行如下命令:
|
|
将下面的两个文件分别上传至node01的/u01/software文件夹下
- linuxx64_12201_grid_home.zip
- linuxx64_12201_database.zip
解压并修改对应权限
|
|
配置环境变量
配置grid用户的环境变量
在node01上,grid用户
编辑/home/grid/.bash_profile,添加如下内容:
|
|
在node02上,grid用户
编辑/home/grid/.bash_profile,添加如下内容:
|
|
配置oracle的环境变量
在node01上,oracle用户
编辑/home/oracle/.bash_profile,添加如下内容:
|
|
在node02上,oracle用户
编辑/home/oracle/.bash_profile,添加如下内容:
|
|
配置SSH互信
在node01上,grid用户,分别为grid用户和oracle用户配置SSH互信。
注:配置过程中需要输入grid和oracle用户的密码,请提前设置好
|
|
在node01上,grid用户,尝试登录node02验证
|
|
在node02上,grid用户,尝试登录node01验证
|
|
在node01上,oracle用户,尝试登录node02验证
|
|
在node02上,oracle用户,尝试登录node01验证
|
|
配置存储
在华为云控制台选购磁盘,共享模式选择共享,磁盘模式选择VBD(这里使用的是VBD的磁盘,使用oracleasm来配置共享磁盘)
安装ASMLIB
创建分区
注:
- 我的共享磁盘挂载点为/dev/xvdc
- OCR_VOT_GIMR磁盘组和DATA磁盘组的冗余类型都选择为External
- /dev/sdb共100G空间,创建1个40G分区分配给OCR_VOT_GIMR磁盘组使用,创建一个60G分区分配至DATA磁盘组
- ASM磁盘要求参考官方文档
在node01上执行,仅分区即可
|
|
分区结果如下:
|
|
创建磁盘组
node01执行如下命令创建磁盘组:
|
|
使用oracleasm listdisks
查看已创建的磁盘组,如下:
|
|
在node02上扫描node01上创建的磁盘组,如下:
|
|
使用oracleasm listdisks
查看扫描到的磁盘组,如下:
|
|
至此,安装环境准备完成。