COROSYNC配置ORACLE双机.docx
- 文档编号:3537127
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:17
- 大小:46.20KB
COROSYNC配置ORACLE双机.docx
《COROSYNC配置ORACLE双机.docx》由会员分享,可在线阅读,更多相关《COROSYNC配置ORACLE双机.docx(17页珍藏版)》请在冰豆网上搜索。
COROSYNC配置ORACLE双机
LINUXCOROSYNC配置ORACLE双机
1.安装配置环境
系统:
CENTOS6.3X84
软件:
corosync开源集群底层软件,用来实现多个机器互相通讯(维持心跳)的
pacemaker集群资源管理器
resource-agents-3.9.2-7.el6.x86_64资源管理接口,3.9.2以上版本不支持oracle
drbd是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案
pcs命令行配置软件
lcmc图形配置软件
主机:
ha01eth1:
192.168.56.11/24eth2:
192.168.56.101/24
ha02eth1:
192.168.56.12/24eth2:
192.168.56.102/24
磁盘:
/dev/sda
/dev/adb
备注:
生产环境要求配置4块网卡,两块用于收发数据,两块用于双机心跳以及DRBD数据同步,每两块网卡绑定为一个逻辑网卡。
网上配置少的情况下,如果发生网络故障,双机会发生脑裂,导致数据错乱难以恢复。
2.系统配置
配置/etc/hosts
192.168.56.11ha01
192.168.56.101ha01
192.168.56.12ha02
192.168.56.102ha02
关闭防火墙及SELINUX
serviceiptablesstop
setenforce0
chkconfigiptablesoff
chkconfigip6tablesoff
vi/etc/selinux/config
SELINUX=disabled
3.安装软件
CENTOS6.3发行版本安装后的内核版本无法安装DRBD软件,需要升级内核至2.6.3-279.22.1
使用YUM进行安装时最好具备外网环境,否则需要修改YUM源为本地源,在系统安装不全时存在依赖包问题。
3.1.升级内核
yumlocalinstallkernel-2.6.32-279.22.1.el6.x86_64.rpmkernel-devel-2.6.32-279.22.1.el6.x86_64.rpmkernel-debug-2.6.32-279.22.1.el6.x86_64.rpmkernel-debug-devel-2.6.32-279.22.1.el6.x86_64.rpmkernel-doc-2.6.32-279.22.1.el6.noarch.rpmkernel-firmware-2.6.32-279.22.1.el6.noarch.rpmkernel-headers-2.6.32-279.22.1.el6.x86_64.rpm
升级后重启
3.2.安装双机相关软件
挂载系统光盘映像文件,使用yum命令安装以下包,使用RPM安装需要手工解决依赖包问题
yumlocalinstallflex-2.5.35-8.el6.x86_64.rpmlrzsz-0.12.20-27.1.el6.x86_64.rpmcorosync-1.4.1-7.el6.x86_64.rpmcorosynclib-1.4.1-7.el6.x86_64.rpmcorosynclib-devel-1.4.1-7.el6.x86_64.rpmpacemaker-1.1.7-6.el6.x86_64.rpmpacemaker-1.1.7-6.el6.x86_64.rpmpacemaker-cli-1.1.7-6.el6.x86_64.rpmpacemaker-cluster-libs-1.1.7-6.el6.x86_64.rpmpacemaker-libs-1.1.7-6.el6.x86_64.rpmpacemaker-libs-devel-1.1.7-6.el6.x86_64.rpmresource-agents-3.9.2-12.el6.x86_64.rpm
下载PCS安装
yumlocalinstallpcs-0.9.123-9.el6.x86_64.rpmlcmc-1.7.6-1.noarch.rpm
安装drbd
yumlocalinstalldrbd-8.4.3-33.el6.x86_64.rpmdrbd-kmdl-2.6.32-279.22.1.el6-8.4.3-33.el6.x86_64.rpm
3.3.DRBD介绍及配置
3.3.1.DRBD简介
DRBD为分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群。
其实现方式是通过网络来镜像整个设备。
你可以把它看作是一种网络RAID1。
它允许用户在远程机器上建立一个本地块设备的实时镜像。
3.3.2.DRBD是如何工作的
(DRBD Primary)负责接收数据,把数据写到本地磁盘并发送给另一台主机(DRBD Secondary)。
另一个主机再将数据存到自己的磁盘中。
目前,DRBD每次只允许对一个节点进行读写访问,但这对于通常的故障切换高可用集群来说已经足够用了。
有可能以后的版本支持两个节点进行读写存取。
3.3.3.DRBD与HA的关系
一个DRBD系统由两个节点构成,与HA集群类似,也有主节点和备用节点之分,在带有主要设备的节点上,应用程序和操作系统可以运行和访问DRBD设备(/dev/drbd*)。
在主节点写入的数据通过DRBD设备存储到主节点的磁盘设备中,同时,这个数据也会自动发送到备用节点对应的DRBD设备,最终写入备用节点的磁盘设备上,在备用节点上,DRBD只是将数据从DRBD设备写入到备用节点的磁盘中。
现在大部分的高可用性集群都会使用共享存储,而DRBD也可以作为一个共享存储设备,使用DRBD不需要太多的硬件投资。
因为它在TCP/IP网络中运行,所以,利用DRBD作为共享存储设备,要节约很多成本,其性能与稳定性方面也不错。
3.3.4.DRBD复制模式
协议A:
异步复制协议。
一旦本地磁盘写入已经完成,数据包已在发送队列中,则写被认为是完成的。
在一个节点发生故障时,可能发生数据丢失,因为被写入到远程节点上的数据可能仍在发送队列。
尽管,在故障转移节点上的数据是一致的,但没有及时更新。
这通常是用于地理上分开的节点
协议B:
内存同步(半同步)复制协议。
一旦本地磁盘写入已完成且复制数据包达到了对等节点则认为写在主节点上被认为是完成的。
数据丢失可能发生在参加的两个节点同时故障的情况下,因为在传输中的数据可能不会被提交到磁盘
协议C:
同步复制协议。
只有在本地和远程节点的磁盘已经确认了写操作完成,写才被认为完成。
没有任何数据丢失,所以这是一个群集节点的流行模式,但I/O吞吐量依赖于网络带宽
一般使用协议C,但选择C协议将影响流量,从而影响网络时延。
为了数据可靠性,我们在生产环境使用时须慎重选项使用哪一种协议。
3.3.5.DRBD工作原理图
DRBD是linux的内核的存储层中的一个分布式存储系统,可用使用DRBD在两台Linux服务器之间共享块设备,共享文件系统和数据。
类似于一个网络RAID-1的功能,如图所示:
3.3.6.配置DRBD
1.
2.
3.
3.1.
3.2.
3.3.
3.3.1.
3.3.2.
3.3.3.
3.3.4.
3.3.5.
3.3.6.
3.3.6.1.修改配置文件如下
[root@ha01~]#vim/etc/drbd.d/global_common.conf
.global{
usage-countno; #是否参加DRBD使用统计,默认为yes
#minor-countdialog-refreshdisable-ip-verification
}
common{
protocolC; #使用DRBD的同步协议
handlers{
#TheseareEXAMPLEhandlersonly.
#Theymayhavesevereimplications,
#likehardresettingtheha0eundercertaincircumstances.
#Becarefulwhenchosingyourpoison.
pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh;/usr/lib/drbd/notify-emergency-reboot.sh;echob>/proc/sysrq-trigger;reboot-f";
pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh;/usr/lib/drbd/notify-emergency-reboot.sh;echob>/proc/sysrq-trigger;reboot-f";
local-io-error "/usr/lib/drbd/notify-io-error.sh;/usr/lib/drbd/notify-emergency-shutdown.sh;echoo>/proc/sysrq-trigger;halt-f";
#fence-peer"/usr/lib/drbd/crm-fence-peer.sh";
#split-brain"/usr/lib/drbd/notify-split-brain.shroot";
#out-of-sync"/usr/lib/drbd/notify-out-of-sync.shroot";
#before-resync-target"/usr/lib/drbd/snapshot-resync-target-lvm.sh-p15---c16k";
#after-resync-target/usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
}
startup{
#wfc-timeoutdegr-wfc-timeoutoutdated-wfc-timeoutwait-after-sb
}
options{
#cpu-maskon-no-data-accessible
}
disk{
on-io-errordetach; #配置I/O错误处理策略为分离
#sizemax-bio-bvecson-io-errorfencingdisk-barrierdisk-flushes
#disk-drainmd-flushesresync-rateresync-afteral-extents
#c-plan-aheadc-delay-targetc-fill-targetc-max-rate
#c-min-ratedisk-timeout
}
net{
cram-hmac-alg "sha1"; #设置加密算法
shared-secret "allendrbd"; #设置加密密钥
#protocoltimeoutmax-epoch-sizemax-buffersunplug-watermark
#connect-intping-intsndbuf-sizercvbuf-sizeko-count
#allow-two-primariescram-hmac-algshared-secretafter-sb-0pri
#after-sb-1priafter-sb-2prialways-asbprr-conflict
#ping-timeoutdata-integrity-algtcp-corkon-congestion
#congestion-fillcongestion-extentscsums-algverify-alg
#use-rle
}
syncer{
rate1000M; #设置主备节点同步时的网络速率
}
}
注释:
on-io-error
detach分离:
这是默认和推荐的选项,如果在节点上发生底层的硬盘I/O错误,它会将设备运行在Diskless无盘模式下。
pass_on:
DRBD会将I/O错误报告到上层,在主节点上,它会将其报告给挂载的文件系统,但是在此节点上就往往忽略(因为此节点上没有可以报告的上层)。
-local-in-error:
调用本地磁盘I/O处理程序定义的命令;这需要有相应的local-io-error调用的资源处理程序处理错误的命令;这就给管理员有足够自由的权力命令或是脚本调用local-io-error处理I/O错误。
3.3.6.2.添加资源文件:
[root@ha01~]#vim/etc/drbd.d/oracle.res
resourcedrbd{
onha01{ #第1个主机说明以on开头,后面是主机名称
device /dev/drbd0;#DRBD设备名称
disk /dev/sdb1; #drbd0使用的磁盘分区为"sda3"
address 192.168.56.101:
7789; #设置DRBD监听地址与端口
meta-diskinternal;
}
onha02{
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.56.102:
7789;
meta-diskinternal;
}
}
3.3.6.3.将配置文件为ha02提供一份
[root@ha01~]#scp/etc/drbd.d/{global_common.conf,drbd.res}ha02:
/etc/drbd.d/
3.3.6.4.初始化资源并启动服务
在ha01节点上初始化资源并启动服务
[root@ha01~]#drbdadmcreate-mdoracle
Writingmetadata...
initializingactivitylog
NOTinitializingbitmap
lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd)failed:
Nosuchfileordirectory
Newdrbdmetadatablocksuccessfullycreated. #提示已经创建成功
lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd)failed:
Nosuchfileordirectory
启动服务
[root@ha01~]#servicedrbdstart
StartingDRBDresources:
[
createres:
drbd
preparedisk:
drbd
adjustdisk:
drbd
adjustnet:
drbd
]
...........
***************************************************************
DRBD'sstartupscriptwaitsforthepeerha0e(s)toappear.
-Incasethisha0ewasalreadyadegradedclusterbeforethe
rebootthetimeoutis0seconds.[degr-wfc-timeout]
-Ifthepeerwasavailablebeforetherebootthetimeoutwill
expireafter0seconds.[wfc-timeout]
(Thesevaluesareforresource'drbd';0sec->waitforever)
Toabortwaitingenter'yes'[ 12]:
yes
查看监听端口
[root@ha01~]#ss-tanl|grep7789
LISTEN 0 5 192.168.56.101:
7789 *:
*
在HA02节点上初始化资源并启动服务
[root@ha02~]#drbdadmcreate-mdoracle
Writingmetadata...
initializingactivitylog
NOTinitializingbitmap
lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd)failed:
Nosuchfileordirectory
Newdrbdmetadatablocksuccessfullycreated.
lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd)failed:
Nosuchfileordirectory
启动服务
[root@ha02~]#servicedrbdstart
StartingDRBDresources:
[
createres:
drbd
preparedisk:
drbd
adjustdisk:
drbd
adjustnet:
drbd
]
查看监听地址与端口
[root@ha02~]#netstat-anput|grep7789
tcp 0 0192.168.137.222:
42345 192.168.56.102:
7789 ESTABLISHED-
tcp 0 0192.168.137.222:
7789 192.168.137.225:
42325 ESTABLISHED-
查看DRBD启动状态
[root@ha02~]#drbd-overview
0:
drbd/0ConnectedSecondary/SecondaryInconsistent/InconsistentCr-----
3.3.6.5.资源的连接状态详细介绍
查看资源连接状态
[root@ha01~]#drbdadmcstateoracle #oracle为资源名称
Connected
资源的连接状态介绍
一个资源可能有以下连接状态中的一种
StandAlone独立的:
网络配置不可用;资源还没有被连接或是被管理断开(使用drbdadmdisconnect命令),或是由于出现认证失败或是脑裂的情况
Disconnecting断开:
断开只是临时状态,下一个状态是StandAlone独立的
Unconnected悬空:
是尝试连接前的临时状态,可能下一个状态为WFconnection和WFReportParams
Timeout超时:
与对等节点连接超时,也是临时状态,下一个状态为Unconected悬空
BrokerPipe:
与对等节点连接丢失,也是临时状态,下一个状态为Unconected悬空
NetworkFailure:
与对等节点推动连接后的临时状态,下一个状态为Unconected悬空
ProtocolError:
与对等节点推动连接后的临时状态,下一个状态为Unconected悬空
TearDown拆解:
临时状态,对等节点关闭,下一个状态为Unconected悬空
WFConnection:
等待和对等节点建立网络连接
WFReportParams:
已经建立TCP连接,本节点等待从对等节点传来的第一个网络包
Connected连接:
DRBD已经建立连接,数据镜像现在可用,节点处于正常状态
StartingSyncS:
完全同步,有管理员发起的刚刚开始同步,未来可能的状态为SyncSource或PausedSyncS
StartingSyncT:
完全同步,有管理员发起的刚刚开始同步,下一状态为WFSyncUUID
WFBitMapS:
部分同步刚刚开始,下一步可能的状态为SyncSource或PausedSyncS
WFBitMapT:
部分同步刚刚开始,下一步可能的状态为WFSyncUUID
WFSyncUUID:
同步即将开始,下一步可能的状态为SyncTarget或PausedSyncT
SyncSource:
以本节点为同步源的同步正在进行
SyncTarget:
以本节点为同步目标的同步正在进行
PausedSyncS:
以本地节点是一个持续同步的源,但是目前同步已经暂停,可能是因为另外一个同步正在进行或是使用命令(drbdadmpause-sync)暂停了同步
PausedSyncT:
以本地节点为持续同步的目标,但是目前同步已经暂停,这可以是因为另外一个同步正在进行或是使用命令(drbdadmpause-sync)暂停了同步
VerifyS:
以本地节点为验证源的线上设备验证正在执行
VerifyT:
以本地节点为验证目标的线上设备验证正在执行
3.3.6.6.资源角色
查看资源角色
[root@ha01~]#drbdadmroleoracle
Secondary/Secondary
[root@ha01~]#cat/proc/drbd
version:
8.4.3(api:
1/proto:
86-101)
GIT-hash:
89a294209144b68adb3ee85a73221f964d3ee515buildbygardner@,2013-05-2704:
30:
21
0:
cs:
Connectedro:
Secondary/Secondaryds:
Inconsistent/InconsistentCr-----
ns:
0nr:
0dw:
0dr:
0al:
0bm:
0lo:
0pe:
0ua:
0ap:
0ep:
1wo:
foos:
2103412
注释:
Parimary主:
资源目前为主,并且可能正在被读取或写入,如果不是双主只会出现在两个节点中的其中一个节点上
Secondary次:
资源目前为次,正常接收对等节点的更新
Unknown未知:
资源角色目前未知,本地的资源不会出现这种状态
3.3.6.7.硬盘状态
查看硬盘状态
[root@ha01~]#drbdadmdstateoracle
Inconsistent/Inconsistent
本地和对等节点的硬盘有可能为下列状态之一:
Diskless无盘:
本地没有块设备分配给DRBD使用,这表示没有可用的设备,或者使用drbdadm命令手工分离或是底层的I/O错误导致自动分离
Attaching:
读取无数据时候的瞬间状态
Failed失败:
本地块设备报告I/O错误的下一个状态,其下一个状态为Diskless无盘
Negotiating:
在已经连接的DRBD设置进行Attach读取无数据前的瞬间状态
Inconsistent:
数据是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- COROSYNC 配置 ORACLE 双机
![提示](https://static.bdocx.com/images/bang_tan.gif)