2017-08-03 280 views
1

我想知道是否可以將MQ發送者通道指向F5負載平衡器VIP地址,而不是指向具體的MQ服務器IP地址,並將消息發送到兩個MQ服務器之一在F5羣集資源組中。 F5集羣中有兩個MQ服務器。MQ通道F5重新路由

我想要做的是確定是否可以使用此方法代替在更多硬件上創建MQ羣集網關隊列管理器,並使用F5 LB功能將郵件傳遞到羣集隊列。

如果我可以利用F5負載平衡,我想它會模擬MQ羣集網關隊列管理器。

它會工作嗎?陷阱?

回答

0

您正在看的幾個問題具有這種配置:

  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)