WilliamLin 2009-12-14
双机热备这一概念有两种不太相同的意义:从广义上来说也称为双机互备,指的是对于重要的服务,使用两台服务器协同工作,共同执行同一个服务。当一台服务器出现故障时,可以由另一台服务器暂时相应原有的两个机器的所有服务,等待故障机的恢复和重新加入集群,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。这种集群一般被称为高性能集群(High performance cluster. HPC)。
从狭义上讲,双机热备特指基于active/standby方式的服务器热备,这也是双机热备最常用的含义,服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备,但在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会被集群软件激活,保证应用在短时间内完全恢复正常使用。这种集群一般被称为高可用集群(High Availability cluster. HAC)。
双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题。但在实际应用中,可能会出现多台服务器的情况,即服务器集群。在广义的双机互备中,N台服务器同时工作,硬件资源的利用率最高;在狭义的双机热备中,需要m台机器(m不小于1)作为后备服务器,那么至多只能用(N-m)台机器工作,资源的利用率低于双机互备。(一般软件公司都会将多机同时工作作为一个特殊的功能来卖,价格比两台机器的总和可能还要高,所有一般中小企业用户都会选择后一种热备方式,牺牲一些可用性)。
在IBM的DB2数据库产品中,包括了上述的两种热备方式:均衡多处理模式(Symmetric Multiprocessing, SMP)和大数据并行处理模式(Massively Parallel Processing, MPP)。 SMP是指一台数据库工作,另一台数据库作为后备,当工作的数据库发生故障的时候,集群会将数据库服务所需的所有服务转移到后备的服务器上面。MPP是指多台数据库同时工作,一旦某一台数据库服务器发生故障,其他的服务器就会接管其服务,直到故障机重新加入到集群中。
作为一款专业的集群管理软件,Veritas Cluster Server(VCS)能够针对不同的情况进行不同的管理。由于DB2的双机热备(狭义)模式配置比较简单,也相对容易理解。所以本文讲述如何利用VCS去管理DB2双机热备的高可用集群。而在下一讲中会讲述如何利用VCS去配置和管理双机互备的高性能集群。
双机热备这一概念有两种不太相同的意义:从广义上来说也称为双机互备,指的是对于重要的服务,使用两台服务器协同工作,共同执行同一个服务。当一台服务器出现故障时,可以由另一台服务器暂时相应原有的两个机器的所有服务,等待故障机的恢复和重新加入集群,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。这种集群一般被称为高性能集群(High performance cluster. HPC)。
从狭义上讲,双机热备特指基于active/standby方式的服务器热备,这也是双机热备最常用的含义,服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备,但在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会被集群软件激活,保证应用在短时间内完全恢复正常使用。这种集群一般被称为高可用集群(High Availability cluster. HAC)。
双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题。但在实际应用中,可能会出现多台服务器的情况,即服务器集群。在广义的双机互备中,N台服务器同时工作,硬件资源的利用率最高;在狭义的双机热备中,需要m台机器(m不小于1)作为后备服务器,那么至多只能用(N-m)台机器工作,资源的利用率低于双机互备。(一般软件公司都会将多机同时工作作为一个特殊的功能来卖,价格比两台机器的总和可能还要高,所有一般中小企业用户都会选择后一种热备方式,牺牲一些可用性)。
在IBM的DB2数据库产品中,包括了上述的两种热备方式:均衡多处理模式(Symmetric Multiprocessing, SMP)和大数据并行处理模式(Massively Parallel Processing, MPP)。 SMP是指一台数据库工作,另一台数据库作为后备,当工作的数据库发生故障的时候,集群会将数据库服务所需的所有服务转移到后备的服务器上面。MPP是指多台数据库同时工作,一旦某一台数据库服务器发生故障,其他的服务器就会接管其服务,直到故障机重新加入到集群中。
作为一款专业的集群管理软件,Veritas Cluster Server(VCS)能够针对不同的情况进行不同的管理。由于DB2的双机热备(狭义)模式配置比较简单,也相对容易理解。所以本文讲述如何利用VCS去管理DB2双机热备的高可用集群。而在下一讲中会讲述如何利用VCS去配置和管理双机互备的高性能集群。
本文中,做了如下假设:用户希望将system1和system2配置成双机环境,IP地址分别是(192.168.0.1, 192.168.0.2)操作系统是Solaris,利用Symantec的Storage foundation作为文件系统管理工具,DB2的程序在两个系统中分别安装,而数据库文件存放在共享磁盘上面,共享磁盘组是DB2DG,卷名DB2Vol,文件系统挂载在/home/db2下面,访问DB2的虚拟主机名为db2server,IP是192.168.0.3。其部署如下图所示:
1. 配置
a)创建数据文件使用的共享存储(在system1上面执行下列5个命令):
i.#vxdginitDB2DGc0t0d0;创建磁盘组DB2DG,使用c0t0d0这个硬盘;
ii.#vxassist-gDB2DGmakeDB2Vol5g;在磁盘组上创建5G大小的卷DB2Vol;
iii.#mkfs-Fvxfs-olargefiles/dev/vx/rdsk/DB2DG/DB2Vol;创建文件系统;
iv.#mkdir/home/db2;创建mount点,共享磁盘将mount到这里;
v. # mount -F vxfs /dev/vx/dsk/DB2DG/DB2Vol /home/db2; 将共享盘mount到本机;b) 使两个系统可以通过RSH方式互相访问,在system1上面做如下操作:
i.echo“system2192.168.0.2”>>/etc/hosts;将对方加入的自己的主机列表;
ii.echo“system2db2inst1”>>$HOME/.rhosts;使得对方主机可以通过RSH以db2inst1的身份登陆本机;
iii. echo “db2server 192.168.0.3” >> /etc/hosts; 将虚拟主机加入的自己的主机列表;c) 在system2上面做类型的操作,将system2改为system1,IP也作相应的改变,虚拟主机不变。
d) 在两台机器上面分别执行下列命令,创建相同的用户组。
i.#groupadd-g999db2iadm1;创建DB2实例管理组;
ii.#groupadd-g998db2fadm1;创建DB2fencing管理组;
iii.#groupadd-g997db2asgrp;创建DB2数据库管理组;
iv.#useradd-gdb2iadm1-u1004-d/home/db2-mdb2inst1;创建DB2实例管理用户;
v.#useradd-gdb2fadm1-u1003-d/home/db2fenc1-mdb2fenc1;创建DB2fencing管理用户;
vi.#useradd-gdb2asgrp-u1002-d/home/db2as-mdb2as;创建DB2数据库管理员帐户;
注意:上述组或者用户的ID可以是任意的尚未被使用的数字,但是一定要保证两台机器上面的用户ID是一致的,否则数据库切换的操作会失败;数据库实例管理员的帐户存放在共享盘上面。e) 在两台机器上面分别安装DB2数据库程序:
注意:在oracle中,可以将oracle数据库程序装在共享盘上,则只需要安装一份即可;
另外DB2的安装有两个命令:db2setup和install。db2setup是图形化工具,会将数据库程序和一个实例文件同时创建,而我们在双机上只需分别安装数据库程序而维护同一份实例文件,所有推荐使用install安装DB2,这样只会安装程序在系统上,实例文件稍后自己安装即可。
f) 在两台机器安装DB2的序列号: i. # /opt/IBM/db2/V8.1/adm/db2licm -a db2ese.lic
g) 检查两台机器下面的/etc/service文件,确保都有如下的条目并且两边的端口是相同的:
DB2_db2inst160000/tcp#
DB2_db2inst1_160001/tcp#
DB2_db2inst1_260002/tcp#
DB2_db2inst1_END60003/tcp#
db2c_db2inst1 50000/tcp #h) 在system1上面创建实例(存放在共享盘)
i.cd/usr/opt/db2_08_01/instance
ii. ./db2icrt -u db2fenc1 db2inst1i) 修改DB2节点文件/home/db2/sqllib/db2nodes.cfg
i.将其内容改为:
0db2server0
1db2server1或者
0system10
1system21
注意:第一种方式配置的是以虚拟主机的方式进行热备,第二种使用真是主机的方式进行切换的。如果是多机环境,第一种方式方便管理,第二种方式更显得直观。2. 测试 此时,双机环境就已经配好了,我们来测试一下它是否能正常工作
a) 创建数据库testdb:
#su-db2inst1;切换的数据库实例管理用户;
#db2start启动数据库;
#db2createdatabasetestdb创建新的数据库tdstdb;
#db2terminate将创建写入到磁盘;
# db2stop 停止数据库。b) 将共享盘从system1下载下来(在system1执行):
i.#umount/home/deb;卸载文件系统;
ii.#vxvol–gDB2DGstopall;将DB2DG的所有卷停止活动;
iii. # vxdg deport DB2DB; 将磁盘组DB2DG导出;c) 将共享盘挂载到system2(在system2执行):
i.#vxdgimportDB2DB;将磁盘组DB2DG导入;
ii.#vxvol–gDB2DGstartall;将DB2DG的所有卷启动;
iii. # mount –F vxfs /dev/vx/dsk/DB2DG/DB2Vol /home/deb; 挂载文件系统;d) 在system2启动原来在system1创建的数据库testdb:
i.#su-db2inst1
ii.#db2start
iii. # db2 connect to testdb如果能够连接成功,则数据库双机配置成功,如果数据库在某系统上损坏后,它可以被VCS切换到另外一台机器并运行。
3. 配置VCS管理双机热备
a) 拷贝DB2代理配置文件到VCS的配置目录: i. cp /etc/VRTSvcs/conf/Db2udbTypes.cf 、/etc/VRTSvcs/conf/config/Db2udbTypes.cf
b) 打开VCS图形工具 i. # /opt/VRTSvcs/bin/hagui &
c) 创建服务组(service group),起名为db2;
d) 导入DB2代理配置文件: 文件->导入->确定;
e) 创建六个资源:
i.磁盘组:指明DB2DG;
ii.卷:DB2Vol
iii.挂载点:/home/db2
iv.网卡:公网网卡(例如bge0)
v.IP地址:可以是虚拟IP地址(192.168.0.3),如果前面的cfgnode文件中写的是虚拟IP,否则就在system1写入(192.168.0.1),在system2写入(192.168.0.2)。
vi. DB2 aent:这个资源会监控db2在集群中的运行情况。f) 为这六个资源创建依赖关系(右键点击资源,选择link):
i.IP依赖NIC网卡的工作正常;
ii.卷的存在依赖于磁盘组的状态;文件系统依赖卷;
iii.db2代理的状态要同时依赖于IP地址的存在和文件系统的存在。
iv. 资源依赖关系如图所示:g) 右键点击db2服务组,选择online,让db2在system1上线;
h) 右键点击db2服务组,选择switch to,让db2切换到system2。
i) 如果切换正常,则VCS配置成功。
总结: 双机配置是现在市场上比较认可的一种维护系统高可用的配置方案,该方法有简单操作,方便管理,花费比较小等诸多优点。而利用symantec的VCS和SF来组成这套管理DB2的方法,更是有着直观,可靠的优点。是用户选择双机热备的一个主要考虑的方案。今天的讲述,就是一个标准的双机热备的配置方法。对于DB2大书籍并行处理数据库(MPP)的讲述,以及对于其他的数据库(oracle,sybase)双机配置的方法,将会在稍后的文章讲述。
环境说明:本环境由两台mysql 数据库和heartbeat 组成,一台的ip 为192.168.10.197,一台为192.168.10.198,对外提供服务的vip 为192.168.10.200