WebSphere MQ 的高可用配置(网摘)
对随需应变计算的成功而言,维持最大限度的系统运行时间变得越来越重要。WebSphere MQ 是一个重要的消息中间件,可以帮助企业加快向随需应变商务的转型。架构师需要考虑如何将 WebSphere MQ 引入到高可用配置的重要性。本文讲述了如何在硬件级上使用开源软件,让使用所提供集群的 WebSphere MQ 具备高可用性。
在下面的章节中,我将向您详细介绍安装 WebSphere MQ 以及创建和测试高可用队列管理器配置的步骤。
mqseries
脚本,如下所示:ha1.haw2.ibm.com 9.22.7.46
Filesystem::hanfs.haw2.ibm.com:/ha::/ha::nfs::rw,hard mqseries
这表示,在 heartbeat 启动时,它将使 ha1 服务集群 IP 地址,挂载共享文件系统 /ha,然后启动 WebSphere MQ 进程。在关闭时,heartbeat 将首先停止 WebSphere MQ 进程,然后卸载文件系统,最后释放 IP 地址。
?
本节列出了测试队列管理器 ha.queue.manager
的高可用性所需要的步骤。
/etc/rc.d/init.d/heartbeat start
如果失败,那么可查看 /var/log/messages 中的消息来确定其原因,并纠正它。当 heartbeat 成功启动后,您应该看到一个新的接口,其地址是您在 ha.cf 文件中配置的地址。可以通过运行 ifconfig
来显示它。清单 2 给出了与设置的输出相关的部分:
...eth0:0 Link encap:Ethernet HWaddr 00:D0:59:DA:01:50 inet addr: 9.22.7.46 Bcast:9.22.7.127 Mask:255.255.255.128 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:76541 errors:0 dropped:0 overruns:0 frame:0 TX packets:61411 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:8830515 (8.4 Mb) TX bytes:6755709 (6.4 Mb) Interrupt:11 Base address:0x6400 Memory:c0200000-c0200038...
一旦启动了 heartbeat,在测试它之前,要先看一下日志文件(默认情况下是 /var/log/ha-log)。如果一切顺利,那么主机器的日志(本例中的 ha1)内容应该类似于清单 3 所示(出于版面方面考虑,省略了一些行)。
...heartbeat: 2004/09/01_11:17:13 info: **************************heartbeat: 2004/09/01_11:17:13 info: Configuration validated.Starting heartbeat 1.2.2heartbeat: 2004/09/01_11:17:13 info: heartbeat: version 1.2.2heartbeat: 2004/09/01_11:17:13 info: Heartbeat generation: 10heartbeat: 2004/09/01_11:17:13 info: Starting serial heartbeat ontty /dev/ttyS0 (19200 baud)heartbeat: 2004/09/01_11:17:13 info: ping heartbeat started.heartbeat: 2004/09/01_11:17:13 info: pid 9226 locked in memory.heartbeat: 2004/09/01_11:17:13 info: Local status now set to: 'up'heartbeat: 2004/09/01_11:17:14 info: pid 9229 locked in memory.heartbeat: 2004/09/01_11:17:14 info: pid 9230 locked in memory.heartbeat: 2004/09/01_11:17:14 info: pid 9231 locked in memory.heartbeat: 2004/09/01_11:17:14 info: pid 9232 locked in memory.heartbeat: 2004/09/01_11:17:14 info: pid 9233 locked in memory.heartbeat: 2004/09/01_11:17:14 info: Link 9.22.7.1:9.22.7.1 up.heartbeat: 2004/09/01_11:17:14 info: Status update for node 9.22.7.1:status ping...heartbeat: 2004/09/01_11:19:18 info: Acquiring resource group:ha1.haw2.ibm.com 9.22.7.46 mqseriesheartbeat: 2004/09/01_11:19:18 info: Running /etc/ha.d/resource.d/IPaddr9.22.7.46 startheartbeat: 2004/09/01_11:19:18 info: /sbin/ifconfig eth0:0 9.22.7.46netmask 255.255.255.128 broadcast 9.22.7.127heartbeat: 2004/09/01_11:19:18 info: Sending Gratuitous Arp for9.22.7.46 on eth0:0 [eth0]...heartbeat: 2004/09/01_11:19:49 info: Running /etc/init.d/mqseries start...
您可以看到它正在进行 IP 接管,并随后启动 WebSphere MQ 进程。可以使用 ps
命令来确认 WebSphere MQ 正在主节点上运行。
向 BGQUEUE 添加一些持久存储消息。可以通过运行 MQ Sender 程序 send.bat 或者 send.sh(视您的操作系统而定)来完成这项操作。您应该在一台安装了 MQ Client 的机器上运行这个程序。清单 4 展示了在节点 ha1 上运行这个程序的输出。
[root@ha1 mq]# ./send.shMSender is runningHostname = ha.haw2.ibm.comQManager = ha.queue.managerChannel Name = HA.CHANNELChannel Port = 1414Q = HA.QUEUEEnter a message:HelloThisisatestDone Sending Message[root@ha1 mq]#
浏览并获得这些消息。然后使用 MQ Browse 程序 receive.bat 或者 receive.sh(视您的操作系统而定)。除了最后一个“test”消息之外,您将得到先前添加到队列中的所有消息。您将在进行故障恢复后得到这些消息。清单 5 给出了在节点 ha1 上运行的输出。
[root@ha1 mq]# ./receive.shMBrowse is runningHostname = ha.haw2.ibm.comQManager = ha.queue.managerChannel Name = HA.CHANNELChannel Port = 1414Q = HA.QUEUEBrowsed message: HelloActually get message?yActually getting the messageBrowsed message: ThisActually get message?yActually getting the messageBrowsed message: isActually get message?yActually getting the messageBrowsed message: aActually get message?yActually getting the messageBrowsed message: testActually get message?nMQJE001: Completion Code 2, Reason 2033MQ exception: CC = 2 RC = 2033
忽略结尾带有原因代码 2033 的 MQ Exception。出现这种异常是因为无法再从队列中获得消息。
模拟故障恢复。只需在主系统上使用以下命令停止 heartbeat 即可:/etc/rc.d/init.d/heartbeat stop
您应该观察到,在不到一分钟时间内,第二台机器上的所有服务都启动起来。如果没有,那么可以去查看 /var/log/messages 中的消息来确定其原因,并纠正它。通过再次启动 heartbeat,您可以自动恢复至主节点。heartbeat 总是优先选择主系统,只要有可能,就先从那里开始运行。在备份机器上检查 /var/log/ha-log 文件和 ps
命令,以此确认 WebSphere MQ 正在运行。
浏览并获得最后一条消息。运行 MQ Browse 程序 receive.bat 或者 receive.sh(视您的操作系统而定)。这一次您将得到最后一条消息。清单 6 给出了在 ha2 上运行的输出。
[root@ha2 mq]# ./receive.shMBrowse is runningHostname = ha.haw2.ibm.comQManager = ha.queue.managerChannel Name = HA.CHANNELChannel Port = 1414Q = HA.QUEUEBrowsed message: testActually get message?yActually getting the messageMQJE001: Completion Code 2, Reason 2033MQ exception: CC = 2 RC = 2033
现在您已经了解了如何通过使用共享磁盘,使得在故障恢复之前添加到某个队列中的消息可以在以后被恢复。
?
?原文地址:http://www.ibm.com/developerworks/cn/linux/l-halinux2/index.html