用DRBD和Heartbeat实现人行前置机双机热备.docx
《用DRBD和Heartbeat实现人行前置机双机热备.docx》由会员分享,可在线阅读,更多相关《用DRBD和Heartbeat实现人行前置机双机热备.docx(16页珍藏版)》请在冰豆网上搜索。
用DRBD和Heartbeat实现人行前置机双机热备
用DRBD和Heartbeat实现人行前置机双机热备
1前提
Linux下可以用开源软件DRBD和Heartbeat实现廉价的双机热备,这种方案不需要存储和光纤交换机,适合于共享存储不是特别大的场合,比较廉价。
人行的网银前置机就可以采用这种方式。
建议使用SuseLinuxEnterpriseServer10、11或SuseLinuxHAExtension版本,Suse企业版和HA扩展版中已经包含了DRBD和Heartbeat。
如果采用OpenSuse或其他版本Linux,可能需要自行安装DRBD和Heartbeat,因为其中涉及很多软件包,安装比较麻烦。
(本文并不提供详细的安装说明)
1.1DRBD
DRBD是一个磁盘镜像软件,类似于一个网络RAID-1功能。
当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上,以相同的形式记录在一个文件系统中。
本地(主节点)与远程主机(备节点)的数据可以保证实时同步。
当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。
DRBD包含一个用户程序和一个内核模块,在Linux内核2.6.33后已经含有了drbd的内核模块,不需要再安装drbd内核。
目前DRBD的最新版本是8.3.8.1。
1.2Heartbeat
Heartbeat是Linux下的HA软件,用来实现高可靠性集群服务。
目前Heartbeat最新版本是3.0。
1.3示例系统
下面用2台虚拟机上的的双机热备来说明DRBD和Heartbeat的配置和启动。
●主机A(双网卡):
操作系统:
OpenSuseLinuxServer11.1
DRBD版本:
8.2.7
Heartbeat版本:
2.1.3
内核:
Linuxsuse112.6.27.19-5-pae#1SMP2009-02-2804:
40:
21+0100i686i686i386GNU/Linux
心跳IP:
10.1.1.228(eth0)
固定IP:
192.168.253.101(eth1)
浮动IP:
192.168.253.205(eth1:
0,由Heartbeat自动获得)
主机名:
suse11
空磁盘分区:
/dev/sda5
●备机B(双网卡)
操作系统:
OpenSuseLinuxServer11.1
DRBD版本:
8.2.7
Heartbeat版本:
2.1.3
内核:
Linuxibps-mbfe2.6.27.19-5-pae#1SMP2009-02-2804:
40:
21+0100i686i686i386GNU/Linux
心跳IP:
10.1.1.229(eth0)
固定IP:
192.168.253.202(eth1)
浮动IP:
192.168.253.205(eth1:
0,由Heartbeat自动获得)
主机名:
ibps-mbfe
空磁盘分区:
/dev/sda5
说明:
浮动IP是对外公开的IP地址,主机挂掉,由备机自动获得此IP。
心跳IP通过直连网线直接相连,心跳IP可以随便设置,只要保证是同一IP段(没有双网卡,可以采用单网卡配置2个IP)。
空磁盘分区必须一致,大小必须一致,不能格式化,不能有任何数据。
2DRBD配置
2.1安装DRBD
在主备机上安装DRBD8.2.7版本(示例中的操作系统,其他版本安装不上)。
主机:
suse11:
/etc/ha.d/resource.d#cat/proc/drbd
version:
8.2.7(api:
88/proto:
86-88)
GIT-hash:
61b7f4c2fc34fe3d2acf7be6bcc1fc2684708a7dbuildbyphil@fat-tyre,2008-11-1216:
47:
11
备机:
ibps-mbfe:
/etc/ha.d/resource.d#cat/proc/drbd
version:
8.2.7(api:
88/proto:
86-88)
GIT-hash:
61b7f4c2fc34fe3d2acf7be6bcc1fc2684708a7dbuildbyphil@fat-tyre,2008-11-1216:
47:
11
2.2修改/etc/hosts文件
主机A中的/etc/hosts添加以下2行:
192.168.253.101suse11
192.168.253.202ibps_mbfe
备机B中的/etc/hosts添加以下2行:
192.168.253.202ibps-mbfe
192.168.253.101suse11
2.3DRBD配置
这里示例采取的是先创建建立DRBD资源,然后在DRBD资源中再创建逻辑卷。
当然,也可以先建立逻辑卷,然后从逻辑卷创建DRBD资源。
根据人行的umts_install.sh,先建立DRBD资源比较方便,不需要修改umts_install.sh。
注意:
主备机上的空磁盘分区(示例中是/dev/sda5)必须一致,并且大小也必须完全一致。
DRBD配置文件一般存放在/etc/drbd.conf
主机A的drbd.conf(备机B上完全一样),具体的每个参数说明,可以参考官方网站http:
//www.drbd.org/
2.4创建DRBD资源
在A、B上执行以下命令:
#drbdadmcreate-mdr0
2.5启动DRBD
在A、B上分别启动DRBD:
(这里碰到个问题,drbd的内核模块无法通过modprobe激活,通过修改/etc/init.d/drbd启动脚本,用insmod解决了该问题)
#vi/etc/init.d/drbd
红色为添加部分,白色框为被注释部分。
启动DRBD:
#servicedrbdstart
这里注意:
A机上启动drbd后,B机也要及时启动,否则A机的drbd等待一定时间后,会自动退出。
启动后,用cat/proc/drbd可以查看drbd状态:
2边都是Secondary(从盘),这是因为DRBD并不知道哪个主盘,要手动设置。
2.6设置A机为主盘
在主机A上执行(第一次需要用drbdsetup命令设置Primary,以后可以用drbdadmprimaryr0来设置):
#drbdsetup/dev/drbd0primary-o
然后通过watch命令观察状态
#watch–n1cat/proc/drbd
会看到主机A和备机B正在同步,等待同步完成。
这时在A机上可以看到:
注意红线部分,A机种已经是Primary(主盘)
这时在备机B上用cat/proc/drbd看到:
2.7在DRBD资源上创建物理卷和逻辑卷组
3个逻辑卷会在人行的umts_install.sh中自动创建,因此不需要手动创建了。
首先,修改A、B中的/etc/lvm/lvm.conf,否则无法创建物理卷。
#vi/etc/lvm/lvm.conf
红色划线的是修改后的,上一行被注释的是原来的。
注意绿色框中的/dev/sda5,对应预留的空的硬盘分区。
注意:
以下操作只需在主机A中完成(前提:
A中已经把drbd资源激活为Primary(主盘))
2.8在主机A上安装UMTS程序
在安装前(包括安装MQ前),先在A、B上创建umts和mqm用户、umts和mqm组。
确保umts和mqm用户id和组id保持一致,否则主从盘切换、挂载后,挂载点(/umts、/var/mqm/QMUMBFE和/var/mqm/QMUMBFEA/log)的所有者会出现问题。
用户id和组id可以通过修改/etc/passwd和/etc/group文件来达成一致。
主机A中的/etc/passwd:
/etc/group:
和原来的安装过程完全一样,执行人行的umts_install.sh完成安装。
安装完后,可以用df-h确认一下逻辑卷已被挂载。
2.9在备机B上安装UMTS程序
明确一下,根据DRBD原理,其实上一步在主机A中安装完UMTS程序后,B中也已经安装上了UMTS程序,为何还要安装一遍?
主要是为了创建用户和设置目录权限,这些东西还是通过人行的安装脚本来设置为好。
首先,把主机A中的3个逻辑卷卸载,并用df-h确认。
然后,关闭逻辑卷组,否则无法设置DRBD资源为Secondary。
然后,把DRBD资源降为Secondary。
用cat/proc/drbd确认一下
以下在B中操作:
然后把备机B的DRBD资源升为Primary(主盘):
然后在B中激活逻辑卷组data_vg。
在/etc/fstab中添加以下3行:
接下来执行umts_install.sh,按正常方式安装。
2.10卸载资源,关闭DRBD
上一步操作完成后,在备机B中卸载资源,关闭DRBD
在主机A中关闭DRBD:
最后,在A、B中都删除(或注释)掉/etc/fstab中的下面3行
从
改为:
因为我们通过Heartbeat软件启动时挂载,不需要开机自动挂载(也无法挂载)。
2.11把DRBD设为自启动
在主机A和备机B中分别执行:
设定启动级别:
#chkconfig--level73
设置为自启动:
#chkconfig--adddrbd
3Heartbeat配置
3.1安装Heartbeat
在主备机上安装Heartbeat2.1.3(通过源代码编译,很麻烦,尝试了N多版本,只有这个编译通过)
如果通过源代码编译,需要先增加一个用户和一个组
#groupaddhaclient
#useradd-ghaclienthacluster
查看版本:
suse11:
~/install/umts_suse10#/usr/lib/heartbeat/heartbeat-V
2.1.3
3.2修改/etc/hosts文件
同2.2,已经完成。
3.3创建原始配置文件
在主备机上分别执行:
#cp/usr/share/doc/heartbeat-2.1.3/haresources/etc/ha.d/
#cp/usr/share/doc/heartbeat-2.1.3/ha.cf/etc/ha.d/
#cp/usr/share/doc/heartbeat-2.1.3/authkeys/etc/ha.d/
#chmod600/etc/ha.d/authkeys
3.4修改/etc/ha.d/authkeys
此文件主备机上相同
3.5修改/etc/ha.d/ha.cf
主机A中的/etc/ha.d/ha.cf:
suse11:
~#cat/etc/ha.d/ha.cf
备机B中的/etc/ha.d/ha.cf
ibps-mbfe:
~#cat/etc/ha.d/ha.cf
3.6修改/etc/ha.d/haresources
此文件,主备机上相同
suse11:
~#cat/etc/ha.d/haresources
简单说明一下一些参数的含义:
suse11:
HA的主节点,即主机的机器名。
192.168.253.205/24:
192.168.253.205是浮动的对外IP,Heartbeat负责自动生成此IP,24表示子网掩码255.255.255.0
umts_ha:
表示Heartbeat要执行的命令,如果有多个,可以用空格分隔。
脚本必