MQ 通道 F5 重新路由

MQ channel F5 reroute

我想知道是否可以将 MQ 发件人通道指向 F5 负载平衡器 VIP 地址,而不是指向具体的 MQ 服务器 IP 地址,并将消息传递到F5 集群资源组。 F5集群中有两台MQ Server。

我想做的是确定我是否可以在更多硬件上使用此方法代替创建 MQ 集群网关队列管理器并使用 F5 LB 功能将消息传递到集群队列.

如果我可以利用 F5 负载平衡,我认为它可以模拟 MQ 集群网关队列管理器。

有用吗?陷阱?

您正在查看此配置的几个问题:

  1. 对于持久消息,发送方和相应的接收方通道会随着通过通道发送的每个持久消息递增一个序列号。如果此序列号不匹配,则通道将不会启动,除非在一端或另一端(通常是发送方)将其重置为匹配。这意味着如果发送通道连接到 F5 后面的 QMGR1,QMGR1 上的接收方将增加序列号,如果下次发送通道连接它被路由到 QMGR2,接收方的序列号将低于它是在发件人上,它不会启动。
  2. 即使您只发送不增加序列号的非持久性消息,您仍然不会获得与在两个队列管理器前面有一个集群网关时相同的结果。通常,对于集群配置,您会在两个集群队列管理器之间轮询消息。对于发送方通道,它通常配置为在将消息放入关联的传输队列 (TRIGGER) 时启动,并保持 运行 直到在断开连接指定的时间长度内未发送消息间隔(DISCINT)。因此,您不会看到 F5 后面的两个队列管理器之间消息的工作负载平衡。根据 F5 的配置方式和断开连接间隔设置的时间长短,您会看到一组消息发送到一个队列管理器,然后一组消息发送到另一个队列管理器。每组中的消息数量将取决于与发件人通道设置相比的流量模式。

请注意,即使将发送方通道配置为仅连接到两个集群队列管理器之一,如果将集群工作负载使用队列 (CLWLUSEQ) 设置为 ANY 的值对于集群队列,您可以让消息在队列的两个实例之间仍然循环。这将要求您让发送方通道队列管理器上的远程队列 (QREMOTE) 指定远程队列管理器别名 (RQMA) 作为远程队列管理器名称 (RQMNAME) 值。然后 RQMA 将允许消息解析到集群队列的任何实例,包括本地实例。下面是发送方队列管理器 (SQMGR) 和接收方(第一个集群)队列管理器 (CQMGR1) 和第二个集群队列管理器 (CQMGR2) 的对象示例:

SQMGR:

DEFINE QREMOTE(TO.CQLOCAL) RNAME(CQLOCAL) RQMNAME(CLUSTER.RQMA) XMITQ(CQMGR1)
DEFINE QLOCAL(CQMGR1) USAGE(XMITQ) INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(SQMGR.CQMGR1) TRIGGER .....
DEFINE CHL(SQMGR.CQMGR1) CHLTYPE(SDR) XMITQ(CQMGR1) CONNAME(10.20.30.40) .....

CQMGR1:

DEFINE CHL(SQMGR.CQMGR1) CHLTYPE(RCVR) MCAUSER('notmqm') .....
DEFINE QREMOTE(CLUSTER.RQMA) RNAME('') RQMNAME('') XMITQ('')
DEFINE QLOCAL(CQLOCAL) CLUSTER('YOURCLUSTER') CLWLUSEQ(ANY)

CQMGR2:

DEFINE QLOCAL(CQLOCAL) CLUSTER('YOURCLUSTER') CLWLUSEQ(ANY)