首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

WebSphere MQ 的高可用配备(网摘)

2012-06-29 
WebSphere MQ 的高可用配置(网摘)对随需应变计算的成功而言,维持最大限度的系统运行时间变得越来越重要。We

WebSphere MQ 的高可用配置(网摘)

对随需应变计算的成功而言,维持最大限度的系统运行时间变得越来越重要。WebSphere MQ 是一个重要的消息中间件,可以帮助企业加快向随需应变商务的转型。架构师需要考虑如何将 WebSphere MQ 引入到高可用配置的重要性。本文讲述了如何在硬件级上使用开源软件,让使用所提供集群的 WebSphere MQ 具备高可用性。


?

在下面的章节中,我将向您详细介绍安装 WebSphere MQ 以及创建和测试高可用队列管理器配置的步骤。


现在需要配置 /etc/ha.d/haresources(在两个节点上),使它们包含上面的 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 的高可用性所需要的步骤。

    启动主节点上的 heartbeat 服务,然后在备份节点上执行以下命令:

    /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          

    重新在主节点上启动 heartbeat 服务。这应该会停止备份节点上的 WebSphere MQ 服务器进程,并在主节点上启动它们。主节点还应该接管集群 IP。

现在您已经了解了如何通过使用共享磁盘,使得在故障恢复之前添加到某个队列中的消息可以在以后被恢复。

?

?原文地址:http://www.ibm.com/developerworks/cn/linux/l-halinux2/index.html

热点排行