2014-06-24 66 views
3

我试图配置连接到群集MQ的群集Websphere应用程序服务器。将IBM WAS7队列工厂配置到MQ群集

但是,我拥有的信息是具有不同主机名,服务器通道和属于相同MQ集群名称的队列管理器的MQ的两个实例的详细信息。

在websphere控制台上,我可以看到主机名,队列管理器和服务器通道的输入字段,找不到可以指定多个MQ详细信息的任何内容。

如果我选择其中一个MQ细节,MQ群集仍然可以工作吗?如果不是的话,考虑到我的具体细节,我将如何启用MQ集群?

回答

3

WebSphere MQ集群影响队列管理器如何在自己之间进行对话的行为。它的确如此,而不是改变了应用程序连接或与队列管理器对话的方式,因此所问的问题似乎假定WMQ中不存在某种聚类行为。

要建立应用服务器与两个地址,请参阅WAS V7知识中心Configuring multi-instance queue manager connections with WebSphere MQ messaging provider custom properties关于如何使用多实例CONNAME值配置连接工厂的说明。

如果您在连接工厂中指定了有效的QMgr名称,并且应用程序连接到的QMgr没有该特定名称,则连接将被拒绝。通常使用多实例CONNAME来连接到多实例QMgr。这是一个高度可用的队列管理器,它可以位于两个不同的IP地址之一,因此在这种情况下使用真正的QMgr名称。但是,如果您的应用连接的QMgrs是两个截然不同且名称不同的队列管理器,则您应该在连接工厂中指定一个星号(*字符)作为队列管理器名称,如here所述。这样,应用程序在获取连接时不会检查QMgr的名称。

如果我选择其中一个MQ细节,MQ群集仍然可以工作吗?如果没有, 考虑到我有的详细信息,我将如何启用MQ集群?

取决于你的意思是“聚类”。如果您认为该应用会看到由两个队列管理器托管的一个逻辑队列,则不会。这不是WMQ集群的工作方式。承载群集队列的每个队列管理器都会获取发送到该队列的消息的子集。因此,从该队列获取的任何应用都将只能看到本地子集。

但是,如果通过“集群”,您打算交替连接到两个队列管理器中的一个或另一个,并将消息传输到同一个集群中但未托管在您连接的两个QMgr中的任何一个上的队列,那么是的,它会正常工作。如果您的连接工厂只知道两个QMgr中的一个,则只会连接到该QMgr,并且将消息发送到群集仍然可以工作。但是按照我提供的链接中所述进行设置,并且您的应用将能够连接到两个QMgr中的任意一个,并且您可以通过停止连接到该连接的通道并观察它连接到另一个通道来轻松测试该通道一。

祝你好运!

UPDATE:

为了清楚详细提供类似于hostname01,qmgr01, queueA,serverchannel01。另一个是hostname02,qmgr02,queueA, serverchannel02。

WMQ客户端将使用多实例,只有当CONNAME连接到两个不同的QMgrs ...

  • 两个QMgrs使用的频道名称是完全一样的
  • 应用程序使用星号(一个*字符)或连接请求时(即在连接工厂中)用于QMgr名称的空间。

可以通过使用客户端连接定义表(也称为CCDT)将WMQ连接到几个不同队列管理器中的一个,其中通道名称各不相同。 CCDT是您使用MQSC命令创建的0​​通道创建的已编译的工件。它包含客户有资格连接到的每个QMgr的条目。每个可以有不同的QMgr名称,主机,端口和通道。但是,在定义CCDT时,管理员定义了所有条目,以便QMgr名称被替换为应用程序高级限定符。例如,薪资应用程序想要连接到3个不同QMgrs中的任何一个。 WMQ管理员定义了具有三个条目的CCDT,但对于QMgr名称使用PAY01PAY02PAY03。请注意,这不需要与实际的QMgr名称匹配。然后,应用程序将QMgr名称指定为PAY*,它选择CCDT中的所有三个QMgr。

有关CCDT的更多详细信息,请参阅Using a client channel definition table with WebSphere MQ classes for JMS

MQ集群是否与应用程序服务器集群不相似?

不,完全没有。

其中两个子节点连接到一个集群。并且将使用F5 URL 将负载分配给每个节点。 WMQ是否带有 群集url/f5,我们只是发送消息,而 消息的分区是透明的?

否。WMQ群集提供了一个名称空间,应用程序和QMgrs可以在该名称空间中解析非本地对象,如队列和主题。连接到WebSphere MQ集群的唯一一件事是队列管理器。应用程序和人类用户总是连接到特定的队列管理器。可能有一组可互换的队列管理器,例如CCDT,但每个都是独立的。

随着WAS的消息传递引擎可能在多个节点上运行,但它提供了一个单一的逻辑队列,应用程序可以从中获取消息。使用WMQ,托管该队列的每个节点都会获取消息的子集,并且任何使用这些消息的应用程序都只会看到该子集。

HTTP是无状态的,因此F5 URL的效果很好。当它保持会话时,该会话主要用于优化连接开销并且往往是短暂的。 WMQ客户端通道是有状态的,可协调单相和双相工作单元。如果在UOW期间应用程序故障切换到另一个QMgr,则无法调和该UOW。

由于WMQ连接的性质,F5是从来没有 QMgrs之间使用。它仅在客户端和QMgr之间用于连接平衡,而不用于消息流量平衡。此外,MQ集群的缺席或存在对于应用程序来说是完全透明的,在任何情况下,它都只是连接到QMgr以获取和/或放置消息。使用多实例CONNAME或CCDT文件通过提供客户端可以连接的多个等效QMgrs使该连接更加健壮,但与WMQ集群无关。

这有帮助吗?

请参阅:

+0

感谢您的回答。要明确提供的细节类似于hostname01,qmgr01,queueA,serverchannel01。另一个是hostname02,qmgr02,queueA,serverchannel02。两者都具有相同的群集名称。 MQ群集与应用程序服务器群集不相似吗?双子节点连接到群集的位置。并且将使用F5 URL将负载分发到每个节点。 WMQ是否带有一个我们刚刚发送消息的群集url/f5,并且消息的分区是透明的? – javapadawan

+0

这帮了很多!非常感谢你。之前难以消化的原因是因为我正在将MQ集群与Application Server集群进行比较。 – javapadawan

+0

你并不孤单! “集群”这个词远远超负荷,我们认为这通常不是技术供应商说的意思,而且每个供应商(在这种情况下,由* same *供应商提供的不同产品)对其进行了不同的定义。这种特殊的误解是我经常在咨询任务和事件发言中看到的。很高兴帮助! –