基于linux集群的j2ee航空售票系统的设计Word格式文档下载.docx
《基于linux集群的j2ee航空售票系统的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于linux集群的j2ee航空售票系统的设计Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
OracleRAC主要支持Oracle9i、10g、11g版本,可以支持24x7有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。
在OracleRAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。
当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。
在Oracle9i之前,RAC的名称是OPS(OracleparallelServer)。
RAC与OPS之间的一个较大区别是,RAC采用了CacheFusion(高速缓存合并)技术。
在OPS中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。
使用Cachefusion时,RAC的各个节点的数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。
1.3.本文主要研究内容与结构
项目与李凡共同设计完成。
本文主要探讨在linux下oracleRAC集群平台的构建和配置,李凡的论文则探讨如何在此平台上部署J2EE应用系统及测试分析。
。
2.
oraclerac原理
一个OracleRac数据库有多个服务器节点组成,每个服务器节点上都有自己独立的OS、ClusterWare、oracleRac数据库程序等,并且每个节点都有自己的网络监听器。
ClusterWare是一个集群软件,主要用于集群系统管理,oracleRac数据库程序用于提供oracle实例进程,以供客户端访问集群系统,监听服务主要用于监控自己的网络端口信息,所有的服务和程序通过操作系统都去访问一个共享存储,最终完成数据的读写。
共享存储的实现方式有很多种,可以通过使用自动存储管理(ASM)、Oracle集群文件系统(OCFS)、裸设备(Raw)、网络区域存储(NAS)等来保证整个集群系统数据的一致性。
从Oracle10g起,Oracle提供了自己的集群软件,即Oracleclusterware,它通过CRS(即ClusterReadyServices)来实现,这个软件是安装oraclerac的前提,也是RAC环境稳定运行的基础,在oracle10g之前的版本,安装RAC时必须借助与第三方的集群软件,而在oracle10g以后,安装oraclerac时,可以用oracle自带的集群软件,也可以使用经过RAC认证的第三方集群软件来代替。
3.配置linux操作系统环境
3.1.修改虚拟机配置
Linux操作系统搭建在vmwareserver2.0.2版之上,VMware是一个虚拟机软件。
多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。
VMWare是真正同时运行,多个操作系统在主系统的平台上,就象Word/Excel等标准Windows应用程序那样切换。
而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。
在配置linux系统之前,首先到虚拟机工作目录,打开rac1.vmx文件,添加下列内容,目的为了构建共享存储:
disk.locking="
false"
diskLib.dataCacheMaxSize="
0"
diskLib.dataCacheMaxReadAheadSize="
diskLib.DataCacheMinReadAheadSize="
diskLib.dataCachePageSize="
4096"
diskLib.maxUnsyncedWrites="
scsi1:
0.deviceType="
disk"
1.deviceType="
2.deviceType="
3.deviceType="
4.deviceType="
5.deviceType="
3.2.编辑/etc/hosts文件
[root@rac1~]#vi/etc/hosts
增加如下内容:
#节点一二公有网卡eth0的IP
192.168.1.11rac1
192.168.1.12rac2
#节点一二私有网卡eth1IP
10.1.1.11rac1-priv
10.1.1.12rac2-priv
#节点一二virtualIP(VIP)
192.168.1.21rac1-vip
192.168.1.22rac2-vip
3.3.创建组oinstall,dba,用户oracle
创建oinstall和dba组
[root@rac1~]#groupaddoinstall
[root@rac1~]#groupadddba
创建oracle用户
[root@rac1~]#useradd-d/home/oracle-goinstall-Gdbaoracle
设置oracle用户密码
[root@rac1~]#passwdoracle
Changingpasswordforuseroracle.
NewUNIXpassword:
BADPASSWORD:
itisbasedonadictionaryword
RetypenewUNIXpassword:
passwd:
allauthenticationtokensupdatedsuccessfully.
3.4.修改oracle用户的初始化参数文件及创建oracle安装目录
创建oracle软件安装目录
[oracle@rac1~]#mkdir-p/u01/app/oracle/product/10.2.0/db_1
创建clusterware安装目录
[oracle@rac1~]#mkdir-p/u01/app/oracle/product/10.2.0/crs
更改目录/u01的所属者
[oracle@rac1~]#chown-Roracle:
oinstall/u01
修改oracle用户的环境变量
[oracle@rac1~]$vi.bash_profile
exportEDITOR=vi
exportORACLE_SID=rac1
exportORACLE_BASE=/u01/app/oracle
exportORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
exportORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib
exportPATH=$ORACLE_HOME/bin:
$ORA_CRS_HOME/bin:
/bin:
/usr/bin:
/usr/sbin:
/usr/local/bin:
/usr/X11R6/bin
umask022
3.5.配置内核参数
[root@rac1~]#vi/etc/sysctl.conf
增加或修改下列内容
#所有内存大小
kernel.shmall=2097152
#最大共享内存
kernel.shmmax=536870912
#最小共享内存
kernel.shmmni=4096
#每个信号集的最大信号数量
kernel.sem=25032000100128
#系统允许打开的文件数
fs.file-max=65536
net.ipv4.ip_local_port_range=102465000
net.core.rmem_default=1048576
net.core.rmem_max=1048576
net.core.wmem_default=262144
net.core.wmem_max=262144
让设置生效
[oracle@rac1~]#sysctl–p
3.6.提高oracle用户的shell限制
设置oracle使用的文件数权限
[root@rac1~]#vi/etc/security/limits.conf
增加下列内容
oraclesoftnproc2047
oraclehardnproc16384
oraclesoftnofile1024
oraclehardnofile65536
[root@rac1~]#vi/etc/profile
增加以下内容
if[$USER="
oracle"
];
then
if[$SHELL="
/bin/ksh"
then
ulimit-p16384
ulimit-n65536
else
ulimit-u16384-n65536
fi
fi
修改安全限制
[root@rac1~]#vi/etc/pam.d/login
增加:
sessionrequired/lib/security/pam_limits.so
配置Hangcheck计时器
[root@rac1~]#vi/etc/rc.local
modprobehangcheck-timerhangcheck-tick=30hangcheck_margin=180
3.7.磁盘分区
例如:
[root@rac1~]#fdisk/dev/sdb
Command(mforhelp):
n
Commandaction
eextended
pprimarypartition(1-4)
p
Partitionnumber(1-4):
1
Firstcylinder(1-102,default1):
Usingdefaultvalue1
Lastcylinderor+sizeor+sizeMor+sizeK(1-102,default102):
Usingdefaultvalue102
w
Thepartitiontablehasbeenaltered!
Callingioctl()tore-readpartitiontable.
Syncingdisks.
需要你输入的依次是"
n/p/1/回车/回车/w"
就本例而言,需要我们进行分区的有6个:
sdb,sdc,sdd,sde,sdf,sdg
逻辑卷一:
clusterware的仲裁盘(vote),存储方式为裸设备
[root@rac1~]#fdisk/dev/sdb
逻辑卷二:
clusterware的资源盘(OCR),存储方式为裸设备
[root@rac1~]#fdisk/dev/sdc
逻辑卷三四:
oracle数据库的数据盘,存储方式为ASM
[root@rac1~]#fdisk/dev/sdd
[root@rac1~]#fdisk/dev/sde
逻辑卷五六:
oracle数据库的闪回恢复盘,存储方式为ASM
[root@rac1~]#fdisk/dev/sdf
[root@rac1~]#fdisk/dev/sdg
3.8.安装oracleasmlib程序包
ASM全称AutomatedStorageManagement,oracle开发的文件系统
安装示例:
[root@rac1~]#rpm-ivhoracleasm-support-2.1.4-1.el4.i386.rpm
[root@rac1~]#rpm-ivhoracleasm-2.6.9-67.EL-2.0.3-1.i686.rpm
[root@rac1~]#rpm-ivhoracleasmlib-2.0.4-1.el4.i386.rpm
3.9.配置裸设备
[root@rac1~]#vi/etc/sysconfig/rawdevices
把格式化后的裸设备映射出来
/dev/raw/raw1/dev/sdb1
/dev/raw/raw2/dev/sdc1
/dev/raw/raw3/dev/sdd1
/dev/raw/raw4/dev/sde1
/dev/raw/raw5/dev/sdf1
/dev/raw/raw6/dev/sdg1
重启raw设备
[root@rac1~]#servicerawdevicesrestart
[root@rac1~]#vi/etc/udev/permissions.d/50-udev.permissions
#rawdevices
ram*:
root:
disk:
0660
#raw/*:
raw/*:
oracle:
dba:
再次重启raw设备
关闭系统,关闭电源,在standard目录里新建一个rac2文件夹,把rac1文件夹里面的所有文件,拷贝到rac2文件夹里,当做节点二,并且修改主机号和IP地址
[root@rac1~]#shutdown-hnow
启动节点二
节点二
修改主机号
[root@rac2~]#vi/etc/sysconfig/network
HOSTNAME=rac2
公有网卡
[root@rac2~]#vi/etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR=00:
0C:
29:
30:
F1:
8E---删除
IPADDR=192.168.1.12---修改
私有网卡
[root@rac2~]#vi/etc/sysconfig/network-scripts/ifcfg-eth1
98---删除
IPADDR=10.1.1.12---修改
节点二重启网卡
[root@rac2~]#servicenetworkresrart
节点二:
修改profile
[root@rac2~]#su–oracle
修改ORACLE_SID
[oracle@rac2~]$vi.bash_profile
exportORACLE_SID=rac2
启动节点一
4.配置clusterware安装环境
4.1.设置ssh
在clusterware(CRS)和RacDatabase安装过程中,OracleUniversalInstaller(OUI)必须能够以oracle的身份自动将软件复制到所有RAC节点。
这里我们通过配置ssh让oracle用户拥有不输入密码即可访问各节点的能力。
首先两个节点间互ping,要确保都是通的
[root@rac1~]#ping192.168.1.12
[root@rac1~]#ping10.1.1.12
要建立用户等效性,需要在两个节点上以oracle用户身份生成用户的公钥和私钥,首先在rac1执行:
[root@rac1opt]#su-oracle
[oracle@rac1~]$mkdir~/.ssh
[oracle@rac1~]$chmod700~/.ssh
[oracle@rac1~]$ssh-keygen-trsa
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/home/oracle/.ssh/id_rsa):
Enterpassphrase(emptyfornopassphrase):
Entersamepassphraseagain:
Youridentificationhasbeensavedin/home/oracle/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/home/oracle/.ssh/id_rsa.pub.
Thekeyfingerprintis:
d2:
69:
eb:
ac:
86:
62:
27:
50:
99:
ff:
e8:
1e:
a2:
e6:
5d:
7foracle@rac1
[oracle@rac1~]$ssh-keygen-tdsa
Generatingpublic/privatedsakeypair.
Enterfileinwhichtosavethekey(/home/oracle/.ssh/id_dsa):
Youridentificationhasbeensavedin/home/oracle/.ssh/id_dsa.
Yourpublickeyhasbeensavedin/home/oracle/.ssh/id_dsa.pub.
0a:
9a:
20:
46:
28:
ec:
72:
23:
82:
f2:
9d:
f8:
9b:
d1oracle@rac1
然后换rac2执行
[root@rac2~]#ping192.168.1.11
[root@rac2~]#ping10.1.1.11
[root@rac2~]#su-oracle
[oracle@rac2~]$mkdir~/.ssh
[oracle@rac2~]$chmod700~/.ssh
[oracle@rac2~]$ssh-keygen-trsa
dd:
be:
7a:
37:
e4:
b5:
f0:
b2:
24:
95:
61:
ea:
a1:
07oracle@rac2
[oracle@rac2~]$ssh-keygen-tdsa
Enterpassphrase(emptyf