MQ 通道 F5 重新路由



我想知道是否可以将 MQ 发送程序通道指向 F5 负载均衡器 VIP 地址,而不是具体的 MQ 服务器 IP 地址,并将消息传递到 F5 群集资源组中的两个 MQ 服务器之一。F5 集群中有两个 MQ 服务器。

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

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

行得通吗?陷阱?

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

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

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

平方米:

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)

最新更新