Oracle10gR2 RAC实时应用集群(二)在Redhat Enterprise Linux5 x86_64下的集群(OCFS篇)
(Oracle10gR2 + ClusterWare + RHEL5 + OCFS2)
RAC(Real Application Clusters,实时应用集群),是多台主机组成的集群计算环境,是Oracle数据库支持网格计算环境的核心技术。
普通Oracle数据库,只能在一台主机上运行,数据库的实例和数据库文件都在一台主机上,是单实例单数据库。
RAC实时应用集群,可以在多台主机上运行,每台节点主机上运行一个数据库实例,通过共享存储磁盘访问相同的数据库文件,是多实例单数据库,单一节点故障不影响数据库的使用,负载能力也会随节点主机的增加而加强。
RAC集群的关键点:
1.共享存储
2.节点间需要内部通讯,以协调集群正常运行,所以每个节点需要提供外部网络与内部网络.
3.CRS集群软件: 需要集群软件(Clusterware)协调各节点.
4.集群注册文件(OCR): 需要注册集群,保存在共享磁盘上.
5.仲裁磁盘(Voting Disk): 需要协调各节点决定控制权,做为表决器,保存在共享磁盘上.
6.虚拟IP(Virturl IP): 提供客户端连接,IP由集群软件接管,当集群就绪时,虚拟IP可以连接.
共享存储访问方式(存储系统):
1.集群文件系统(CFS:Cluster File System)
2.自动存储管理(ASM:Automatic Storage Management)
3.网络文件系统(NFS)
4.裸设备(RAW)
单机文件系统FAT32,NTFS,ext3不能作为共享存储
选择以下储存方案来建立集群系统:
项目 存储系统 存储位置
Clusterware软件 本地文件系统ext3 本地磁盘
voting disk OCFS 共享磁盘
OCR OCFS 共享磁盘
数据库软件 OCFS 共享磁盘
数据库 OCFS 共享磁盘
下面说说Oracle RAC在Redhat Enterprise Linux5 x86_64下的安装过程。
一.配置多主机节点环境
主要为学习测试之用,可以使用虚拟机模拟来实现多台主机,比较好的选择是VMware Workstation8.0.4.
1.使用VMware Virtual Network Editor添加网络适配器(VMnet1,VMnet2),生成两个网段,VMnet1的网段用于节点外部通讯(PublicNet),VMnet2网段用于节点间通讯(PrivateNet).
2.使用VMware创建两台主机,在每台主机上安装Redhat Enterprise Linux5 x86_64系统,每台需要虚拟两张网卡,IP分配如下:
节点主机 主机公网IP 虚拟IP 私网IP(内部网络)
RAC01 192.168.89.166 192.168.89.66 192.168.234.166
RAC02 192.168.89.167 192.168.89.67 192.168.234.167
公网与私网IP设置在网卡上,虚拟IP不用设置.
3.设置DNS解析,修改2台虚拟机rac01,rac02上的/etc/hosts文件,添加以下内容:
192.168.89.166 rac01
192.168.89.167 rac02
192.168.89.66 rac01v
192.168.89.67 rac02v
192.168.234.166 rac01p
192.168.234.167 rac02p
4.在各节点上检查和安装需要用到的软件包
根据Oracle官方文档,需要以下软件包:
binutils-2.17.50.0.6-2.el5
compat-db-4.2.52-5.1
compat-gcc-34-3.4.6-4
compat-gcc-34-c++-3.4.6-4
compat-libstdc++-33-3.2.3-61
compat-libstdc++-33-3.2.3-61(i386)
compat-libstdc++-296(i386)
gcc-4.1.1-52.el5.2
gcc-c++-4.1.1-52.el5.2
glibc-2.5-12
glibc-2.5-12(i386)
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-devel-2.5-12(i386)
glibc-headers-2.5-12
libgcc-4.1.1-52.el5(i386)
libXp-1.0.0(i386)
libXt-1.0.2(i386)
libXtst-1.0.1(i386)
libaio-0.3.106-3.2
libaio-devel-0.3.106-3.2
libgcc-4.1.1-52.el5
libstdc++-4.1.1-52.el5.2
libstdc++-devel-4.1.1-52.el5.2
libg