PaceMaker+corosync+drbd 实现oracle双机.docx
- 文档编号:30320163
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:20
- 大小:26.15KB
PaceMaker+corosync+drbd 实现oracle双机.docx
《PaceMaker+corosync+drbd 实现oracle双机.docx》由会员分享,可在线阅读,更多相关《PaceMaker+corosync+drbd 实现oracle双机.docx(20页珍藏版)》请在冰豆网上搜索。
PaceMaker+corosync+drbd实现oracle双机
PaceMaker+corosync+drbd实现oracle双机
1大体理论
1.1项目背景
公司近期要做oracle双机,保证单台设备故障不影响整个系统的平稳运作,任务落于本人头上,本人卑微程序员一名,对linux略知一二,本文仅仅是对这3、4天的总结,讲述的是小白的配置历程,肯定有不足之处,请大家多指出。
1.2所需软件
1.2.1DRBD
DistributedReplicatedBlockDevice(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。
就项目来说两台机器分别拿出一部分空间给DRBD管理,两台机器会被区分为主机和备机,主机上的修改会被DRBD自动同步到备机上,这样一来,我们在oracle中做的修改会被自动备份到备机上,主机故障时,备机上的数据也是一样的
1.2.2Linux-HA(HighAvailability)
网站简介:
http:
//www.linux-ha.org
ProvidingOpenSourceHigh-AvailabilitySoftwareforLinuxandotherPlatformssince1999
这个项目有许多软件,专门为了linux高可用性集群而生,其中就包括了本次实验中用到的PaceMaker和Corosync
1.2.3PaceMakerCorosync
Pacemakerkeepsyourapplicationsrunningwhentheyorthemachinesthey'rerunningonfail.Howeveritcan'tdothiswithoutconnectivitytotheothermachinesinthecluster-asignificantprobleminitsownright.
Ratherthanre-implementthewheel,PacemakersupportsexistingimplimentationssuchasCorosync.Corosyncprovidespacemaker:
▪amechansigmtoreliablysendmessagesbetweennodes,
▪notificationswhenmachinesappearanddisappear
▪alistofmachinesthatareupthatisconsistentthroughoutthecluster
Corosync wasthesecondstacksupportedbythePacemakercodebase.
大体意思是Corosync用来实现多个机器互相通讯(维持心跳)的,而pacemaker是在corosync上层来统一管理整个集群的运行,注意最后一句,corosync只是第二推荐,第一推荐是heartbeat,但是heartbeat版本有些乱(具体请自己查这个网站),而且本人测试也没有成功。
就项目来说corosync是维持两台机器心跳的(两个机器用网线直连),然后将状态上报给pacemaker,pacemaker对整个集群统一管理,外部环境(比如web项目)访问数据库集群时访问的是pacemaker。
1.3环境配置
1.3.1硬件
戴尔R710服务器两台,2G内存,146G硬盘一块,四网卡
1.3.2软件
(1)CentOS-5.5-x86_64(官网下载,2张dvd,没有特殊要求下载第一张安装系统就够了,第二张是其他的一些rpm程序包)
(2)linux.x64_11gR2_database官网下载11g64位
1.3.3网络配置
eth0
eth2
node1
IP:
192.168.0.241
掩码:
255.255.255.0
网关:
192.168.0.1
IP:
192.168.1.1
掩码:
255.255.255.0
网关:
空着
node2
IP:
192.168.0.242
掩码:
255.255.255.0
网关:
192.168.0.1
IP:
192.168.1.2
掩码:
255.255.255.0
网关:
空着
注:
本次实验使用了机器后面的第一个网口跟第三个网口(手太大了,两个网口远些好整)
另外预留一浮动IP192.168.0.240,以后访问的就是这个浮动的虚拟IP(VIP),虚拟主机名预留为node
2具体安装
2.1操作系统
安装是关闭防火墙、selinux
安装时选择的是手动分区,两台机器选择同样的分区方式
/bootext31000Msda1
/ext3100000Msda2
/optext310000Msda3
扩展分区sda4
Swap4000Msda5
剩余25015M未分配
未分配空间就是将来两个机器中用来同步的空间,oracle及其数据文件将来就安放于此
安装完成后查看命令df–halfdisk–l
2.2 网络配置
[root@node1~]#cat/etc/hosts
#Donotremovethefollowingline,orvariousprograms
#thatrequirenetworkfunctionalitywillfail.
127.0.0.1node1localhost.localdomainlocalhost
:
:
1localhost6.localdomain6localhost6
192.168.0.241node1
192.168.0.242node2
192.168.0.240node
2.3DRBD
2.3.1安装
安装依赖yum-yinstallgccmakeautomakeautoconfflexrpm-buildkernel-devel
安装drbdyuminstallkmod-drbd
2.3.2分区
两台机器上创建LVM分区
fdisk/dev/sda
n(新增分区)
p设置为主分区
回车(起始区默认即可)
+14600M(预留了14919M)
W(写入保存)
Fdisk–l结果如下
Disk/dev/sda:
146.8GB,146815733760bytes
255heads,63sectors/track,17849cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda1*1127102009683Linux
/dev/sda21281287510239831083Linux
/dev/sda3128761415010241437+83Linux
/dev/sda4141511784929712217+5Extended
/dev/sda514151146604096543+82Linuxswap/Solaris
/dev/sda614661178492561561183Linux
2.3.3配置
两台机器上修改/etc/drbd.conf文件
#pleasehaveaalookattheexampleconfigurationfilein
#/usr/share/doc/drbd/drbd.conf
#
#是否参加DRBD使用者统计.默认是yes
global{usage-countyes;}
#设置主备节点同步时的网络速率最大值,单位是字节.
common{syncer{rate100M;}}
#一个DRBD设备(即:
/dev/drbdX),叫做一个"资源".里面包含一个DRBD设备的主备节点的
#相关信息.
#
resourcer0{
#使用协议C.表示收到远程主机的写入确认后,则认为写入完成.
protocolC;
net{
#设置主备机之间通信使用的信息算法.
cram-hmac-algsha1;
shared-secret"FooFunFactory";
}
#每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置.
onnode1{
#/dev/drbd1使用的磁盘分区是/dev/hdb1
device/dev/drbd0;
disk/dev/sda4;
#设置DRBD的监听端口,用于与另一台主机通信
address192.168.1.1:
7898;
meta-diskinternal;
}
onnode2{
device/dev/drbd0;
disk/dev/sda6;
address192.168.1.2:
7898;
meta-diskinternal;
}
}
注:
IP可以写eth0的,也可以写eth2的(推荐),直连的同步的快
2.3.4同步
1.两台机器分别执行
drbdadmcreate-mdr0
2.分别执行servicedrbdstart;然后在主机上执行drbdsetup/dev/drbd0primary–o
3.执行cat/proc/drbd
状态为cs:
Connectedst:
Primary/Secondaryds:
UpToDate/UpToDate表示同步结束
2.3.5测试drbd
(1)上述步骤完成,2台机器已经同步完毕,都是用的/dev/drbd0这个文件来共享数据
但要使用,则要在正在使用的(主)设备上挂载才行:
mkfs-text3/dev/drbd0
mkdir/sharedisk
mount/dev/drbd0/sharedisk
此时,对/sharedisk的修改,会同步到备份设备的/dev/drbd0上,但如果要看的话,也需要在备份设备上进行挂载
(2)主热切换,查看文件是否同步
Unmountthepartitionanddegradeprimarytosecondary(drbd-1):
umount /sharedisk
drbdadm secondary r0
Ontheotherserver(drbd-2),promoteittoprimary,mountdrbddeviceandcheckcopiedfiled:
drbdadm primary r0
mkdir /sharedisk
mount/dev/drbd0/sharedisk
安装好oracle后,重启主机,sharedisk没了。
。
。
。
没有看备机上的东西还在么
mkfs-text3/dev/drbd0是否是这句话把从备机上传来的数据抹杀了。
。
。
。
2.4Pacemaker和corosync安装
本网页是pacemaker+corosync+http的配置演示,可以快速入门,对软件有个全面的认识
搭配crm常用命令
2.4.1集群间ssh访问
生成密钥文件,实现不实用密码就能相互访问主机:
#ssh-keygen-trsa//一直Enter下去
#ssh-copy-id -i.ssh/id_rsa.pub root@node2 //然后输入密码即可,
node1,node2上都相应执行
2.4.2安装
采用官方推荐的安装方法http:
//clusterlabs.org/wiki/Install#Binary_Packages中
InstallingonEPEL-5CompatibleDistributions:
RHEL,CentOS,etc
的安装方法,注意,操作系统版本不同,下述命令中地址可能不同
su-c'rpm-Uvhhttp:
//dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm'
wget-O/etc/yum.repos.d/pacemaker.repohttp:
//clusterlabs.org/rpm/epel-5/clusterlabs.repo
centos5.5中本来是perl-5.8.8-27需要升级到5.8.8-32
yuminstall-yperl
yuminstall-ypacemakercorosyncheartbeat(heartbeat本项目中没有用到,可以不用安装)
2.4.3修改配置
[root@node1~]#cat/etc/corosync/corosync.conf
#Pleasereadthecorosync.conf.5manualpage
compatibility:
whitetank
totem{
version:
2
secauth:
off
threads:
0
interface{
ringnumber:
0
bindnetaddr:
192.168.0.0
mcastaddr:
226.94.1.1
mcastport:
5405
}
}
logging{
fileline:
off
to_stderr:
no
to_logfile:
yes
to_syslog:
yes
logfile:
/var/log/cluster/corosync.log
debug:
off
timestamp:
on
logger_subsys{
subsys:
AMF
debug:
off
}
}
amf{
mode:
disabled
}
service{
ver:
0
name:
pacemaker
}
aisexec{
user:
root
group:
root
}
2.4.4集群间corosync访问
生成节点间通信时用到的认证密钥文件:
#corosync-keygen《---此处会在当前目录下生成一个认证密钥文件
然后拷贝相关的文件到节点2上:
#scp-p corosync.conf authkeynode2:
/etc/corosync/
为两个节点创建corosync生成的日志所在的目录:
#mkdir/var/log/cluster
#sshnode2-- mkdir/var/log/cluster
2.4.5启动corosync
开始启动corosync(在节点1上执行):
#/etc/init.d/corosyncstart
StartingCorosyncClusterEngine(corosync):
[ OK ] 《------出现此,说明您的corosync已经启动
开始验证是否有其他错误:
查看corosync引擎是否正常启动
#grep-e"CorosyncClusterEngine"-e"configurationfile"/var/log/messages
查看初始化成员节点通知是否正常发出
#grepTOTEM/var/log/messages
检查启动过程中是否有错误产生
#grepERROR:
/var/log/messages|grep-vunpack_resources
如果没有出现错误,此处则不会出现任何信息
查看pacemaker是否正常启动
#greppcmk_startup/var/log/messages
上述验证错误的操作没有出现问题的话,您就可以启动节点2了:
#sshnode2--/etc/init.d/corosync start《-----此步您需要在节点1上进行
StartingCorosyncClusterEngine(corosync):
[ OK ]《----出现此,说明您的节点2corosync已经启动,您需要在节点2上继续验证是否出现异常错误,执行验证错误的步骤即可。
查看节点的运行状态:
#crmstatus
============
Lastupdated:
ThuSep1515:
17:
502011
Stack:
openais
CurrentDC:
-partitionwithquorum
Version:
1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2Nodesconfigured,2expectedvotes
0Resourcesconfigured.
============
Online:
[node1node2]《----此处说明您的两个集群节点均已运行正常。
2.4.6配置集群的工作属性
crmconfigureerase
crmconfigurersc_defaultsresource-stickiness=100
crmconfigurepropertyno-quorum-policy=ignore
crmconfigurepropertystonith-enabled="false"
#####创建一个IP地址资源虚拟IP生效后,用ifconfig命令看不到,可用ipaddr查看
crmconfigureprimitiveip_oracleocf:
heartbeat:
IPaddr2paramsip="192.168.0.240"#nic="eth0"cidr_netmask="24"
#####挂载共享磁盘
crmconfigureprimitivedrbd_oracleocf:
heartbeat:
drbdparamsdrbd_resource="r0"opmonitorinterval="15s"
crmconfigureprimitivefs_oracleocf:
heartbeat:
Filesystemparamsdevice="/dev/drbd0"directory="/sharedisk"fstype="ext3"
下面的配置要在oracle安装好之后进行配置,此处一并列出而已
##创建oracle资源
crmconfigureprimitiveoracle_instantocf:
heartbeat:
oracleopmonitorinterval="120"timeout="30"opstartinterval="0"timeout="120"paramssid="orcl"
##本句话要交互式运行crmconfigureprimitiveoracle_lsnrctlocf:
heartbeat:
oralsnrparamssid="orcl"operations$id="oracle_lsnrctl-operations"opmonitorinterval="10"timeout="30"
primitiveoracle_lsnrctlocf:
heartbeat:
oralsnr\
paramssid="orcl"\
operations$id="oracle_lsnrctl-operations"\
opmonitorinterval="10"timeout="30"
commit
quit
##将以上建立的资源作为一个整体,保证同时在一个节点上运行
crmconfiguregroupgroup_oracleip_oraclefs_oracleoracle_lsnrctloracle_instantmetatarget-role="Started"is-managed="true"
##制定如何决定在哪个机器上运行的策略
crmconfiguremsms_drbd_oracledrbd_oraclemetamaster-max="1"master-node-max="1"clone-max="2"clone-node-max="1"notify="true"
crmconfigurecolocationoracle_on_drbdinf:
group_oraclems_drbd_oracle:
Master
##制定资源执行的顺序
crmconfigureorderoracle_after_drbdinf:
ms_drbd_oracle:
promotegroup_oracle:
start
2.4.7测试
分别在两台机器上启动启动corosync/etc/init.d/corosyncstart
主机上启动资源crmresourcestartgroup_oracle
2.5ORACLE安装
将oracle安装放在最后,是因为作为新手,在安装集群共享存储的时候,极有可能导致存储空间的混乱,比如被清空,不同步,文件来回覆盖等问题,所以在充分了解了drbd,pacemaker,corosync之后才进行oracle的安装
Oracle就安装在drbd的主机上共享磁盘中即可,此处为node1的/sharedisk
其中2.5.1,2.5.2,2.5.4,2.5.5,2.5.6都是需要在两台设备中都做的工作
2.5.1安装依赖
yum-yinstallgccgcc-c++compat-libstdc++-33-3.2.3elfutils-libelf-devellibaio-develsysstatunixODBCunixODBC-develpdksh
2.5.2创建用户和组
(1)OracleInventory组
groupaddoinstall
(2)数据库管理员组
groupadddba
(3)数据库操作员组
groupaddoper
(4)生成操作系统用户oracle,是软件安装的拥有者,属于oinstall等三个组
useradd-goinstall-Gdba,operoracle
passwdoracle修改oracle密码:
whjxpass
2.5.3创建相应的目录
(1)oracle根目录
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PaceMaker+corosync+drbd 实现oracle双机 PaceMaker corosync drbd 实现 oracle 双机