Sha*_*til 5 cluster-computing ibm-mq
我是websphere MQ的新手,所以如果我没有使用正确的条款,请原谅我.我们正在开展一个项目,我们需要设置MQ集群以实现高可用性.
客户端应用程序为订阅者和发布者维护与队列管理器的连接池.假设我们在托管具有相同名称的队列的集群中有两个队列管理器.每个队列都有自己的一组订阅者和发布者,这些订阅者和发布者由客户端应用程序缓存.假设其中一个队列管理器出现故障,该队列管理器上的队列的订户和发布者将死于使客户端应用程序上的对象无法使用.
在这种情况下可以采取以下方案吗?
1]当第一个QueueManager崩溃时,其队列上的消息将传输到集群中的其他队列管理器
2]当QueueManager再次出现时,是否有任何恢复发布者和订阅者的机制.目前,我们已在客户端应用程序中编写了一个自动恢复线程,该线程尝试重新连接失败的发布者和订阅者.但是在群集设置的情况下,我们担心发布者和订阅者将重新连接到另一个正在运行的qmanager.当崩溃的队列管理器恢复时,将不会有发布者和订阅者.
有人可以解释一下如何处理以上两种情况吗?
WMQ群集是一个高级主题.您必须首先对WMQ进行大量读取,并在尝试任何操作之前了解WMQ世界中的集群意味着什么.
WMQ群集在许多方面与传统群集有所不同.与传统集群不同,例如在主动/被动集群中,数据将在应用程序的主动和被动实例之间共享.在任何时间点,应用程序的活动实例都将处理数据.当活动实例关闭时,被动实例接管并开始处理.在WMQ集群中不是这种情况,其中集群中的队列管理器是唯一的,因此不共享由这些队列管理器托管的队列/主题.您可能在两个队列管理器中具有相同的队列/主题,但由于队列管理器不同,因此不会共享消息,主题,订阅等.
回答你的问题.
1)否.消息,如果持久,将保留在崩溃的队列管理器中.它们不会被转移到其他队列管理器.由于队列管理器本身不可用,因此在队列管理器启动之前无法执行任何操作.
2)没有.队列管理员不能这样做.应用程序的职责是检查队列管理器的可用性并重新连接.WMQ提供自动客户端重新连接功能,其中WMQ客户端库在检测到连接中断错误时自动重新连接到队列管理器.WMQ v7.x及更高版本的C和Java客户端可以使用此功能.C#客户端支持v7.1中的功能.
为了满足您的高可用性要求,您可以查看使用WMQ的多实例队列管理器功能.此功能允许在两台不同的计算机上运行相同队列管理器的主动/被动实例.队列管理器的活动实例将处理客户端连接,而被动实例将处于睡眠模式.这两个实例都将共享数据和日志.活动实例关闭后,被动实例将变为活动状态.在活动队列管理器关闭之前,您将可以访问队列中的所有持久性消息.
有关Multi实例队列管理器的更多信息,请通读WMQ InfoCenter.
为了补充 Shashi 的答案,为了充分利用 WMQ 集群,您需要在消息的发送者和接收者之间有一个网络跃点。WMQ 集群是关于 QMgrs 之间如何通信的。它与客户端应用程序如何与 QMgrs 通信无关,并且不复制消息。在集群中,当消息必须从一个 QMgr 发送到另一个 QMgr 时,集群会确定将其路由到何处。如果单个目标队列有多个集群实例,则消息可以路由到其中任何一个。如果发送者和接收者之间没有网络跃点,则消息不需要离开本地 QMgr,因此永远不会调用 WMQ 集群行为,即使所涉及的 QMgrs 可能参与集群。
在传统的 WMQ 集群架构中,接收器都侦听分布在多个 QMgrs 上、具有相同名称的同一队列的多个实例。发送者拥有一个或多个 QMgrs,可以在其中连接并发送请求(即发即弃),并可能等待回复(请求-回复)。由于消息的接收者提供一些服务,因此我将他们的 QMgrs 称为“服务提供商 QMgrs”。消息发送者所在的 QMgrs 是“服务消费者”QMgrs,因为这些应用程序是服务的消费者。
下面的幻灯片来自我在 WMQ 架构咨询活动中使用的演示文稿。

请注意,服务的使用者(发送请求消息的事物)会发生故障转移。侦听服务端点队列并提供服务的事物不会进行故障转移。这是因为需要确保每个活动服务端点队列始终得到服务。通常,每个应用程序实例都拥有两个或多个队列实例的输入句柄。这样,QMgr 就可以关闭,而所有应用程序实例仍保持活动状态。如果某个应用程序实例出现故障,其他一些应用程序实例将继续为其队列提供服务。服务提供者与特定 QMgrs 的这种亲和力还可以在需要时启用 XA 事务性。
我发现解释 WMQ HA 的最佳方法是 IMPACT 会议上的一张幻灯片:

WebSphere MQ 集群可确保服务保持可用,即使集群队列的实例可能不可用。集群中的新消息将路由到剩余的队列实例。硬件集群或多实例 QMgr (MIQM) 提供对现有消息的访问。当主动/被动对的一侧出现故障时,仅在发生故障转移时该 QMgr才会出现短暂中断,然后辅助节点将接管并使队列上的所有消息再次可用。结合了 WMQ 集群和硬件集群/MIQM 的网络提供了最高级别的可用性。
请记住,在这些配置中,消息都不会跨节点复制。WMQ 消息始终具有单个物理位置。关于这方面的更多内容,请参见关于灾难恢复的思考。