ITPub博客

首页 > 数据库 > Oracle > Redhat AS4 + Cluster + GFS + Oracle10g双机调试文档 一

Redhat AS4 + Cluster + GFS + Oracle10g双机调试文档 一

Oracle 作者:5214shmily 时间:2013-01-29 19:46:12 0 删除 编辑

一、客户需求

客户的数据库跑的业务是营收帐Boss系统,对数据安全要求较高,需要做oracle的HA(主备),客户属于经济不发达地区,希望项目费用精简.

 

二、项目分析

经过分析,本例项目解决方案,采用RedHat EL4 U5配合Cluster Suite4.5套件,实现一主一备的Oracle10g的HA高可用集群.使用GFS文件系统来格式化磁盘阵列柜.

采用RedHat Linux系统的优点在于,成本经济,系统稳定,技术支持较多,且包含Cluster集群套件,更有gfs全局文件系统对数据库等使用共享存储空间的支持优势.

RHCS: Red Hat Cluster Suite 是一款能够提供高性能、高可靠性、负载均衡、高可用性且经济廉价的集群工具集,本项目使用其组件之一:高可用集群(HA). 高可用集群通过消除单一故障点和节点故障转移功能(当一个集群节点失败后将服务转移到其他节点上)来提供高可用性.节点故障转移功能对客户端是透明的,当 节点失败后客户端并不会看到节点之间的服务转移.Red Hat Cluster Suite通过高可用服务管理组件来提供一个高可用集群.
    GFS: Global File System为Red Hat Cluster Suite提供一个集群文件系统,CFS允许多个节点在块级别上共享存储.

 

三、软硬件归档

(1)、硬件平台:

HP DL380服务器2台

CPU:2个Intel(R) Xeon(TM) CPU 2.80GHz;

MEM :4G ;

HardDisk: 72.8 GB

HP Modular Smart Array 500G2磁盘阵列柜1套

 

(2)、软件平台:

RHEL 4 U5、Cluster Suite4.5、GFS Suite4.5、Oracle10g、SSH客户端、VNC客户端、Oracle10g客户端、PL/SQL、Oracle10g for RedHat 脚本

 

四、软件获取

(1)、RHEL 4 U5:5张CD光盘

Cluster Suite4.5 :1张CD光盘

GFS Suite4.5:1张CD光盘

以上7张光盘可向RedHa代理商索取.

 

(2)、以下软件可网上下载:

Oracle10g:oracle网站下载,文件名10201_database_linux32.zip

SSH客户端:SSHSecureShellClient-3.2.9

VNC客户端:HA-vnc-4.0-x86_win32-KC

Oracle10g客户端:10g_win32_db.zip

PL/SQL(oracle工具):PL/SQL Developer 7.0

Oracle10g for RedHat 脚本:内容见附件

 

五、IP地址、主机名规划

服务器1: 公网:192.168.16.201/24   私网(心跳):10.10.10.201/24 主机名smsdb01.scn.com

服务器2: 公网:192.168.16.202/24   私网(心跳):10.10.10.202/24主机名smsdb02.scn.com

Cluster虚IP:192.168.16.203

 

 

六、安装调试步骤一览

Ⅰ、服务器、磁盘柜的硬件安装

Ⅱ、RedHat操作系统安装

Ⅲ、上传软件

Ⅳ、Cluster Suite安装与GFS Suite安装,自启动服务设置,测试Cluster

Ⅴ、给磁盘柜分区、建立逻辑卷,并以GFS文件系统格式化磁盘柜的逻辑卷,挂载GFS分区

Ⅵ、Oracle10g For Linux安装

Ⅶ、Oracle10g For Linux建数据库

Ⅷ、Oracle10g手工测试

Ⅸ、Cluster配置、虚IP测试

Ⅹ、Cluster + Oracle10g联合测试

 

七、实际操作步骤

 

Ⅰ、服务器、磁盘柜的硬件安装

服务器上架:客户与厂商负责

磁盘阵列上架及连接服务器:客户与厂商负责

 

Ⅱ、RedHat操作系统安装

两台服务器要完全一致,除IP地址、主机名等;

选择中文与英文2种语言支持,默认英文;

硬盘72G,划分三个区 / 根分区25G,SWAP分区2G,剩余空间给/home分区;

把识别出来的HP Modular Smart Array 500G2磁盘柜,全部都划分为LVM逻辑卷,或者不划分,等操作系统装好之后再用fdisk划分;

2块网卡分别设置静态IP地址,具体见“第五节”;

默认时区:亚洲/上海

不装防火墙;使用SELINUX;

软件安装要求:xwindows 、Gnome、开发包、administartor tools 、system tools(加装vnc服务)等;

 

Ⅲ、上传软件

在本地笔记本电脑中安装SSHSecureShellClient-3.2.9

(顺便安装VNC客户端HA-vnc-4.0-x86_win32-KC、Oracle10g客户端10g_win32_db.zip、PL/SQL(oracle工具):PL/SQL Developer 7.0)

打开SSHSecureShell,以root用户分别SSH连接到服务器1与服务器2,在每台服务器的root根目录下建立如下目录:

/root/ cluster4.5

/root/GFS4.5

/root/oracle10g

利用SSHSecureShell的FTP工具

将cluster4.5光盘中的全部文件,分别上传到服务器1与服务器2的/root/ cluster4.5目录;

将GFS4.5光盘中的全部文件,分别上传到服务器1与服务器2的/root/ GFS4.5目录;

将10g_win32_db.zip,分别上传到服务器1与服务器2的/root/ oracle10g目录;

 

Ⅳ、Cluster Suite安装与GFS Suite安装

(1)、启动远程桌面服务连接(本项目远程连接桌面使用vnc,未使用xmanger)

在服务器1与服务器2上,分别以root用户执行以下命令,目的是启动vnc服务器端,使得可以远程打开redhat的gnome桌面

[root@smsdb01 /]#vncserver :1

[root@smsdb02 /]#vncserver :1

提示配置vnc服务的密码,本项目中密码为sctvnet

说明:此举将在当前用户root的目录下创建了.vnc目录,以及xstartup配置文件.在这里要说明一下,第一次执行vncserver命令 启动 vnc服务器端,用vnc客户端连接远程桌面时,因一些vnc服务器端的配置参数未配置,登陆远程桌面色彩等达不到使用要求,因此:

[root@smsdb01 /]#vi ~/.vnc/xstartup

把下列2句前的#号的注释去掉

#unset SESSION_MANAGER

#exec /etc/X11/xinit/xinitrc

twm &

句前加上#号注释掉,并加上以下一句

startx &

保存退出

查询vnc进程号,杀掉当前vncsever进程,重新启动vnc服务

[root@smsdb01 /]#ps –ef |grep vnc

[root@smsdb01 /]#vncserver -kill :1

[root@smsdb01 /]# vncserver :1

说明:因linux属于多进程服务的操作系统,因此linux下的vnc服务进程,后面有一个进程号.

现在可以用vnc客户端远程连接两台服务器了.

 

(2):安装Cluster SuiteGFS Suite

 

A、安装Cluster Suite

Vnc连接到服务器1与服务器2,打开终端,进入Cluster的目录,

[root@smsdb01 /]#cd /root/cluster4.5

执行以下命令,给当前的目录下及子目录下所有文件可执行权限

[root@smsdb01 cluster4.5]#chmod +x –R *

或者

[root@smsdb01 cluster4.5]#chmod 755 –R *

执行安装

[root@smsdb01 cluster4.5]#./autorun

将弹出cluster安装的对话窗口,一步一步按提示往下走,把所有cluster套件(32个包)全部装上.

注:安装过程中,将提示分别插入redhat linuxAS4 U5的第4张和第2张盘(各2次).

 

B、安装GFS Suite

Vnc连接到服务器1与服务器2,打开终端,进入Cluster的目录,

[root@smsdb01 /]#cd /root/GFS4.5

执行以下命令,给当前的目录下及子目录下所有文件可执行权限

[[root@smsdb01 GFS4.5]#chmod +x –R *

或者

[root@smsdb01 GFS4.5]#chmod 755 –R *

执行安装

[root@smsdb01 GFS4.5]#./autorun

将弹出GFS安装的对话窗口,一步一步按提示往下走,把所有GFS套件(16个包)全部装上.

 

(3)clusterGFS的各项服务设置开机自启动

在两台服务器上分别执行以下命令

[root@smsdb01 /]#chkconfig --add cman

[root@smsdb01 /]#chkconfig --add ccsd

[root@smsdb01 /]#chkconfig --add clvmd

[root@smsdb01 /]#chkconfig --add rgmanager

[root@smsdb01 /]#chkconfig --add gfs

[root@smsdb01 /]#chkconfig --add fenced

 

[root@smsdb01 /]#chkconfig ccsd on

[root@smsdb01 /]#chkconfig cman on

[root@smsdb01 /]#chkconfig clvmd on

[root@smsdb01 /]#chkconfig rgmanager on

[root@smsdb01 /]#chkconfig gfs on

[root@smsdb01 /]#chkconfig fenced on

 

Ⅴ、给磁盘阵列柜LVM分区、建立逻辑卷

 

 (1)检查当前服务器的硬盘与磁盘阵列挂接(在服务器1上执行)

[root@smsdb01 /]# fdisk -l

Disk /dev/cciss/c0d0: 72.8 GB, 72833679360 bytes

255 heads, 32 sectors/track, 17433 cylinders

Units = cylinders of 8160 * 512 = 4177920 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/cciss/c0d0p1   *                  6275    25601984   83  Linux

/dev/cciss/c0d0p2            6276        6776     2044080   82  Linux swap

/dev/cciss/c0d0p3            6777       17433    43480560   83  Linux

 

Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes

255 heads, 63 sectors/track, 72945 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

 

(2)发现/dev/cciss/c1d0(容量600G)磁盘阵列,/dev/cciss/c1d0分区

[root@smsdb01 /]# fdisk /dev/cciss/c1d0

 

The number of cylinders for this disk is set to 72945.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

   (e.g., DOS FDISK, OS/2 FDISK)

 

Command (m for help):

 

输入m查看当前可用命令,输入p可查看当前磁盘分区情况,输入n可建立新的分区,等等

我们输入p

Command (m for help): p

 

Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes

255 heads, 63 sectors/track, 72945 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

           Device Boot      Start         End      Blocks   Id  System

可以看到,当前没有分区,我们输入n,建立一个新的分区

 

Command (m for help): n

Command action

    extended

    primary partition (1-4)

输入e建立扩展分区,输入p建立主分区,由于我们要把oracle的数据库建立在共享磁盘上,没有其他用途,所以,我们只建立一个主分区即可,输入p

Command action

    extended

    primary partition (1-4)

p

Partition number (1-4):

输入主分区号,值为1-4,我们输入1

Partition number (1-4): 1  

Partition 1 is already defined.  Delete it before re-adding it.

注意:主分区我已经事先建立好了,这里只是演示一下

输入p,查看一下

Command (m for help): p

 

Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes

255 heads, 63 sectors/track, 72945 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

           Device Boot      Start         End      Blocks   Id  System

/dev/cciss/c1d0p1                  72945   585930681   83  Linux

 

注意:因为要建立动态磁盘系统,以使GFS格式化磁盘阵列柜后可以动态调整分区大小,因此需要将刚建立的主分区类型更改为8e,即lvm类型的动态磁盘分区.

输入t

Command (m for help): t

Selected partition 1

Hex code (type L to list codes):

输入8e

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): 8e

检查一下,输入p,见下面的红色字体

Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes

255 heads, 63 sectors/track, 72945 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

           Device Boot      Start         End      Blocks   Id  System

/dev/cciss/c1d0p1                 72945   585930681   8e  Linux LVM

输入w,保存一下,OK

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

 

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table.

The new table will be used at the next reboot.

Syncing disks.

 

激活刚创建好的分区
[root@smsdb01 /]#partprobe

(3)在服务器2上检查自动识别的LVM分区(服务器1上的分区操作,服务器2应可以自动识别)

[root@smsdb02 ~]#service clvmd status

[root@smsdb02 ~]#service clvmd start

说明:因为我们已经安装了cluster与GFS服务,所以,服务器1的分区操作,在服务器2检查时,建议重新启动一下clvmd服务.

[root@smsdb02 ~]# fdisk -l

 

Disk /dev/cciss/c0d0: 72.8 GB, 72833679360 bytes

255 heads, 32 sectors/track, 17433 cylinders

Units = cylinders of 8160 * 512 = 4177920 bytes

 

           Device Boot      Start         End      Blocks   Id  System

/dev/cciss/c0d0p1                  6275    25601984   83  Linux

/dev/cciss/c0d0p2            6276        6777     2048160   82  Linux swap

/dev/cciss/c0d0p3            6778       17433    43476480   83  Linux

 

Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes

255 heads, 63 sectors/track, 72945 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

           Device Boot      Start         End      Blocks   Id  System

/dev/cciss/c1d0p1                 72945   585930681   8e  Linux LVM


注:应该也可以看到磁盘阵列柜,以及分区类型.

 

(4)动态磁盘的建立

提醒:以下ABCD步骤只在服务器1上操作,步骤E需要在服务器12上都做.

 

A:建立物理卷

[root@smsdb01 /]# pvcreate /dev/cciss/c1d0p1

查看一下建立的物理卷,注意PV Name以及PV size

 [root@smsdb01 /]# pvdisplay

  --- Physical volume ---

  PV Name               /dev/cciss/c1d0p1

  VG Name               oracle10g

  PV Size               558.79 GB / not usable 1.93 MB

  Allocatable           yes

  PE Size (KByte)       4096

  Total PE              143049

  Free PE               21

  Allocated PE          143028

  PV UUID               v1Ff6t-BCYh-hoeb-Jij7-Yujg-uklx-taTUk3

 

B:建立逻辑卷组,组名为oracle10g

[root@smsdb01 /]#vgcreate oracle10g /dev/cciss/c1d0p1

检查一下建立的逻辑卷组

[root@smsdb01 /]# vgdisplay

 

C:建立逻辑卷

注意,逻辑卷大小要小于物理卷的大小(下面有说明),名字是oracle,逻辑卷组名是刚才建立的oracle10g
[root@smsdb01 /]#lvcreate -L  558.7G  -noracle oracle10g

检查一下建立的逻辑卷

[root@smsdb01 /]# lvdisplay

 

说明:

1建立逻辑卷时,大小要小于上面建立物理卷的大小,我是这么理解的,至于小多少可以建立成功,要试验一下,如果建立不成功,就将容量减小一点.物理卷与逻辑卷大小的关系,因为时间问题,没完全弄清楚.

2、在服务器1建立的物理卷、逻辑卷组以及逻辑卷,在服务器2上都应该自动识别.因为我们已经安装了cluster与GFS服务,所以,服务器1的 分区操 作,在服务器2检查时,建议先重新启动一下clvm服务.在服务器1与服务器2上,pvdisplay、vgdisplay、lvdisplay看到的应 该一致,如果服务器2上无法看到与服务器1上相同的信息,或者报错,那么大多是因为clvmd服务没有启动,关于clvmd服务,实际上就是基于 cluster(集群)的lvm服务,lvm是什么,大致意思是动态磁盘管理吧!使用命令 service clvmd status检查clvm状态,使用service clvmd restart重新启动clvmd服务.

 

D:GFS协议格式化刚才建立的逻辑卷oracle

[root@smsdb01 /]#mkfs.gfs -p lock_dlm -t SCN:oracle -j 2 /dev/oracle10g/oracle

说明:

-p lock_dlm 定义为DLM锁方式,如果不加此参数,当在两个系统中同时挂载此分区时就会像ext3格式一样,两个系统的信息不能同步;
-t SCN:oracle :DLM锁所在的表名字,SCN应与cluster.conf中Cluster的name相同;oracle,按Redhat售前工程师的说法,GFS格 式化的要是静态磁盘,可以是任意名字,而要是lvm的动态磁盘,则必须是逻辑卷名,我个人经过实验,觉得可以随便写,一个标志而已;

 -j 2 :GFS分区中最多支持多少个节点同时挂载,本例就2个oracle数据库,所以值为2.

/dev/oracle10g/oracle :准备要格式化的逻辑卷分区

 

E:将逻辑卷分区/dev/oracle10g/oracle mount到某个目录

本项目的oracle安装在/usr/local/oracle10g/,而库建在/usr/local/oracle10g/oracle10g_db上,所以,建立相关目录(此步骤需要在服务器1与服务器2上都做)

[root@smsdb01 /]#mkdir –p  /usr/local/oracle10g/oracle10g_db

[root@smsdb01 /]#mount -t gfs /dev/oracle10g/oracle /usr/local/oracle10g/oracle10g_db

查看挂载的分区

[root@smsdb01 /]#df –h

 

注意:如果出现下面的错误,无法mount

mount: permission denied

检查/etc/cluster/cluster.conf文件,尤其是cluster configure工具里的service management里的Faildomain Domain是不是选择了定义的Faildomain Domain的名字,如smsdbHP.

另外,可以用demsg命令以及tail –f /var/log/messages检查系统错误消息与监控日志,帮助查错.

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22211153/viewspace-1116794/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-07-28