共计 29225 个字符,预计需要花费 74 分钟才能阅读完成。
环境
软硬件环境
硬件环境:
浪潮英信服务器 NF570M3 两台,华为 OceanStor 18500 存储一台,以太网交换机两台,光纤交换机两台。
软件环境:
操作系统:RedHat Enterprise Linux 6.7 x64
集群环境:RHCS
数据库:Oracle 11g R2
多路径软件:UltraPath for Linux
存储划分
类型 | 卷 | 大小 | 挂载点 | 用途 | 备注 |
内置硬盘 | 标准 | 500MB | /boot | 启动分区 |
两块内置硬盘作 RAID1 |
LVM | 20GB | /home | 用户分区 | ||
20GB | /var | 日志分区 | |||
20GB | /opt | 应用分区 | |||
32GB | N/A | SWAP 分区 | |||
500GB | / | 根分区 | |||
共享存储 | LUN | 500GB | /oradata | 数据库数据区 | SAN 存储分配一个 500GB 的 LUN |
网络规划
主机名 | IP | 网口 | 用途 | 备注 |
ZHXYHDB01 | 35.1.1.250 | bond0(eth0、eth2) | 业务 IP |
心跳 IP 和 Fence IP 应在同一网段; 通常业务 IP 和此二者不在同一网段; |
50.3.1.200 | bond1(eth1、eth3) | 心跳 IP | ||
50.3.1.202 | MGMT | Fence IP | ||
ZHXYHDB02 | 35.1.1.251 | bond0(eth0、eth2) | 业务 IP | |
50.3.1.201 | bond1(eth1、eth3) | 心跳 IP | ||
50.3.1.203 | MGMT | Fence IP | ||
35.1.1.245 | 集群 VIP |
集群拓扑
系统预配置
系统安装(略)
存储识别
已在华为 OceanStor 存储上为本项目分配了 500GB LUN,只需 在两台服务器上 分别安装华为 OceanStor UltraPath 多路径软件,重启后即可正确识别存储裸设备。
/dev/sdb 即为识别到的共享存储,在两台服务器上均正确识别存储后,利用此共享存储空间创建 LVM 逻辑卷组和逻辑卷。以下操作均在其中一台服务器上进行:
1、使用 fdisk 对 /dev/sdb 新建磁盘分区 sdb1(使用全部 500GB 共享存储空间):
2、将其格式化为 ext4 文件系统格式:
# mkfs.ext4 /dev/sdb1
3、新建 LVM 卷组 oraclevg,将 /dev/sdb1 创建为物理卷并加入卷组中,在卷组中创建逻辑卷 oraclelv:
# pvcreate /dev/sdb1
# vgcreate oraclevg /dev/sdb1
# lvcreate -n oraclelv -L +500G /dev/oraclevg #可通过 vgdisplay 查看 vg 全部剩余 PE,然后使用‘-l PE 数’参数将 vg 全部剩余空间加入 lv 中,而无须使用 -L +xxGB 的方式
# mkfs.ext4 /dev/oraclevg/oraclelv
# mkdir /oradata
#
在两台服务器上 分别创建 /oradata 目录,用于挂载 oraclelv 逻辑卷,作为数据库数据区,修改该目录权限:
# mkdir /oradata
# chown oracle:oinstall /oradata
网络配置
网络配置需按照网络规划表在两台服务器上分别配置,正式配置前先关闭 NetworkManager 服务:
# service networkmanager stop
# chkconfig networkmanager off
业务 IP 和心跳 IP 均作网卡绑定,业务 IP 配置网关,心跳 IP 不配网关。在 /etc/sysconfig/network-scripts 目录下新建 ifcfg-bond0 和 ifcfg-bond1,以业务 IP 配置为例,网卡绑定配置如下:
ifcfg-bond0:
DEVICE=bond0
NAME=bond0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
IPADDR=35.1.1.250
NETMASK=255.255.255.0
GATEWAY=35.1.1.1 # 如果是心跳 IP 则不能配置此行
BONDING_OPTS="miimon=100 mode=1"
ifcfg-eth0:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
SLAVE=yes
MASTER=bond0
ifcfg-eth2:
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
SLAVE=yes
MASTER=bond0
然后在 /etc/modprobe.d/ 目录下新建 bonding.conf 文件,加入如下内容:
alias bond0 bonding
alias bond1 bonding
关闭 NetworkManager 服务,重启 network 服务:
# service NetworkManager stop
# chkconfig NetworkManager off
# service network restart
HA 集群所需的 Fence 设备在本项目中可以直接使用浪潮服务器自带的 IPMI,即 MGMT 管理口的服务器管理系统。Fence IP���配置需要重启服务器,进入 BIOS 中的 Advance 选项的 IPMI 或者 BMC 项中配置,此处建议配置网关。同样需要在两台服务器上分别配置。
检查网络是否调通,在两台服务器上分别 ping 110.1.5.1 网关、110.1.5.61–110.1.5.66 的全部地址以及需要连通的其他网段地址。
最后在两台服务器上分别配置 HOST 文件,完成主机名与 IP 的映射(此步不是必须,如果主机名、心跳名无关紧要的话):
#/etc/hosts
35.1.1.250 ZHXYHDB01
35.1.1.251 ZHXYHDB02
35.1.1.245 ZHXYHDB
50.3.1.200 ZHXYHDB01-PRIV
50.3.1.201 ZHXYHDB02-PRIV
YUM 本地源配置
本地源用于方便后续的 RHCS 集群软件以及 oracle 所需软件包的安装。需要在两台服务器上分别配置。
两台服务器上分别挂载 RedHat 6.7 系统镜像:
# mount -o loop redhat6.7.iso /mnt/iso
在 /etc/yum.repos.d 目录下新建 rhel6.7.repo 文件,写入如下内容:
#rhel6.7.repo
[Server]
name=RHELServer
baseurl=file:///mnt/iso/Server
enabled=1
gpgcheck=0
[ResilientStorage]
name=RHELResilientStorage
baseurl=file:///mnt/iso/ResilientStorage
enabled=1
gpgcheck=0
[ScalableFileSystem]
name=RHELScalableFileSystem
baseurl=file:///mnt/iso/ScalableFileSystem
enabled=1
gpgcheck=0
[HighAvailability]
name=RHELHighAvailability
baseurl=file:///mnt/iso/HighAvailability
enabled=1
gpgcheck=0
[LoadBalancer]
name=RHELLoadBalancer
baseurl=file:///mnt/iso/LoadBalancer
enabled=1
gpgcheck=0
# yum clean all # 终端输入此命令 更新源
关闭 SELinux 和 iptables 防火墙
1、关闭防火墙
在两台服务器上分别执行以下命令:
# service iptables stop
# chkconfig iptables off
2、关闭 SELinux:
修改 /etc/selinux/config 文件
将 SELINUX=enforcing 改为 SELINUX=disabled
重启机器即可
Oracle 数据库安装
oracle 数据库软件需要 在两台服务器上分别安装,只安装数据库软件而不创建数据库实例。各种 Linux 发行版上安装 Oracle 11g R2 的详细需求和过程可参见官方文档:
https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm
下面是本项目的 Oracle 数据库完整安装过程。
数据库安装前配置
新建 oracle 用户和组
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
配置 oracle 内核参数
内核参数配置在 /etc/sysctl.conf 文件中,配置参数说明:
在安装 Oracle 的时候需要调整 linux 的内核参数,但是各参数代表什么含义呢,下面做详细解析。Linux 安装文档中给出的最小值:fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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 = 1048586
各参数详解:kernel.shmmax:是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的 SGA , 设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及 ServerProcess 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。官方建议值:32 位 linux 系统:可取最大值为 4GB(4294967296bytes)-1byte,即 4294967295。建议值为多于内存的一半,所以如果是 32 为系统,一般可取值为 4294967295。32 位系统对 SGA 大小有限制,所以 SGA 肯定可以包含在单个共享内存段中。64 位 linux 系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE 即可,可以取物理内存 -1byte。例如,如果为 12GB 物理内存,可取 12*1024*1024*1024-1=12884901887,SGA 肯定会包含在单个共享内存段中。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)kernel.shmmni:该参数是共享内存段的最大数量。shmmni 缺省值 4096,一般肯定是够用了。fs.file-max:该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表 linux 系统中可以打开的文件的数量。fs.aio-max-nr:此参数限制并发未完成的请求,应该设置避免 I / O 子系统故障。推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个。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:表示套接字发送缓冲区大小的最大值。
其中kernel.shmmax 关系到 Oracle 数据库的系统全局区 SGA 的最大大小,kernel.shmmax 值不能小于 SGA 的大小,否则后面设置 SGA 时会因为 kernel.shmmax 太小而出错。kernel.shmmax 的大小需要根据当前系统环境的内存大小和 Oracle 数据库的 SGA 所期望的大小进行设定。SGA 和 PGA 大小的设定原则为:
Oracle 官方文档推荐:
MEMORY_TARGET= 物理内存 x 80%
MEMORY_MAX_SIZE= 物理内存 x 80%
对于 OLTP 系统:SGA_TARGET=(物理内存 x 80%) x 80%
SGA_MAX_SIZE=(物理内存 x 80%) x 80%
PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 20%
对于 DSS 系统:SGA_TARGET=(物理内存 x 80%) x 50%
SGA_MAX_SIZE=(物理内存 x 80%) x 50%
PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 50%
本项目中服务器内存为 32G,为 SGA 设置最大值为 20G,因此将 Oralce 数据库内核参数配置为:
#oracle
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 5242880
kernel.shmmax = 21474836480
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 = 1048586
将以上代码加入 /etc/sysctl.conf 文件的末尾,并在终端输入 sysctl -p 命令使配置立即生效。
配置 Oracle 系统 资源限制
系统资源限制文件为 /etc/security/limits.conf,该文件说明如下:
limits.conf 的格式如下:username|@groupname type resource limit
username|@groupname:设置需要被限制的用户名,组名前面加 @和用户名区别。也可以用通配符 *来做所有用户的限制。type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比 har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。resource:core - 限制内核文件的大小
date - 最大数据大小
fsize - 最大文件大小
memlock - 最大锁定内存地址空间
nofile - 打开文件的最大数目
rss - 最大持久设置大小
stack - 最大栈大小
cpu - 以分钟为单位的最多 CPU 时间
noproc - 进程的最大数目
as - 地址空间限制
maxlogins - 此用户允许登录的最大数目
要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:session required /lib/security/pam_limits.so
本项目的 Oracle 资源限制设置为:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
将以上代码加入 /etc/security/limits.conf 文件末尾。
配置 Oracle 环境变量
1、创建 Oracle 相关目录并更改相关权限:
# mkdir -p /opt/oracle/oracle11g
# mkdir -p /opt/oraInventory
# chown -R oracle:oinstall /opt/oracle
# chmod -R 775 /opt/oracle
# chown -R oracle:oinstall /opt/oraInventory
# chmod -R 775 /opt/oraInventory
2、配置 Oracle 环境变量:
在 /etc/profile 文件末尾加入如下内容:
#Oracle
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/oracle11g
export ORACLE_SID=zxbank #本项目的 oracle 实例名
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
终端输入如下命令使配置生效:
# . /etc/profile
安装相关软件包
Oracle 数据库软件的安装和运行需要依赖部分第三方软件包,安装 Oracle 数据库前需要先安装这些软件包,根据 Oracle 官方安装文档,RedHat 6.7 环境需要安装的软件包有:
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
elfutils-libelf-0.161-3.el6(x86_64)
elfutils-0.161-3.el6(x86_64)
elfutils-devel-0.161-3.el6(x86_64)
elfutils-libs-0.161-3.el6(x86_64)
elfutils-libelf-devel-0.161-3(el6.x86_64)
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)
unixODBC-2.2.14-11.el6 (x86_64) or later
unixODBC-2.2.14-11.el6.i686 or later
unixODBC-devel-2.2.14-11.el6 (x86_64) or later
unixODBC-devel-2.2.14-11.el6.i686 or later
以上包均可通过使用 yum 命令从之前配置好的本地源中安装。
【注】:安装软件包技巧:软件包版本号无须完全一致,也无须一个个安装,只需利用通配符进行批量安装即可,如安装 unixODBC 的相关包,可直接使用
# yum -y install unixODBC*
命令一步到位,不会产生软件包漏装的问题。正式安装 Oracle 数据库时会有一个检查系统环境是否满足需求的过程,如果提示部分软件包没有安装,则在 root 账户下使用 yum 进行安装即可,如果只是软件包版本不对则可直接忽略。
Oracle 数据库正式安装
切换到 oracle 用户下:
# su - oracle
将系统变量 LANG 暂时设置为英文,以免安装界面出现中文字符无法显示:
# export LANG=en_US
解压 Oracle 安装包,执行 runInstaller 进行图文界面安装。
# cd database
# ./runInstaller
不勾选也不填邮箱,点下一步,弹出提示点是。
选只安装数据库软件,下一步。
选单节点安装,下一步。
默认,下一步。
选企业版,下一步。
之前预安装配置没问题的话,这里会自动填上安装路径,直接下一步。
下一步。
确定告警的这些包是否已经安装,如果都只是依赖包的版本问题,直接勾选‘Ingore all’, 然后点 Finish 即可完成安装,完成后按要求使用 root 账号运行两个脚本。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-04/130570p2.htm
监听器配置
切换到 Oracle 账户下使用 netca 进行监听器的配置,具体步骤如下:
#oracle 账户下操作
# export LANG=en_US #更改系统语言为英文,避免 netca 图像界面乱码
# netca
打开图形界面,一路 Next 即可完成一个默认监听器的配置。
配置完成后会自动启动监听器,如未自动启动请在 oracle 账户下手动启动:
#oracle 账户下操作
# lsnrctl start
自动配置的监听器只能提供本机(localhost)连接。这里先启用自动配置的监听器用于后续数据库实例的安装和配置。
数据库实例配置
在一台节点服务器上挂载共享存储,开启监听器,然后在该存储上创建数据库实例,关闭实例,关闭监听器,完成后卸载共享存储。再将相应的实例配置信息复制到另外一台服务器上。最后在两台节点服务器上分别配置对应于浮动 IP 的监听器。这里我们在 35.1.1.250 节点上完成此操作。具体步骤如下:
root 账户下,挂载共享存储:
#mount /dev/oraclevg/oraclelv /oradata
开启 oracle 监听器(保证监听器已经按照上文配置完成):
# lsnrctl start
监听器启动后状态应如下图所示:
切换到 oracle 账户下,开始进行实例创建,这里使用 dbca 在图形化界面创建,以下数据库实例创建和配置均在 oracle 账户下进行:
#oracle 账户下操作
# export LANG=en_US #更改系统语言为英文,避免 netca 图像界面乱码
# dbca
环境
软硬件环境
硬件环境:
浪潮英信服务器 NF570M3 两台,华为 OceanStor 18500 存储一台,以太网交换机两台,光纤交换机两台。
软件环境:
操作系统:RedHat Enterprise Linux 6.7 x64
集群环境:RHCS
数据库:Oracle 11g R2
多路径软件:UltraPath for Linux
存储划分
类型 | 卷 | 大小 | 挂载点 | 用途 | 备注 |
内置硬盘 | 标准 | 500MB | /boot | 启动分区 |
两块内置硬盘作 RAID1 |
LVM | 20GB | /home | 用户分区 | ||
20GB | /var | 日志分区 | |||
20GB | /opt | 应用分区 | |||
32GB | N/A | SWAP 分区 | |||
500GB | / | 根分区 | |||
共享存储 | LUN | 500GB | /oradata | 数据库数据区 | SAN 存储分配一个 500GB 的 LUN |
网络规划
主机名 | IP | 网口 | 用途 | 备注 |
ZHXYHDB01 | 35.1.1.250 | bond0(eth0、eth2) | 业务 IP |
心跳 IP 和 Fence IP 应在同一网段; 通常业务 IP 和此二者不在同一网段; |
50.3.1.200 | bond1(eth1、eth3) | 心跳 IP | ||
50.3.1.202 | MGMT | Fence IP | ||
ZHXYHDB02 | 35.1.1.251 | bond0(eth0、eth2) | 业务 IP | |
50.3.1.201 | bond1(eth1、eth3) | 心跳 IP | ||
50.3.1.203 | MGMT | Fence IP | ||
35.1.1.245 | 集群 VIP |
集群拓扑
系统预配置
系统安装(略)
存储识别
已在华为 OceanStor 存储上为本项目分配了 500GB LUN,只需 在两台服务器上 分别安装华为 OceanStor UltraPath 多路径软件,重启后即可正确识别存储裸设备。
/dev/sdb 即为识别到的共享存储,在两台服务器上均正确识别存储后,利用此共享存储空间创建 LVM 逻辑卷组和逻辑卷。以下操作均在其中一台服务器上进行:
1、使用 fdisk 对 /dev/sdb 新建磁盘分区 sdb1(使用全部 500GB 共享存储空间):
2、将其格式化为 ext4 文件系统格式:
# mkfs.ext4 /dev/sdb1
3、新建 LVM 卷组 oraclevg,将 /dev/sdb1 创建为物理卷并加入卷组中,在卷组中创建逻辑卷 oraclelv:
# pvcreate /dev/sdb1
# vgcreate oraclevg /dev/sdb1
# lvcreate -n oraclelv -L +500G /dev/oraclevg #可通过 vgdisplay 查看 vg 全部剩余 PE,然后使用‘-l PE 数’参数将 vg 全部剩余空间加入 lv 中,而无须使用 -L +xxGB 的方式
# mkfs.ext4 /dev/oraclevg/oraclelv
# mkdir /oradata
#
在两台服务器上 分别创建 /oradata 目录,用于挂载 oraclelv 逻辑卷,作为数据库数据区,修改该目录权限:
# mkdir /oradata
# chown oracle:oinstall /oradata
网络配置
网络配置需按照网络规划表在两台服务器上分别配置,正式配置前先关闭 NetworkManager 服务:
# service networkmanager stop
# chkconfig networkmanager off
业务 IP 和心跳 IP 均作网卡绑定,业务 IP 配置网关,心跳 IP 不配网关。在 /etc/sysconfig/network-scripts 目录下新建 ifcfg-bond0 和 ifcfg-bond1,以业务 IP 配置为例,网卡绑定配置如下:
ifcfg-bond0:
DEVICE=bond0
NAME=bond0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
IPADDR=35.1.1.250
NETMASK=255.255.255.0
GATEWAY=35.1.1.1 # 如果是心跳 IP 则不能配置此行
BONDING_OPTS="miimon=100 mode=1"
ifcfg-eth0:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
SLAVE=yes
MASTER=bond0
ifcfg-eth2:
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
SLAVE=yes
MASTER=bond0
然后在 /etc/modprobe.d/ 目录下新建 bonding.conf 文件,加入如下内容:
alias bond0 bonding
alias bond1 bonding
关闭 NetworkManager 服务,重启 network 服务:
# service NetworkManager stop
# chkconfig NetworkManager off
# service network restart
HA 集群所需的 Fence 设备在本项目中可以直接使用浪潮服务器自带的 IPMI,即 MGMT 管理口的服务器管理系统。Fence IP���配置需要重启服务器,进入 BIOS 中的 Advance 选项的 IPMI 或者 BMC 项中配置,此处建议配置网关。同样需要在两台服务器上分别配置。
检查网络是否调通,在两台服务器上分别 ping 110.1.5.1 网关、110.1.5.61–110.1.5.66 的全部地址以及需要连通的其他网段地址。
最后在两台服务器上分别配置 HOST 文件,完成主机名与 IP 的映射(此步不是必须,如果主机名、心跳名无关紧要的话):
#/etc/hosts
35.1.1.250 ZHXYHDB01
35.1.1.251 ZHXYHDB02
35.1.1.245 ZHXYHDB
50.3.1.200 ZHXYHDB01-PRIV
50.3.1.201 ZHXYHDB02-PRIV
YUM 本地源配置
本地源用于方便后续的 RHCS 集群软件以及 oracle 所需软件包的安装。需要在两台服务器上分别配置。
两台服务器上分别挂载 RedHat 6.7 系统镜像:
# mount -o loop redhat6.7.iso /mnt/iso
在 /etc/yum.repos.d 目录下新建 rhel6.7.repo 文件,写入如下内容:
#rhel6.7.repo
[Server]
name=RHELServer
baseurl=file:///mnt/iso/Server
enabled=1
gpgcheck=0
[ResilientStorage]
name=RHELResilientStorage
baseurl=file:///mnt/iso/ResilientStorage
enabled=1
gpgcheck=0
[ScalableFileSystem]
name=RHELScalableFileSystem
baseurl=file:///mnt/iso/ScalableFileSystem
enabled=1
gpgcheck=0
[HighAvailability]
name=RHELHighAvailability
baseurl=file:///mnt/iso/HighAvailability
enabled=1
gpgcheck=0
[LoadBalancer]
name=RHELLoadBalancer
baseurl=file:///mnt/iso/LoadBalancer
enabled=1
gpgcheck=0
# yum clean all # 终端输入此命令 更新源
关闭 SELinux 和 iptables 防火墙
1、关闭防火墙
在两台服务器上分别执行以下命令:
# service iptables stop
# chkconfig iptables off
2、关闭 SELinux:
修改 /etc/selinux/config 文件
将 SELINUX=enforcing 改为 SELINUX=disabled
重启机器即可
Oracle 数据库安装
oracle 数据库软件需要 在两台服务器上分别安装,只安装数据库软件而不创建数据库实例。各种 Linux 发行版上安装 Oracle 11g R2 的详细需求和过程可参见官方文档:
https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm
下面是本项目的 Oracle 数据库完整安装过程。
数据库安装前配置
新建 oracle 用户和组
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
配置 oracle 内核参数
内核参数配置在 /etc/sysctl.conf 文件中,配置参数说明:
在安装 Oracle 的时候需要调整 linux 的内核参数,但是各参数代表什么含义呢,下面做详细解析。Linux 安装文档中给出的最小值:fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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 = 1048586
各参数详解:kernel.shmmax:是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的 SGA , 设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及 ServerProcess 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。官方建议值:32 位 linux 系统:可取最大值为 4GB(4294967296bytes)-1byte,即 4294967295。建议值为多于内存的一半,所以如果是 32 为系统,一般可取值为 4294967295。32 位系统对 SGA 大小有限制,所以 SGA 肯定可以包含在单个共享内存段中。64 位 linux 系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE 即可,可以取物理内存 -1byte。例如,如果为 12GB 物理内存,可取 12*1024*1024*1024-1=12884901887,SGA 肯定会包含在单个共享内存段中。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)kernel.shmmni:该参数是共享内存段的最大数量。shmmni 缺省值 4096,一般肯定是够用了。fs.file-max:该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表 linux 系统中可以打开的文件的数量。fs.aio-max-nr:此参数限制并发未完成的请求,应该设置避免 I / O 子系统故障。推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个。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:表示套接字发送缓冲区大小的最大值。
其中kernel.shmmax 关系到 Oracle 数据库的系统全局区 SGA 的最大大小,kernel.shmmax 值不能小于 SGA 的大小,否则后面设置 SGA 时会因为 kernel.shmmax 太小而出错。kernel.shmmax 的大小需要根据当前系统环境的内存大小和 Oracle 数据库的 SGA 所期望的大小进行设定。SGA 和 PGA 大小的设定原则为:
Oracle 官方文档推荐:
MEMORY_TARGET= 物理内存 x 80%
MEMORY_MAX_SIZE= 物理内存 x 80%
对于 OLTP 系统:SGA_TARGET=(物理内存 x 80%) x 80%
SGA_MAX_SIZE=(物理内存 x 80%) x 80%
PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 20%
对于 DSS 系统:SGA_TARGET=(物理内存 x 80%) x 50%
SGA_MAX_SIZE=(物理内存 x 80%) x 50%
PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 50%
本项目中服务器内存为 32G,为 SGA 设置最大值为 20G,因此将 Oralce 数据库内核参数配置为:
#oracle
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 5242880
kernel.shmmax = 21474836480
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 = 1048586
将以上代码加入 /etc/sysctl.conf 文件的末尾,并在终端输入 sysctl -p 命令使配置立即生效。
配置 Oracle 系统 资源限制
系统资源限制文件为 /etc/security/limits.conf,该文件说明如下:
limits.conf 的格式如下:username|@groupname type resource limit
username|@groupname:设置需要被限制的用户名,组名前面加 @和用户名区别。也可以用通配符 *来做所有用户的限制。type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比 har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。resource:core - 限制内核文件的大小
date - 最大数据大小
fsize - 最大文件大小
memlock - 最大锁定内存地址空间
nofile - 打开文件的最大数目
rss - 最大持久设置大小
stack - 最大栈大小
cpu - 以分钟为单位的最多 CPU 时间
noproc - 进程的最大数目
as - 地址空间限制
maxlogins - 此用户允许登录的最大数目
要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:session required /lib/security/pam_limits.so
本项目的 Oracle 资源限制设置为:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
将以上代码加入 /etc/security/limits.conf 文件末尾。
配置 Oracle 环境变量
1、创建 Oracle 相关目录并更改相关权限:
# mkdir -p /opt/oracle/oracle11g
# mkdir -p /opt/oraInventory
# chown -R oracle:oinstall /opt/oracle
# chmod -R 775 /opt/oracle
# chown -R oracle:oinstall /opt/oraInventory
# chmod -R 775 /opt/oraInventory
2、配置 Oracle 环境变量:
在 /etc/profile 文件末尾加入如下内容:
#Oracle
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/oracle11g
export ORACLE_SID=zxbank #本项目的 oracle 实例名
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
终端输入如下命令使配置生效:
# . /etc/profile
安装相关软件包
Oracle 数据库软件的安装和运行需要依赖部分第三方软件包,安装 Oracle 数据库前需要先安装这些软件包,根据 Oracle 官方安装文档,RedHat 6.7 环境需要安装的软件包有:
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
elfutils-libelf-0.161-3.el6(x86_64)
elfutils-0.161-3.el6(x86_64)
elfutils-devel-0.161-3.el6(x86_64)
elfutils-libs-0.161-3.el6(x86_64)
elfutils-libelf-devel-0.161-3(el6.x86_64)
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)
unixODBC-2.2.14-11.el6 (x86_64) or later
unixODBC-2.2.14-11.el6.i686 or later
unixODBC-devel-2.2.14-11.el6 (x86_64) or later
unixODBC-devel-2.2.14-11.el6.i686 or later
以上包均可通过使用 yum 命令从之前配置好的本地源中安装。
【注】:安装软件包技巧:软件包版本号无须完全一致,也无须一个个安装,只需利用通配符进行批量安装即可,如安装 unixODBC 的相关包,可直接使用
# yum -y install unixODBC*
命令一步到位,不会产生软件包漏装的问题。正式安装 Oracle 数据库时会有一个检查系统环境是否满足需求的过程,如果提示部分软件包没有安装,则在 root 账户下使用 yum 进行安装即可,如果只是软件包版本不对则可直接忽略。
Oracle 数据库正式安装
切换到 oracle 用户下:
# su - oracle
将系统变量 LANG 暂时设置为英文,以免安装界面出现中文字符无法显示:
# export LANG=en_US
解压 Oracle 安装包,执行 runInstaller 进行图文界面安装。
# cd database
# ./runInstaller
不勾选也不填邮箱,点下一步,弹出提示点是。
选只安装数据库软件,下一步。
选单节点安装,下一步。
默认,下一步。
选企业版,下一步。
之前预安装配置没问题的话,这里会自动填上安装路径,直接下一步。
下一步。
确定告警的这些包是否已经安装,如果都只是依赖包的版本问题,直接勾选‘Ingore all’, 然后点 Finish 即可完成安装,完成后按要求使用 root 账号运行两个脚本。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-04/130570p2.htm
(以下关于数据库实例创建图为网上所找,实际配置以图下说明文字为准)
(本项目数据库名应为 zxbank)
(本项目不启用 Enterprise Manager)
(本项目所有账户使用同一管理口令:Admin@123, 本口令不合法)
(本项目内存大小为 20G,使用自动内存管理,字符集为 UTF8)
(本项目不安装样本数据库)
(本项目存储类型为文件系统,使用 OMF 自动管理文件系统,数据库区为之前指定的共享存储挂载点 /oradata)
(本项目不启用闪回区)
完成创建
数据库实例创建完成后使用 sysdba 权限进入数据库,开启数据库:
# sqlplus / as sysdba
> startup #环境变量中已经指定了 Oracle_SID, 会自动启动此实例
进行项目相关的数据库表空间的创建以及用户的创建和授权。
使用 OMF 策略的话,创建表空间的语句更简单:
# CREATE TABLESPACE shop_tb #创建名为 shop_tb 的表空间
创建用户并将其默认表空间设置为上述表空间:
# CREATE USER shop IDENTIFIED BY shop DEFAULT TABLESPACE shop_tb
为用户授权:
# grant connect,resource to shop;
# grant create any sequence to shop;
# grant create any table to shop;
# grant delete any table to shop;
# grant insert any table to shop;
# grant select any table to shop;
# grant unlimited tablespace to shop;
# grant execute any procedure to shop;
# grant update any table to shop;
# grant create any view to shop;
完成后关闭数据库和监听器:
> shutdown immediate
# lsnrctl stop
将相关密码文件和参数文件复制到另外一个节点:
# cd $ORACLE_HOME/dbs
# ls
hc_zxbank.dat init.ora lkZXBANK orapwzxbank spfilezxbank.ora
#scp orapwzxbank oracle@35.1.1.251:/opt/oracle/oracle11g/dbs/
#scp spfilezxbank.ora oracle@35.1.1.251:/opt/oracle/oracle11g/dbs/
登陆到另外一个节点上,跳转到 $ORACLE_BASE 目录的 admin 目录下实例目录下,本项目中完整路径为 /opt/oracle/admin/zxbank。在该目录下创建数据库实例启动所需的目录。具体需要创建的目录可以对照之前创建数据库实例的节点的相同目录。如:
#cd $ORACLE_BASE/admin/zxbank
# mkdir {adump,bdump,cdump,dpdump,pfile,udump}
确保两节点的数据库实例和监听器都关闭后,移除 /oradataa 目录的挂载:
# umount /oradata
最后,分别确认一下两个节点相关目录的权限都是正确的:
# chown -R oracle:oinstall /opt/oracle #两节点分别执行
修改监听器配置
先确保两台节点监听器均处于关闭状态,然后 在两台节点服务器上分别修改监听器配置文件,将远程连接 IP 设置为集群浮动 IP:
#oracle 账户下操作
# lsnrctl stop
# vi $ORACLE_HOME/network/admin/listener.ora
监听器配置文件修改如下:
# litener.ora Network Configuration File: /opt/oracle/oracle11g/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 35.1.1.245)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/oracle11g)
(ENVS = EXTPROC_DLLS=ANY)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = zxbank)
(ORACLE_HOME = /opt/oracle/oracle11g)
(SID_NAME = zxbank)
)
)
ADR_BASE_LISTENER = /opt/oracle
完成后确保监听器处于关闭状态。
RHCS 集群安装与配置
RHCS 集群介绍
1. RHCS 简介
RHCS 是 Red Hat Cluster Suite 的缩写,即红帽子集群套件,RHCS 是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合,它将集群系统中三大集群架构融合一体,可以给 web 应用、数据库应用等提供安全、稳定的运行环境。高可用集群是 RHCS 的核心功能。当应用程序出现故障,或者系统硬件、网络出现故障时,应用可以通过 RHCS 提供的高可用性服务管理组件自动、快速从一个节点切换到另一个节点,节点故障转移功能对客户端来说是透明的,从而保证应用持续、不间断的对外提供服务,这就是 RHCS 高可用集群实现的功能。2. RHCS 集群组成介绍
RHCS 是一个集群工具的集合,主要有下面几大部分组成:A、分布式集群管理器(CMAN)Cluster Manager,简称 CMAN,是一个分布式集群管理工具,它运行在集群的各个节点上,为 RHCS 提供集群管理任务。CMAN 用于管理集群成员、消息和通知。它通过监控每个节点的运行状态来了解节点成员之间的关系,当集群中某个节点出现故障,节点成员关系将发生改变,CMAN 及时将这种改变通知底层,进而做出相应的调整。B、锁管理(DLM)Distributed Lock Manager,简称 DLM,表示一个分布式锁管理器,它是 RHCS 的一个底层基础构件,同时也为集群提供了一个公用的锁运行机制,在 RHCS 集群系统中,DLM 运行在集群的每个节点上,GFS 通过锁管理器的锁机制来同步访问文件系统元数据。CLVM 通过锁管理器来同步更新数据到 LVM 卷和卷组。DLM 不需要设定锁管理服务器,它采用对等的锁管理方式,大大的提高了处理性能。同时,DLM 避免了当单个节点失败需要整体恢复的性能瓶颈,另外,DLM 的请求都是本地的,不需要网络请求,因而请求会立即生效。最后,DLM 通过分层机制,可以实现多个锁空间的并行锁��式。C、配置文件管理(CCS)Cluster Configuration System,简称 CCS,主要用于集群配置文件管理和配置文件在节点之间的同步。CCS 运行在集群的每个节点上,监控每个集群节点上的单一配置文件/etc/cluster/cluster.conf 的状态,当这个文件发生任何变化时,都将此变化更新到集群中的每个节点,时刻保持每个节点的配置文件同步。例如,管理员在节点 A 上更新了集群配置文件,CCS 发现 A 节点的配置文件发生变化后,马上将此变化传播到其它节点上去。rhcs 的配置文件是 cluster.conf,它是一个 xml 文件,具体包含集群名称、集群节点信息、集群资源和服务信息、fence 设备等,这个会在后面讲述。D、栅设备(FENCE)FENCE 设备是 RHCS 集群中必不可少的一个组成部分,通过 FENCE 设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE 设备的出现,就是为了解决类似这些问题,Fence 设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令,将服务器重启或关机,或者与网络断开连接。FENCE 的工作原理是:当意外原因导致主机异常或者宕机时,备机会首先调用 FENCE 设备,然后通过 FENCE 设备将异常主机重启或者从网络隔离,当 FENCE 操作成功执行后,返回信息给备机,备机在接到 FENCE 成功的信息后,开始接管主机的服务和资源。这样通过 FENCE 设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。RHCS 的 FENCE 设备可以分为两种:内部 FENCE 和外部 FENCE,常用的内部 FENCE 有 IBM RSAII 卡,HP 的 iLO 卡,还有 IPMI 的设备等,外部 fence 设备有 UPS、SAN SWITCH、NETWORK SWITCH 等
E、高可用服务管理器
高可用性服务管理主要用来监督、启动和停止集群的应用、服务和资源。它提供了一种对集群服务的管理能力,当一个节点的服务失败时,高可用性集群服务管理进程可以将服务从这个失败节点转移到其它健康节点上来,并且这种服务转移能力是自动、透明的。RHCS 通过 rgmanager 来管理集群服务,rgmanager 运行在每个集群节点上,在服务器上对应的进程为 clurgmgrd。在一个 RHCS 集群中,高可用性服务包含集群服务和集群资源两个方面,集群服务其实就是应用服务,例如 apache、mysql 等,集群资源有很多种,例如一个 IP 地址、一个运行脚本、ext3/GFS 文件系统等。在 RHCS 集群中,高可用性服务是和一个失败转移域结合在一起的,所谓失败转移域是一个运行特定服务的集群节点的集合。在失败转移域中,可以给每个节点设置相应的优先级,通过优先级的高低来决定节点失败时服务转移的先后顺序,如果没有给节点指定优先级,那么集群高可用服务将在任意节点间转移。因此,通过创建失败转移域不但可以设定服务在节点间转移的顺序,而且可以限制某个服务仅在失败转移域指定的节点内进行切换。F、集群配置管理工具
RHCS 提供了多种集群配置和管理工具,常用的有基于 GUI 的 system-config-cluster、Conga 等,也提供了基于命令行的管理工具。system-config-cluster 是一个用于创建集群和配置集群节点的图形化管理工具,它有集群节点配置和集群管理两个部分组成,分别用于创建集群节点配置文件和维护节点运行状态。一般用在 RHCS 早期的版本中。Conga 是一种新的基于网络的集群配置工具,与 system-config-cluster 不同的是,Conga 是通过 web 方式来配置和管理集群节点的。Conga 有两部分组成,分别是 luci 和 ricci,luci 安装在一台独立的计算机上,用于配置和管理集群,ricci 安装在每个集群节点上,Luci 通过 ricci 和集群中的每个节点进行通信。RHCS 也提供了一些功能强大的集群命令行管理工具,常用的有 clustat、cman_tool、ccs_tool、fence_tool、clusvcadm 等,这些命令的用法将在下面讲述。G、RedHat GFS
GFS 是 RHCS 为集群系统提供的一个存储解决方案,它允许集群多个节点在块级别上共享存储,每个节点通过共享一个存储空间,保证了访问数据的一致性,更切实的说,GFS 是 RHCS 提供的一个集群文件系统,多个节点同时挂载一个文件系统分区,而文件系统数据不受破坏,这是单一的文件系统,例如 EXT3、EXT2 所不能做到的。为了实现多个节点对于一个文件系统同时读写操作,GFS 使用锁管理器来管理 I / O 操作,当一个写进程操作一个文件时,这个文件就被锁定�%@C�此时不允许其它进程进行读写操作,直到这个写进程正常完成才释放锁,只有当锁被释放后,其它读写进程才能对这个文件进行操作,另外,当一个节点在 GFS 文件系统上修改数据后,这种修改操作会通过 RHCS 底层通信机制立即在其它节点上可见。在搭建 RHCS 集群时,GFS 一般作为共享存储,运行在每个节点上,并且可以通过 RHCS 管理工具对 GFS 进行配置和管理。这些需要说明的是 RHCS 和 GFS 之间的关系,一般初学者很容易混淆这个概念:运行 RHCS,GFS 不是必须的,只有在需要共享存储时,才需要 GFS 支持,而搭建 GFS 集群文件系统,必须要有 RHCS 的底层支持,所以安装 GFS 文件系统的节点,必须安装 RHCS 组件。
RHCS 集群安装
在两台服务器上 分别按照 RHCS 集群:
查询是否存在 RHCS 相关组件的 yum 源:
# yum grouplist
#是否存在 High Availability 和 High Availability Management
#中文环境下则为‘高可用性’和‘高可用性管理’
如成功,则安装 RHCS HA 组件:
# yum –y groupinstall "High Availability Management" "High Availability"
#中文环境下为:# yum –y groupinstall "高可用性 " " 高可用性管理"
安装完成后,如果集群需要使用共享存储,则需要额外安装配置 lvm2-cluster:
# yum -y install lvm2-cluster
配置 lvm2-cluster:
编辑 /etc/lvm/lvm.conf 文件,修改:locking_type = 3
启动 lvm2-cluster 服务:
# service clvmd start
# chkconfig clvmd on
RHCS 集群配置
luci 是 RHCS 默认的集群管理工具,可以完成集群的创建及管理工作。
A、集群启动:
在两台服务器上 分别启动集群软件:
# service ricci start #启动集群软件
# chkconfig ricci on #设置集群软件开机自动启动
# passwd ricci #设置集群节点密码
在其中一台服务器上 安装 luci 集群管理工具并启动:
# service luci start #启动集群管理工具
# chkconfig luci on #设置 luci 开机启动
B、集群配置:
1、集群创建(节点添加)
启动 luci 服务后即可使用浏览器打开 luci 进行集群创建和管理了。地址为:
https://35.1.1.250:8084 # 用户名和密码与系统 root 账号相同
点击 create 创建集群:
配置说明:
cluster name:给集群添加一个命名即可。
然后分别添加两个节点:
Use the Same Password for All Nodes:所有节点使用相同的节点管理密码,建议勾选。
Node Name:节点名,与 /etc/hosts 文件中心跳 IP 的对应命名相同即可。也可以直接填写心跳 IP。(两节点分别填写)
Password:节点管理密码,随便设置,建议与系统 root 密码相同。
Ricci Hostname:ricci 主机名,默认与节点名相同,不用更改。
Ricci Port:ricci 端口,默认 11111 即可。
节点添加完成后继续配置:
Download Packages:使用网络下载所需的相关包。
Use Locally Installed Packages:使用本地已安装的包,选择此项。
Reboot Nodes Before Joining Cluster:主机节点加入集群前先重启,建议不勾选。
Enable Shared Storage Support:共享存储支持,如果需要使用共享存储,需要勾选此项。(此项需要系统安装 lvm2-cluster 并启动 clvmd 服务)
点击 Create Cluster 创建集群,ricci 会自动启动添加的节点服务器上的集群软件(cman 和 rgmanager),成功后即可完成集群的创建和节点的添加。
集群创建完成后如图:
2、Fence 设备添加
Fence 设备可以防止集群资源(例如文件系统)同时被多个节点占有,保护了共享数据的安全性和一致性节,同时也可以防止节点间脑裂的发生。(Fence 设备并非不可缺少,通常也可以使用仲裁盘代替 Fence 设备,本项目使用 Fence 方案)
切换到“Fence Devices”选项,“Add”添加两个 Fence 设备,对于华为浪潮等国产服务器,服务器本身的 IPMI 管理系统(MGMT 管理口)即可充当 Fence 设备。一添加其中一个 Fence 设备为例:
选择 IPMI Lan:
Fence Type:Fence 类型,本项目使用 IPMI。;
Name:给 Fence 设备取个名字;
IP Address or Hostname:Fence 设备 IP 地址或者设备名,这里直接填 IP 地址,即服务器管理口 IP;
Login:Fence 设备登陆账号,华为服务器通常是 root/Huawei12#$,浪潮服务器可能是 admin/admin,或者 root/superuser 等等。
Password:Fence 设备登陆密码,如上;
Password Script:密码脚本,无视;
Authentication Type:认证类型,选择密码认证;
其他的可以不用管了,“submit”提交即可。
两个 Fence 均创建完成后如图:
3、Failover Domains 失败转移域创建
Failover Domains 是配置集群的失败转移域,通过失败转移域可以将服务和资源的切换限制在指定的节点间。切换到“Failover Domains”选项,点击“add”,配置如下:
Name:给失败转移域策略取一个名字;
prioritized: 是否启用域成员节点优先级设置,这里启用;
Restricted:是否只允许资源在指定的节点间切换,这里只有两个节点互相切换,是否启用都行;
No Failback:是否启用故障回切功能,即当高优先级节点失效,资源切换到其他节点,而高优先级节点重新恢复正常时,资源是否再次切换回高优先级节点,这里选择不回切,即启用 No Failback;
Member:选择失败转移域的成员,本项目只有两个节点,均勾选;
Priority:成员节点优先级,值越低优先级越高。高优先级通常作为主节点。
点击“Create”完成失败转移域创建,完成后如图:
4、添加资源
Resources 是集群的核心,主要包含服务脚本、IP 地址、文件系统等,本项目只涉及 IP 地址、文件系统和脚本的添加。
IP 地址添加
“Add”选择添加 IP Address:
IP Address:IP 地���,通常作为集群浮动 IP;
Netmask Bits:子网掩码,本项目中是 255.255.255.0,即 24;
其他默认即可。点击“Submit”提交。
文件系统添加
由于之前我们将使用的共享存储做成了 lvm 逻辑卷系统,因此在添加文件系统时需要先添加 HA LVM,注意启用 HA LVM 需要确保 lvm2-cluster 服务启动。之前创建的逻辑卷组为 Oraclevg,逻辑卷为 oraclelv,因此添加 HA LVM 如下:
Name:给 HA LVM 取个名字;
Volume Group Name:共享存储的卷组名,这里为 oraclevg;
Logical Volume Name:需要添加的逻辑卷名,这里为 oraclelv;
Fence the Node if It is Unable to Clean Up LVM Tags:当节点 LVM 标记无法清除时认为节点脑裂,这里不启用。
点击“Submit”提交。
然后再添加文件系统:
Name:给文件系统取个名字;
Filesystem Type:指定文件系统类型,之前创建逻辑卷时将其格式化为 ext4 格式了,可以选择 ext4,也可以选 Autodetect 自动检测;
Mount Point:设备挂载位置。选择之前创建好的目录 /oradata,逻辑卷将自动挂载在当前主节点的该目录上;
Device,FS Label,or UUID:需要挂载的设备,本项目使用的是 LVM 逻辑卷,所以这里填写逻辑卷路径即可:/dev/oraclevg/oraclelv;
Mount Options 和 Filesystem ID 无视即可。
Force Unmount:是否强制卸载,集群切换时挂载的设备有时候会因为资源占用等问题无法卸载,导致集群切换失败,这里启用强制卸载,可以防止此问题发生;
Force fsck:是否强制文件系统检查,文件系统检查会拖慢集群切换时间,这里不启用;
Enable NFS daemon and lockd workaround:启用 NFS 守护进程和上锁的解决方法,无视;
Use Quick Status Checks:使用快速状态检查,无视;
Reboot Host Node if Unmount Fails:设备卸载失败时是否重启该节点,同样可以防止设备卸载失败导致集群切换失败的问题,可以勾选,这里无视。
点击“Submit”提交。
脚本添加
本项目添加的脚本主要用于控制集群切换时 Oracle 数据库监听器和实例的起停。RHCS 集群对于脚本有专门的格式要求,通常需要有 start、stop 等函数进行自动调用。脚本应当先分别保存在 /etc/init.d 目录下并赋予可执行权限,如本项目脚本名为 dbora,使用 root 账户创建并授权:
# chmod 755 /etc/init.d/dbora
dbora 脚本内容如下:
#!/bin/bash
export ORACLE_HOME=/oracle/oracle11g #之前配置好的 ORACLE_HOME 和 ORACLE_SID, 保险起见在脚本中 export 一次
export ORACLE_SID=zxbank
start() {su - oracle<<EOF
echo "Starting Listener...."
$ORACLE_HOME/bin/lsnrctl start
echo "Starting Oracle11g Server... "
sqlplus / as sysdba
startup
exit;
EOF
}
stop() {su - oracle<<EOF
echo "Shutting down Listener......"
$ORACLE_HOME/bin/lsnrctl stop
echo "Shutting down Oracle11g Server..."
sqlplus / as sysdba
shutdown immediate;
exit
EOF
}
restart() {
stop
start
}
status() {ps -ef |grep -v grep |grep ora_smon_${ORACLE_SID}
if [$? = 0 ]; then
exit 0
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
;;
esac
资源添加中选择添加 Script:
至此资源全部添加完成,如图所示:
PS:
1、本项目中的共享存储是作为 Oracle 数据库的 Data Area,实例运行其中,因此不能将共享存储同时挂在两个节点上。我们选择了使用 HA LVM 作为集群资源的方式进行挂载。事实上,我们也可以直接使用脚本来控制 /dev/oraclevg/oraclelv 的挂载,而不用将其添加到集群资源中。
2、如果项目中使用的共享存储是基于 NFS 方式共享的(NAS),我们可以直接将存储资源同时挂载在集群节点上,而不用在集群中添加资源。但 RHCS 也可以直接将 NFS 添加到集群资源中由集群动态控制 NFS 挂载在哪个节点。这里再介绍一下 NFS 文件系统加入集群资源的方法。假设在主机 35.1.1.10 上有 NFS 目录 /nas,集群节点服务器上有空目录 /share。在集群中添加该资源的方法为,“Add”选择 NFS/CIFS Mount:
Name:给 NFS 挂载取个名字;
Mount Point:挂载到集群节点的位置,这里为 /share;
Host:远程 NFS 服务器地址,这里为 35.1.1.10;
NFS Export Directory Name or CIFS Share:远程 NFS 服务器上的 NFS 共享目录;
其他默认即可,Force Unmount 同样建议勾选。
5、创建资源组
集群资源需要加入资源组中才能真正被集群中的节点所使用。
点击“Add”创建资源组:
Service Name:给资源组取个名字;
Automatically Start This Service:自动启动集群资源组服务,勾选;
Run Exclusive:集群服务独占方式运行,拒绝其他集群服务运行在节点服务器上,这里是否勾选都行,建议不勾选;
Failover Domain:指定刚才配置的失败转移域;
Recovery Policy:恢复策略,选择 Relocate 迁移,一旦节点失效立刻迁移到其他节点。
Restart Options:节点重启策略,默认即可。
然后我们需要为资源组添加资源,依次添加之前已经配置好的 IP Address,HA LVM 和 Script 资源即可。注意 Filesystem 资源是添加到 HA LVM 的子资源而不是直接作为资源组的资源的。完成后如图:
至此,RHCS 集群配置完成,可以通过重启节点设备验证集群是否正常工作。
更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
更多 RedHat 相关信息见RedHat 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=10
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130570.htm