MQ通道F5重新路由
问题描述:
我想知道是否可以将MQ发送者通道指向F5负载平衡器VIP地址,而不是指向具体的MQ服务器IP地址,并将消息发送到两个MQ服务器之一在F5群集资源组中。 F5集群中有两个MQ服务器。MQ通道F5重新路由
我想要做的是确定是否可以使用此方法代替在更多硬件上创建MQ群集网关队列管理器,并使用F5 LB功能将邮件传递到群集队列。
如果我可以利用F5负载平衡,我想它会模拟MQ群集网关队列管理器。
它会工作吗?陷阱?
答
您正在看的几个问题具有这种配置:
- 随着持久消息发送者和相应的接收器信道递增与整个信道发送每个持久消息的序列号。如果此序列号不匹配,则通道将不会启动,除非它被重置为匹配一端或另一端(通常是发送者)。这意味着如果发送方通道连接到F5后面的QMGR1,QMGR1上的接收方将递增序列号,如果下一次发送方通道将其连接到QMGR2,则接收方的序列号将低于在发件人上,它不会启动。
- 即使您只发送不会增加序列号的非持久消息,也不会获得与在两个队列管理器前设置群集网关相同的结果。通常,使用群集配置时,您将在两个群集队列管理器之间轮询一次消息。对于发送者通道,通常配置为在将消息放入关联的传输队列(
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)