1、双机应用实战:高手教你用 Veritas Cluster Server for DB2 双机-入门【IT168 专稿】双机热备这一概念有两种不太相同的意义:从广义上来说也称为双机互备,指的是对于重要的服务,使用两台服务器协同工作,共同执行同一个服务。当一台服务器出现故障时,可以由另一台服务器暂时相应原有的两个机器的所有服务,等待故障机的恢复和重新加入集群,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。这种集群一般被称为高性能集群(High performance cluster. HPC)。从狭义上讲,双机热备特指基于 active/standby 方式的服务器热备,这也是双机热备
2、最常用的含义,服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备,但在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会被集群软件激活,保证应用在短时间内完全恢复正常使用。这种集群一般被称为高可用集群(High Availability cluster. HAC)。双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题。但在实际应用中,可能会出现多台服务器的情况,即服务器集群。在广义的双机互备中,N 台服务器同时工作,硬件资源的利用率最高;在狭义的双机热备中,需要 m 台机器(m 不小于 1)作为后备服务器,那么至多只能
3、用(N-m)台机器工作,资源的利用率低于双机互备。(一般软件公司都会将多机同时工作作为一个特殊的功能来卖,价格比两台机器的总和可能还要高,所有一般中小企业用户都会选择后一种热备方式,牺牲一些可用性)。在 IBM 的 DB2 数据库产品中,包括了上述的两种热备方式:均衡多处理模式(Symmetric Multiprocessing, SMP)和大数据并行处理模式(Massively Parallel Processing, MPP)。 SMP 是指一台数据库工作,另一台数据库作为后备,当工作的数据库发生故障的时候,集群会将数据库服务所需的所有服务转移到后备的服务器上面。MPP 是指多台数据库同时
4、工作,一旦某一台数据库服务器发生故障,其他的服务器就会接管其服务,直到故障机重新加入到集群中。作为一款专业的集群管理软件,Veritas Cluster Server(VCS)能够针对不同的情况进行不同的管理。由于 DB2 的双机热备(狭义)模式配置比较简单,也相对容易理解。所以本文讲述如何利用 VCS 去管理 DB2 双机热备的高可用集群。而在下一讲中会讲述如何利用 VCS 去配置和管理双机互备的高性能集群。在本文中,做了如下假设:用户希望将 system1 和 system2 配置成双机环境,IP 地址分别是(192.168.0.1, 192.168.0.2)操作系统是 Solaris,利
5、用Symantec 的 Storage foundation 作为文件系统管理工具,DB2 的程序在两个系统中分别安装,而数据库文件存放在共享磁盘上面,共享磁盘组是 DB2DG,卷名 DB2Vol,文件系统挂载在/home/db2 下面,访问 DB2 的虚拟主机名为db2server,IP 是 192.168.0.3。其部署如下图所示:1. 配置a) 创建数据文件使用的共享存储(在 system1 上面执行下列 5 个命令):i. # vxdg init DB2DG c0t0d0; 创建磁盘组 DB2DG,使用 c0t0d0 这个硬盘;ii. # vxassist -g DB2DG make
6、DB2Vol 5g; 在磁盘组上创建 5G 大小的卷 DB2Vol;iii. # mkfs -F vxfs -o largefiles /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 “system2 192.168.0.2” /etc/h
7、osts; 将对方加入的自己的主机列表;ii. echo “system2 db2inst1” $HOME/.rhosts; 使得对方主机可以通过 RSH 以 db2inst1 的身份登陆本机;iii. echo “db2server 192.168.0.3” /etc/hosts; 将虚拟主机加入的自己的主机列表;c) 在 system2 上面做类型的操作,将 system2 改为 system1,IP 也作相应的改变,虚拟主机不变。d) 在两台机器上面分别执行下列命令,创建相同的用户组。i. # groupadd -g 999 db2iadm1; 创建 DB2 实例管理组;ii. # gr
8、oupadd -g 998 db2fadm1; 创建 DB2 fencing 管理组;iii. # groupadd -g 997 db2asgrp; 创建 DB2 数据库管理组;iv. # useradd -g db2iadm1 -u 1004 -d /home/db2 -m db2inst1; 创建DB2 实例管理用户;v. # useradd -g db2fadm1 -u 1003 -d /home/ db2fenc1 -m db2fenc1; 创建 DB2 fencing 管理用户;vi. # useradd -g db2asgrp -u 1002 -d /home/ db2as -m
9、 db2as; 创建DB2 数据库管理员帐户;注意:上述组或者用户的 ID 可以是任意的尚未被使用的数字,但是一定要保证两台机器上面的用户 ID 是一致的,否则数据库切换的操作会失败;数据库实例管理员的帐户存放在共享盘上面。e) 在两台机器上面分别安装 DB2 数据库程序:注意:在 oracle 中,可以将 oracle 数据库程序装在共享盘上,则只需要安装一份即可;另外 DB2 的安装有两个命令:db2setup 和 install。db2setup 是图形化工具,会将数据库程序和一个实例文件同时创建,而我们在双机上只需分别安装数据库程序而维护同一份实例文件,所有推荐使用 install 安
10、装 DB2,这样只会安装程序在系统上,实例文件稍后自己安装即可。f) 在两台机器安装 DB2 的序列号:i. # /opt/IBM/db2/V8.1/adm/db2licm -a db2ese.licg) 检查两台机器下面的/etc/service 文件,确保都有如下的条目并且两边的端口是相同的:DB2_db2inst1 60000/tcp #DB2_db2inst1_1 60001/tcp #DB2_db2inst1_2 60002/tcp #DB2_db2inst1_END 60003/tcp #db2c_db2inst1 50000/tcp #h) 在 system1 上面创建实例(存放
11、在共享盘)i. cd /usr/opt/db2_08_01/instance ii. ./db2icrt -u db2fenc1 db2inst1i) 修改 DB2 节点文件/home/db2/sqllib/db2nodes.cfgi. 将其内容改为:0 db2server 01 db2server 1 或者0 system1 01 system2 1注意:第一种方式配置的是以虚拟主机的方式进行热备,第二种使用真是主机的方式进行切换的。如果是多机环境,第一种方式方便管理,第二种方式更显得直观。2. 测试此时,双机环境就已经配好了,我们来测试一下它是否能正常工作a) 创建数据库 testdb:#
12、 su - db2inst1 ;切换的数据库实例管理用户;# db2start 启动数据库;# db2 create database testdb 创建新的数据库 tdstdb;# db2 terminate 将创建写入到磁盘;# db2stop 停止数据库。b) 将共享盘从 system1 下载下来(在 system1 执行):i. # umount /home/deb; 卸载文件系统;ii. # vxvol g DB2DG stopall; 将 DB2DG 的所有卷停止活动;iii. # vxdg deport DB2DB; 将磁盘组 DB2DG 导出;c) 将共享盘挂载到 system
13、2(在 system2 执行):i. # vxdg import DB2DB; 将磁盘组 DB2DG 导入;ii. # vxvol g DB2DG startall; 将 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如果能够连接成功,则数据库双机配置成功,如果数据库在某系统上损坏后,它
14、可以被 VCS 切换到另外一台机器并运行。3. 配置 VCS 管理双机热备a) 拷贝 DB2 代理配置文件到 VCS 的配置目录:i. cp /etc/VRTSvcs/conf/Db2udbTypes.cf 、/etc/VRTSvcs/conf/config/Db2udbTypes.cfb) 打开 VCS 图形工具i. # /opt/VRTSvcs/bin/hagui &c) 创建服务组(service group),起名为 db2;d) 导入 DB2 代理配置文件:文件导入-确定;e) 创建六个资源:i. 磁盘组:指明 DB2DG;ii. 卷:DB2Voliii. 挂载点:/home/db2
15、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. 资源依赖关系如图所
16、示:g) 右键点击 db2 服务组,选择 online,让 db2 在 system1 上线;h) 右键点击 db2 服务组,选择 switch to,让 db2 切换到 system2。i) 如果切换正常,则 VCS 配置成功。总结: 双机配置是现在市场上比较认可的一种维护系统高可用的配置方案,该方法有简单操作,方便管理,花费比较小等诸多优点。而利用 symantec 的VCS 和 SF 来组成这套管理 DB2 的方法,更是有着直观,可靠的优点。是用户选择双机热备的一个主要考虑的方案。今天的讲述,就是一个标准的双机热备的配置方法。对于 DB2 大书籍并行处理数据库(MPP)的讲述,以及对于其
17、他的数据库(oracle,sybase)双机配置的方法,将会在稍后的文章讲述。实战:高手教你用 VCS 配置 DB2 双机- 高级【IT168 专稿】前面我们通过 Veritas Cluster Server for DB2 双机-入门一文已经向大家介绍了 DB2 双机的基本原理和配置方法,本文将接续上文,继续介绍 DB2 的高级需求大规模并行处理(Massively Parallel Processing, MPP)环境下,用户如何利用 VCS 配置双机互备环境。需要强调的是,本文是接续上文 Veritas Cluster Server for DB2 双机-入门,继续进行双机介绍,因此在看
18、本文之前,最好先看看本文上篇 Veritas Cluster Server for DB2 双机-入门。此外,Veritas Storage Foundation 系列文章还包括:用 Storage Foundation 管好存储系统-安装用 Storage Foundation 管好存储系统-入门用 Storage Foundation 管好存储系统-进阶用 Storage Foundation 管好存储系统-高级用 Storage Foundation 管好存储系统-文件系统 MPP 简介 首先介绍一下 DB2 的大规模并行处理(MPP)的含义。MPP 其实就是多台计算机协同工作,共同完成
19、同一个任务,目的就是为了能够使用一些比较廉价的服务器一起工作,提供给用户单机无法完成的服务。而双机互备就是指当这些机器中的某一天出现故障的时候,其他的服务器可以接管运行在其上的服务请求,保证服务的高可用性。大规模并行处理有两种方式:无共享并行方式和共享磁盘并行方式。无共享并行方式是指集群中的数据库系统各自使用自己的数据资源,将协调程序发给自己的数据请求在自己的数据库上面查询,再将结果返回,由协调程序来将各个数据库发过来的数据组合成大的数据集并且发送给用户。这种工作模式的优点是易于部署,结构简单清晰;缺点是缺乏高可用性,节点中任何一个节点的损坏都会导致其数据资源不可获得,破坏了数据请求的完整性。
20、其工作模式如下图所示:图 1 无共享并行体系结构共享磁盘共享方式是指多个数据库同时工作,但是他们所读写的资源都是在一个共享的磁盘库中。他们之间的访问冲突是通过锁机制来解决的。它的优点是高可用性,任何一个节点的故障都不会对数据访问造成影响,每一个节点都可以访问全部的数据资源;这种缺点当然也是有缺点的:随着服务器数量的增加,锁的数量以及数据库访问失败的频率也会指数级的增加,会成为数据库访问的瓶颈。然而,在目前的实际应用中,一般集群数量不会太多,所有这个因素可以忽略不记,而其带来的高可用性是大多用户选择它的主要原因。其工作原理如图所示:图 2,共享磁盘并行体系结构Symantec SFCFS 简介S
21、FCFS 的全称是 Storage Foundation Cluster File System;它是symantec 旗下 SF 产品线的一员,其具体的安装配置过程稍后会有仔细的讲解。现在就让用户大概了解一下:SFCFS 其实和 SF 是非常相似的,都是用来管理磁盘和文件系统的。对于磁盘组,卷和文件系统的概念和 SF 是完全一样的。它和SF 唯一的不同是它支持多个节点同时访问一个文件系统上面的数据,由 SFCFS来进行文件锁管理,而 SF 中对于文件系统的访问是具有独占性的。SFCFS 允许多个节点同时访问的特点就是针对数据库的并行操作的需求而来的,所以它非常适合进行数据库的并行处理模式的管
22、理。DB2 的配置在 DB2 的配置中,我们先做好如下假设:由 system1 和 system2 来组成集群,其 IP 分别是 192.168.0.1 192.168.02,磁盘组名为 DB2DG,卷为DB2Vol,文件系统将挂载在/home/db2 目录下。注意:在配置过程中将不再说明 DB2 的基础配置,配置的详细信息请看Veritas Cluster Server for DB2 双机-入门。1. 安装 SFCFS 的程序在 system1 和 system2 上;2. 创建 SFCFS 需要使用的共享磁盘和共享文件系统(原理和细节稍后会有专题,这里只是配置):a) 在两台机器上面运行
23、下面命令:i. # vxdctl -c mode得到的结果可能是下面两个中的任意一个:cluster active - MASTERcluster active SLAVE注意,下述的命令只能在返回是 master 的那台机器执行,因为它是整个cluster 中的主节点。b) 创建共享磁盘组# vxdg -s init DB2DB c0t0d0; s 就是共享(share)的意思;c) 将新建的磁盘组以共享模式加入到 system1 和 system2:# vxdg deport DB2DG# vxdg -s import DB2DG注意:如果在这里没有用s 参数,那么磁盘组将被第一个执行导入
24、的系统使用,其他系统的导入操作将会失败。必须以共享模式导入才能被多个系统使用。d) 创建卷:# vxassist -g DB2DG make DB2Vol 5ge) 创建文件系统:# mkfs -F vxfs -o largefiles /dev/vx/rdsk/DB2DG/DB2Volf) 将新建的文件系统以共享模式加载到两台机器上面:# mkdir /home/db2# mount -F vxfs -o cluster /dev/vx/dsk/DB2DG/DB2Vol /home/db23. 在两台机器创建相同的数据库管理组和管理员,并且加上 DB2 的注册码(配置方法见入门篇):4. 安
25、装 DB2 的程序到两台机器上,将数据文件指定到共享盘所在的目录/home/db2 下面;5. 修改 db2nodes.cfg 文件;这里我想详细的讲述一下这个文件的格式,因为这个文件的配置正确与否之间关系到了配置能否成功,而对于这个文件的内容,即使很多 DB2 的老用户也不是很清楚:这个文件的一个常见配置如下所示:0 sysA 01 sysA 12 sysB 03 sysC 04 sysD 0这个文件的每一行是一个节点的信息,其中第一列数字是唯一编号,表示后面的系统分区是一个集群的成员;第二列是主机的名称,一般就是系统的名称,表示这个成员是运行在哪台主机上的;第三列是端口偏移量,如果某个系统
26、上面部署了多个分区提供数据库服务的话,DB2 将通过不同的端口服务来区别不同的分区。所以,根据上述解释,将该文件修改如下:0 system1 01 system2 16. 确认数据库安装配置正常:在每一台机器执行下列命令:# su - db2inst1$ db2start$ db2stop如果配置正确,那么下列命令在各个系统都能工作正常。这样,数据库的配置就已经完成了。VCS 的配置1. 配置集群文件系统服务组:在安装了 SFCFS 之后,VCS 自动为集群文件系统创建一个原始的服务组,我们只需要稍微改变它一下即可。a) 在该磁盘组下面创建 Cluster Disk group 资源和 Clu
27、ster Volume 资源;并修改其属性,让它们控制 DB2DG 和 DB2Vol 的状态;b) 在原有的集群挂载点资源(CFSMount)上设置依赖属性,让其依赖于集群卷;在设置集群卷依赖与集群磁盘组;c) 设置后的关系图如图所示:图 3,集群文件系统依赖关系图2. 配置 DB2 服务组:a) 创建 DB2 资源,IP 资源和网卡资源,分别设定其属性,IP 就是各个系统的主机 IP 地址;b) 设置资源间的依赖关系:DB2 数据库依赖 IP 资源,IP 资源依赖网卡资源;c) 设置好的关系图如图所示:图 4,DB2 数据库的依赖关系3. 建立集群服务组和 DB2 服务组之间的依赖关系:a)
28、 右键点击 VCS 界面左侧新建的 DB2 服务组;b) 选择“link”,然后选择 CFS 服务组,选择 online local 以及 soft 模式;c) 这样 DB2 服务组就依赖与 CFS 服务组的状态了,如果 CFS 在某台系统故障,则其上的数据库服务就会停止,对其资源的请求将会被 DB2 转移到其他数据库节点上面;4. 测试工作状态:让 DB2 服务组在两台机器同时上线,如果成功,则说明配置已经生效,并能正常使用。数据库作为现在数据管理不可或缺的一个部分,在生产环境中有着重要的地位。因此,如何能够使数据库能够稳定,高效的工作,成为每一个数据库管理员和系统管理员重要的工作。所以配置
29、数据库双机互备和双机热备的配置方法,是每一个数据库管理员的基础。通过本文及一些相关文章大家已经了解到 DB2 数据库的管理和配置方法,下面我们还将为大家介绍 oracle 和 sybase 的集群的配置方法,并可以比较这些主流数据库的不同之处。实战:高手教你用 Symantec VCS 配置 Oracle 双机【IT168 专稿】前期我们通过一系列文章为大家介绍了 Symantec 的 Veritas Storage Foundation 存储管理软件,并向大家介绍了 Symantec 公司专业的集群管理软件 Veritas Cluster Server(VCS)。参考链接:高手教你用 Symantec VCS 配置 DB2 双机-入门高手教你用 Symantec VCS 配置 DB2 双机-高级将 Oracle 的双机放在 DB2 双机后面讲有两个原因:一是 DB2 的配置相对于oracle 的配置来说比较简单,数据库的模式也比较容易理解,而其中相似的地方可以参照 DB2 的配置;二是 DB2 双机的配置,也只能说是 oracle 双机配置的