分类:
2009-07-23 18:33:25
在HACMP v5.x中使用磁盘心跳网络
引言
本文针对如何在HACMP V5.x环境中使用和配置磁盘心跳设备(Disk Heartbeating)做了简单介绍,以供读者在实际工作中参考。
利用磁盘做心跳设备是HACMP V5.1的新功能,它提供了除了目前使用较广泛的串行网络(serial network)之外的一种新型的基于非IP网络的心跳路径。在本文中我们通过一个具体的实力来讲解如何配置和使用磁盘心跳设备。
在这个例子中,我们配置了一个两节点( GT40和SL55)的以ESS vpath为共享磁盘设备的HACMP环境。如果在您的集群环境中包含多于两个节点,则需要配置N个非IP的心跳网络,这里N表示机群中的节点数。比如,在三个节点的机群中我们通常需要配三个非IP的心跳网络,以便组成一个心跳环路。
在介绍磁盘心跳之前,我们先提醒各位切勿将并行卷组(concurrent volume group)与并行资源组(concurrent resource group)混淆。而且,并行卷组与增强型并行卷组也是有区别的,并行卷组可以在多个节点上同时被激活来使用,而增强型并行卷组除此之外,在一个非并行的资源组中,增强型卷组可以在两个节点上同时激活,但卷组中的数据在同一时间只能被一个节点访问。
在本例中,我们假设共享磁盘设备在存储层面已经配置完成,AIX操作系统已可以正确识别出所有物理卷。HACMP以及RSCT软件环境已经安装完毕。这里需要提醒的是由于要使用增强型并行访问卷组,用户需要安装软件包 bos.clvm.enh,这个包在安装HACMP时不会自动安装。
磁盘心跳简介
磁盘心跳的功能是HACMP利用集群中节点间的共享磁盘(不管是何种类型的物理磁盘)作为串行网络提供心跳通信。这样做的好处是用户不需要使用主机上的串口(或单独订购一块8口异步通信卡)来作为 HACMP的心跳网络。
磁盘心跳的功能在RSCT 2.2.1.30和HACMP V5.1版本开始提供给用户。主机节点不能对用做磁盘心跳的磁盘进行SCSI锁盘的操作。这是因为位于磁盘心跳两端的主机节点都需要对这块磁盘有读写的权限,这两个节点将各自的心跳信息写入用于心跳通信的共享磁盘区间,同时读取对方节点写入的信息。使用磁盘心跳的共享磁盘需要配置在增强型并行卷组(Enhanced Concurrent VG)中。
在 AIX 5.1 环境中使用HACMP 5.1,增强型并行卷组只能在并行资源组(即资源组在所有节点上同时激活)中使用。因此,磁盘心跳的功能只适用于并行资源组的 HACMP配置环境。换句话说,如果用户环境是AIX 5.1, HACMP 5.1,要想在非并行资源组的HACMP配置环境使用磁盘心跳的功能,需要为该磁盘单独配置一个卷组并加入并行资源组。在AIX 5.2中,磁盘心跳可以通过配置在非并行资源组中的增强型并行卷组完成。如果该卷组包含多个磁盘,用户还可以使用磁盘快速接管的功能来缩小HACMP 对包含多个物理卷的卷组的接管时间。
使用磁盘心跳的性能考虑
多数非raid格式的磁盘响应一个IO请求的时间小于10毫秒,这表示每秒钟磁盘的搜索次数在100次左右。用来做磁盘心跳的磁盘扇区位于VGDA,而VGDA存放在磁盘最外侧部分,可能与应用所用的数据区相隔较远。这样,每一次磁盘心跳都可能要重新做一次磁盘搜索。在默认设置下,磁盘心跳功能每秒通常需要做4次磁盘搜索。即每个节点每秒钟对做心跳用的磁盘各做一次读写操作,两个节点共产生4个IOPS。因此,用于心跳用途的磁盘每秒钟所需要的磁盘搜索次数最好不要超过50次。系统工具filemon可以用来监控磁盘IO的搜索次数。
如果必须要选择一个IO搜索频率很高的磁盘作为心跳设备,用户需考虑修改心跳通信的时间控制等相关参数,以避免由IO延迟造成的心跳通信的失败。
上面所讲的磁盘性能只使用于JBOD系统配置,对于不同磁盘技术的存储设备应做相应休整:
1. 如果用做心跳的设备所对应的控制器提供大容量缓冲功能,例如ESS,每秒钟完成的IO搜索次数可以提高很多。
2. 如果用做心跳的设备是raid盘,并且其控制器不带缓冲区,由于支持raid所需要的额外开销,它所提供的每秒搜索次数可能更低。
选择磁盘心跳的利与弊
好处:
1. 不需要额外的硬件设备。
2. 易于在相距较远的节点间实施。
3. 不会损失磁盘可用空间,可以使用现有数据卷组。
4. 所使用的增强型并行卷组同时可以提供磁盘快速接管的功能。
注意事项:
1. 由于使用了增强型并行卷组,原有的强制性停止集群的功能不在继续支持。
2. 必须要注意和正确管理磁盘心跳所使用的设备。有个用户的系统管理员删掉了所有磁盘定义后,运行“cfgmgr”命令找回了所有磁盘设备。这个方法帮助他解决了磁盘设备名不连续的情况,但是由于原先的心跳设备名被更改,致使HACMP的磁盘心跳网络不能正常工作。
配置磁盘心跳
如前所述,磁盘心跳的功能是利用增强型并行卷组来实现的。因此首先需要配置这样一个卷组,我们可以通过手工创建或者利用C-SPOC来完成。在本示例中我们使用C-SPOC来演示。如果用户希望利用已经存在的普通卷组作为磁盘心跳,需要使用chvg命令先将该卷组转换为增强型并行卷组。在这里我们建议依照下列顺序完成卷组类型的转换:
1. 在节点一上运行varyonvg vgname 命令将卷组激活,并停止应用环境。
2. 使用chvg –C vgname将卷组改为增强型并行卷组。
3.在该节点上执行varyoffvg vgname命令。
4.在节点二运行 importvg –L
如果使用上述方法,在配置磁盘心跳时可以直接进入“创建磁盘心跳网络和设备”一节。
磁盘和卷组的准备工作
使用C-SPOC之前,我们假设IP 地址和物理卷(PVID)在两台主机上已配好并能正确识别。我们可以使用 lspv命令对PVID进行验证。如果PVID在主机上不存在,可以使用chdev –l
在本例中,主机 GT40 上的vpath0 与主机SL55上的path3所指的是同一个共享磁盘设备。我们通过下列smit菜单创建共享卷组:
smitty cl_adminàGo to HACMP Concurrent Logical Volume Managementà Concurrent Volume Groupsà Create a Concurrent Volume Group with Data Path Devices and press Enter
在此菜单中选择节点和相应的共享磁盘(基于 PVID),指定卷组的名字,物理分区的大小(PP size),将增强型并行访问模式设置为 “true”,此菜单即可为我们创建可用于磁盘心跳的共享的增强型并行卷组。此操作完成可使用lspv 命令做进一步验证:
GT40#/ lspv
vpath0 000a7f5af78e0cf4 enhconcvg
SL55#/lspv
vpath3 000a7f5af78e0cf4 enhconcvg
创建磁盘心跳设备和网络
HACMP 提供了两种方法实现此功能。因为已经创建了增强型并行卷组,我们可以通过HACMP 的“Discovery”功能自动找出设备配置。也可以自定义方式手工方式配置。下面对每种方法分别做了介绍:
1) 使用“Discover”方法创建:
运行命令 smitty hacmpàExtended ConfigurationàDiscover HACMP-related Information from Configured Nodesà按“回车”键
此功能可以自动检查系统配置并创建包含所有找出的信息的文件 clip_config。命令运行结束后,再回到Extended Configuration菜单并选择:
Extended Topology ConfigurationàConfigure HACMP Communication Interfaces/DevicesàAdd Communication Interfaces/DevicesàAdd Discovered Communication Interface and DevicesàCommunication Devices
来选择相应设备(例如:vpath0 and vpath3):
使用功能键F7或(Esc + 7)选择相应的要用来做心跳的磁盘设备,菜单如下所示:
Move cursor to desired item and press F7. Use arrow keys to scroll.
ONE OR MORE items can be selected.
Press Enter AFTER making all selections.
# Node Device Device Path Pvid
> nodeGT40 vpath0 /dev/vpath0 000a7f5af78
> nodeSL55 vpath3 /dev/vpath3 000a7f5af78
注:在HACMP 5.1 base version中使用 “Discovered”功能时可能会碰到下列错误:"ERROR: Invalid node name 000a7f5af78e0cf4"。此时需要安装补丁 IY51594解决此问题。否则也可以使用自定义的方法进行配置。
2) 使用自定义方式:
使用这种方法时必须首先创建一个磁盘心跳网络,再将用于心跳通信的一对磁盘节点加入该网络。方法如下:
运行:
smitty hacmp à Extended Configuration à Extended Topology Configuration àConfigure HACMP Networks àAdd a Network to the HACMP cluster à 选择 diskhb à 输入自定义的网络名 (如:. disknet1) 并按回车键。r
运行:
smitty hacmp à Extended Configuration à Extended Topology Configuration à Configure HACMP Communication Interfaces/Devices à Add Communication Interfaces/Devicesà Add Pre-Defined Communication Interfaces and Devices à
Communication Devices à 选择磁盘心跳网络名称后菜单如下所示:
Add a Communication Device
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* Device Name [GT40_hboverdisk]
* Network Type diskhb
* Network Name disknet1
* Device Path [/dev/vpath0]
* Node Name [GT40]
其中Device Name, 是一个自定义的唯一标识。Device Path, 是所选择的磁盘的设备名,其格式为/dev/
测试磁盘心跳的连通性
完成磁盘心跳网络的配置后,我们可以使用下面的命令对心跳网络进行测试。如果测试时该卷组在任一节点上被正常激活,该项测试不能正常进行。
/usr/sbin/rsct/bin/dhb_read 命令可用来测试磁盘心跳连接的有效性。其使用方法如下:
dhb_read -p devicename //dump diskhb sector contents
dhb_read -p devicename –r //receive data over diskhb network
dhb_read -p devicename –t //transmit data over diskhb network
使用下面的命令可以测试在disknet1心跳网络中,从nodeB(如SL55)到 nodeA(如GT40)的通信连接:
在nodeA输入:
dhb_read -p rvpath0 -r
在nodeB输入:
dhb_read -p rvpath3 -t
注: 命令中使用的是带有前缀“r”的裸设备。
如果从nodeB 到 nodeA 的连接通畅,两个节点上均会显示下列信息:
Link operating normally.
使用同样的方法可以进行反向连接的测试。若要激活该心跳网络使其可以正常工作,必须要完成集群的同步。
将共享磁盘加入资源组
在多数情况下,用于磁盘心跳的磁盘设备属于集群节点共享的卷组,这就需要将该卷组加入资源组并完成同步。步骤如下:
smitty hacmpà Extended Configurationà Extended Resource Configuration > Extended Resource Group Configurationà Change/Show Resources and Attributes for a Resource Group
选择相应的资源组,将卷组(增强型并行卷组)填入卷组表,并按下回车键。完成后再回到“Extended Configuration”菜单进行集群同步。
监控磁盘心跳
当集群服务启动并运行时,可以通过命令lssrc –ls topsvcs来监控心跳信息。下面是该命令的输出示例:
Subsystem Group PID Status
topsvcs topsvcs 32108 active
Network Name Indx Defd Mbrs St Adapter ID Group ID
disknet1 [ 3] 2 2 S 255.255.10.0 255.255.10.1
disknet1 [ 3] rvpath3 0x86cd1b02 0x86cd1b4f
HB Interval = 2 secs. Sensitivity = 4 missed beats
Missed HBs: Total: 0 Current group: 0
Packets sent : 229 ICMP 0 Errors: 0 No mbuf: 0
Packets received: 217 ICMP 0 Dropped: 0
NIM's PID: 28724
最后,我们还要注意,在HACMP的配置中有一个参数“Grace Period”,它表示开始发起心跳的时间,默认值为60秒。如果我们在HACMP启动后立即运行心跳监孔命令进行检查,可能看不到上述信息。只有在 60秒钟后HACMP服务开始发起磁盘心跳后才可以看到。