荆棘之冠象征意义:Redhat AS4 + Cluster + GFS + Oracle10g双机调试文档(.ddd..

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 07:58:14
 Redhat AS4 + Cluster + GFS + Oracle10g双机调试文档(一) 收藏
一、客户需求客户的数据库跑的业务是营收帐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 GBHP 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.zipSSH客户端:SSHSecureShellClient-3.2.9VNC客户端:HA-vnc-4.0-x86_win32-KCOracle10g客户端:10g_win32_db.zipPL/SQL(oracle工具):PL/SQL Developer 7.0Oracle10g 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.comCluster虚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 Suite与GFS Suite A、安装Cluster SuiteVnc连接到服务器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 SuiteVnc连接到服务器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)、将cluster与GFS的各项服务设置开机自启动在两台服务器上分别执行以下命令[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 -lDisk /dev/cciss/c0d0: 72.8 GB, 72833679360 bytes255 heads, 32 sectors/track, 17433 cylindersUnits = cylinders of 8160 * 512 = 4177920 bytesDevice Boot      Start         End      Blocks   Id  System/dev/cciss/c0d0p1   *           1        6275    25601984   83  Linux/dev/cciss/c0d0p2            6276        6776     2044080   82  Linux swap/dev/cciss/c0d0p3            6777       17433    43480560   83  LinuxDisk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes255 heads, 63 sectors/track, 72945 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot      Start         End      Blocks   Id  System(2)、发现/dev/cciss/c1d0(容量600G)磁盘阵列,给/dev/cciss/c1d0分区[root@smsdb01 /]# fdisk /dev/cciss/c1d0The 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可建立新的分区,等等我们输入pCommand (m for help): pDisk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes255 heads, 63 sectors/track, 72945 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes           Device Boot      Start         End      Blocks   Id  System可以看到,当前没有分区,我们输入n,建立一个新的分区Command (m for help): nCommand action   e   extended   p   primary partition (1-4)输入e建立扩展分区,输入p建立主分区,由于我们要把oracle的数据库建立在共享磁盘上,没有其他用途,所以,我们只建立一个主分区即可,输入pCommand action   e   extended   p   primary partition (1-4)pPartition number (1-4):输入主分区号,值为1-4,我们输入1Partition number (1-4): 1  Partition 1 is already defined.  Delete it before re-adding it.注意:主分区我已经事先建立好了,这里只是演示一下输入p,查看一下Command (m for help): pDisk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes255 heads, 63 sectors/track, 72945 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes           Device Boot      Start         End      Blocks   Id  System/dev/cciss/c1d0p1   *           1       72945   585930681   83  Linux注意:因为要建立动态磁盘系统,以使GFS格式化磁盘阵列柜后可以动态调整分区大小,因此需要将刚建立的主分区类型更改为8e,即lvm类型的动态磁盘分区.输入tCommand (m for help): tSelected partition 1Hex code (type L to list codes):输入8eCommand (m for help): tSelected partition 1Hex code (type L to list codes): 8e检查一下,输入p,见下面的红色字体Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes255 heads, 63 sectors/track, 72945 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes           Device Boot      Start         End      Blocks   Id  System/dev/cciss/c1d0p1   *           1       72945   585930681   8e  Linux LVM输入w,保存一下,OKCommand (m for help): wThe 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 -lDisk /dev/cciss/c0d0: 72.8 GB, 72833679360 bytes255 heads, 32 sectors/track, 17433 cylindersUnits = cylinders of 8160 * 512 = 4177920 bytes           Device Boot      Start         End      Blocks   Id  System/dev/cciss/c0d0p1   *           1        6275    25601984   83  Linux/dev/cciss/c0d0p2            6276        6777     2048160   82  Linux swap/dev/cciss/c0d0p3            6778       17433    43476480   83  LinuxDisk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes255 heads, 63 sectors/track, 72945 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes           Device Boot      Start         End      Blocks   Id  System/dev/cciss/c1d0p1   *           1       72945   585930681   8e  Linux LVM
注:应该也可以看到磁盘阵列柜,以及分区类型.(4)、动态磁盘的建立提醒:以下A、B、C、D步骤只在服务器1上操作,步骤E需要在服务器1与2上都做. 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-taTUk3B:建立逻辑卷组,组名为oracle10g[root@smsdb01 /]#vgcreate oracle10g /dev/cciss/c1d0p1检查一下建立的逻辑卷组[root@smsdb01 /]# vgdisplayC:建立逻辑卷注意,逻辑卷大小要小于物理卷的大小(下面有说明),名字是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注意:如果出现下面的错误,无法mountmount: permission denied检查/etc/cluster/cluster.conf文件,尤其是cluster configure工具里的service management里的Faildomain Domain是不是选择了定义的Faildomain Domain的名字,如smsdbHP.另外,可以用demsg命令以及tail –f /var/log/messages检查系统错误消息与监控日志,帮助查错
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jx0923/archive/2009/11/30/4905740.aspx