ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » Clustering » Load balancing messages received from outside the cluster

Post new topic  Reply to topic Goto page 1, 2, 3  Next
 Load balancing messages received from outside the cluster « View previous topic :: View next topic » 
Author Message
jeevan
PostPosted: Thu Sep 03, 2009 3:40 pm    Post subject: Load balancing messages received from outside the cluster Reply with quote

Grand Master

Joined: 12 Nov 2005
Posts: 1432

I need to load balance message arriving to a cluster queue maanger from outside of the cluster. There are two queue managers and both of the queue managers, the one which is receiving the message and other, have the queue instance.

Is it doable?

I searched and found only the follwoing link which tell me that I can not have an instance of the queue in the receiving queue maanger.


http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=/com.ibm.mq.csqzah.doc/qc10790_.htm


Last edited by jeevan on Tue Jul 06, 2010 4:06 pm; edited 1 time in total
Back to top
View user's profile Send private message
bruce2359
PostPosted: Thu Sep 03, 2009 3:53 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9469
Location: US: west coast, almost. Otherwise, enroute.

Quote:
I searched and found only the follwoing link which tell me that I can not have an instance of the queue in the receiving queue maanger.

You didn't read far enough.

This is pasted from the reference you cited:

To take advantage of the default workload balancing mechanism, one of the following must apply:
-The gateway queue manager must not contain an instance of the EDINBURGH queue.
-The gateway queue manager specifies CLWLUSEQ(ANY) on ALTER QMGR.
-The EDINBURGH queue on the gateway queue manager specifies CLWLUSEQ(ANY).

What this means is that one, some or all, must be true.
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
exerk
PostPosted: Thu Sep 03, 2009 4:06 pm    Post subject: Reply with quote

Jedi Council

Joined: 02 Nov 2006
Posts: 6339

And it's contradictory:

Quote:
    The gateway queue manager must not contain an instance of the EDINBURGH queue.
    The gateway queue manager specifies CLWLUSEQ(ANY) on ALTER QMGR.
    The EDINBURGH queue on the gateway queue manager specifies CLWLUSEQ(ANY).


Prior to V6.0, a cluster queue manager alias (an 'empty' QR, i.e. no RNAME, RQMNAME and XMITQ specified) was required in the Gateway queue manager, which could not host any instances of a queue declared to the cluster. With the advent of V6.0, provided a message arrives at the Gateway queue manager within the cluster over a non-cluster channel, or is put locally and the CLWLUSEQ attributes on the queue/queue manager are correctly specified, the queue manager will load balance across the cluster to other instances of the queue.

THIS also 'contradicts' the URL you posted, so I'm not surprised you are confused.

Bear in mind one aspect about Gateways into clusters if using V6.0 or V7.0: Although any of the queue managers could potentially be used, a Gateway should always be highly-available, therefore using one of the 'processing' queue managers may not be appropriate, whereas configuring an HA queue manager that just works as a router may be.

EDIT after seeing bruce2359's post: I still think that part of the manual is poorly written, and open to misinterpretation.
_________________
It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys.
Back to top
View user's profile Send private message
exerk
PostPosted: Thu Sep 03, 2009 4:11 pm    Post subject: Reply with quote

Jedi Council

Joined: 02 Nov 2006
Posts: 6339

Moving the post to the Clusters forum as it's more appropriate...
_________________
It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Thu Sep 03, 2009 4:19 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9469
Location: US: west coast, almost. Otherwise, enroute.

Quote:
EDIT after seeing bruce2359's post: I still think that part of the manual is poorly written, and open to misinterpretation.

Clearly, the reference is unclear. The author could have added and/or to make it somewhat easier to understand.
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
jeevan
PostPosted: Thu Sep 03, 2009 6:20 pm    Post subject: Reply with quote

Grand Master

Joined: 12 Nov 2005
Posts: 1432

bruce2359 wrote:
Quote:
EDIT after seeing bruce2359's post: I still think that part of the manual is poorly written, and open to misinterpretation.

Clearly, the reference is unclear. The author could have added and/or to make it somewhat easier to understand.


Definitely confusing. I am still confused. In fact, I already created the qmgr alias too and have both 2 and 3 steps done.


I DELETED the qmgr alias, revoked step 3. So, I only have step 2 done.

The clwsuseq parameter of the queue is left as default- queue manaer.

1. The gateway queue manager must not contain an instance of the EDINBURGH queue.
2. The gateway queue manager specifies CLWLUSEQ(ANY) on ALTER QMGR.
4, The EDINBURGH queue on the gateway queue manager specifies CLWLUSEQ(ANY)

However, it is not working. All the messages are going to qmgr 1.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Thu Sep 03, 2009 6:28 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9469
Location: US: west coast, almost. Otherwise, enroute.

Quote:
However, it is not working. All the messages are going to qmgr 1.

Is qmgr1 the gateway qmgr? If so, is there a local instance of the destination queue on qmgr1? If so, you have violated rule #1.

Some other things: is the gateway qmgr in the cluster? is there qlocal definition in the cluster?
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
jeevan
PostPosted: Thu Sep 03, 2009 7:56 pm    Post subject: Reply with quote

Grand Master

Joined: 12 Nov 2005
Posts: 1432

bruce2359 wrote:
Quote:
However, it is not working. All the messages are going to qmgr 1.

Is qmgr1 the gateway qmgr? If so, is there a local instance of the destination queue on qmgr1? If so, you have violated rule #1.

Some other things: is the gateway qmgr in the cluster? is there qlocal definition in the cluster?


That is what my initial post is. I said the doc says that I can not have local instance of the queue in the gateway gmgq(lets say qmgr1). But my requirement is I have to have the instance of the queue on both.

in your first reply you said,
What this means is that one, some or all, must be true.

one if not true but boht other are true.

I am still not sure whether this can be done or not. My requirement, I am repeating again, is to have the instance of the queu in both queue manager ( gateway and the other).
Back to top
View user's profile Send private message
bruce2359
PostPosted: Thu Sep 03, 2009 10:04 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9469
Location: US: west coast, almost. Otherwise, enroute.

EDIT

Please:

On your gateway qmgr specify CLWLUSEQ(ANY). Display the gateway QMGR object and post it here.

Your gateway local cluster queue definition must specify CLWLUSEQ(QMGR or ANY). Display your gateway qmgr qlocal definition and post it here.

Display your other qmgr (non-gateway) cluster qlocal definition and post it here.
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Fri Sep 04, 2009 4:46 am    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7722

The app or remote queue definition outside of the cluster is probably specifically addressing the message to your gateway QM. So regardless of the CLWLUSEQ attribute of that queue on the Gateway QM, you are telling MQ to deliver it to only that QM.

The destination QM should be the name of the cluster, and on the gateway QM you need a QM Alias that blanks out the destination QM so that the cluster is free to look for instances of the queue. And then CLWLUSEQ will come into play.
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Fri Sep 04, 2009 5:45 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

That's the way to do it. Follow Peter's advice to the letter.
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
jeevan
PostPosted: Fri Sep 04, 2009 8:22 am    Post subject: Reply with quote

Grand Master

Joined: 12 Nov 2005
Posts: 1432

PeterPotkay wrote:
The app or remote queue definition outside of the cluster is probably specifically addressing the message to your gateway QM. So regardless of the CLWLUSEQ attribute of that queue on the Gateway QM, you are telling MQ to deliver it to only that QM.

The destination QM should be the name of the cluster, and on the gateway QM you need a QM Alias that blanks out the destination QM so that the cluster is free to look for instances of the queue. And then CLWLUSEQ will come into play.


Peter,
Thanks a lot. The following is my mq setup.

non cluster qmgr

Name: TESTQMGR

Remoteq: SC_REMOTE ( maps to SC.REQ)
the remote queue manager : SC_CLUSTER
XMITQ: SC1


CLUSTER QMGR

1. QMGR1(GATEWAY QMGR)
NAME: SC1
REPOSITORY NAME: SC.CLUSTER
has a cluster receiver channel TO.SC1
QCLUSTER: SC.REQ
QMGR ALIAS: SC1
[DEFINE QREMOTE(SC1) RNAME(' ') RQMNAME('')]

The CLWLUSEQ1 parameter of both cluster queue SC_CLUSTER and qmgr itself has set to "ANY"



1. QMGR2
NAME: SC2
has a cluster receiver and sender channel TO.SC2, TO.SC1

QCLUSTER: SC.REQ



QUESTIONS:

AMQSPUT SC.REMOTE TESTQMGR


The messages are going to DLQ

Could you please advise me what did I do wrong


Thanks
Back to top
View user's profile Send private message
bruce2359
PostPosted: Fri Sep 04, 2009 8:31 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9469
Location: US: west coast, almost. Otherwise, enroute.

It would help a bunch if you would post entire object definitions.

Which DLQ on which qmgr? What is the reasoncode in the dead-letter header? What are the qname and qmgrname in the DLH?
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
jeevan
PostPosted: Fri Sep 04, 2009 8:57 am    Post subject: Reply with quote

Grand Master

Joined: 12 Nov 2005
Posts: 1432

bruce2359 wrote:
It would help a bunch if you would post entire object definitions.

Which DLQ on which qmgr? What is the reasoncode in the dead-letter header? What are the qname and qmgrname in the DLH?


Here is the complete def of mq objects

**********************************


* >> TEST1
* Sender Channels

DEFINE CHANNEL('TEST1.TO.SC1') CHLTYPE(SDR) +
TRPTYPE(TCP) XMITQ('SC1') +
CONNAME('10.16.178.133(1416)') DESCR(' ') MCANAME(' ') +
BATCHSZ(50) BATCHINT(0) HBINT(300) +
DISCINT(6000) SHORTRTY(10) SHORTTMR(60) +
LONGRTY(999999999) LONGTMR(1200) SCYEXIT(' ') +
SCYDATA(' ') MSGEXIT(' ') MSGDATA(' ') +
SENDEXIT(' ') SENDDATA(' ') RCVEXIT(' ') +
RCVDATA(' ') SEQWRAP(999999999) MAXMSGL(4194304) +
CONVERT(NO) NPMSPEED(FAST) MCATYPE(PROCESS) +
MCAUSER(' ') USERID(' ') +
BATCHHB(0) KAINT(AUTO) LOCLADDR(' ') +
SSLCIPH(' ') SSLPEER(' ') REPLACE


* Alias Queues
DEFINE QALIAS('SC.REQ') +
DESCR(' ') TARGQ('SC.REMOTE') +
DEFPRTY(0) PUT(ENABLED) GET(ENABLED) +
DEFPSIST(NO) CLUSTER(' ') CLUSNL(' ') +
DEFBIND(OPEN) REPLACE



* Remote Queues
DEFINE QREMOTE('SC.REMOTE') +
DESCR(' ') RNAME('SC.REQ') +
RQMNAME('SC_CLUSTER') XMITQ('SC1') DEFPRTY(0) +
PUT(ENABLED) DEFPSIST(NO) CLUSTER(' ') +
CLUSNL(' ') DEFBIND(OPEN) REPLACE

* xmitq Queues
DEFINE QLOCAL('SC1') +
DESCR(' ') SHARE +
TRIGMPRI(0) TRIGDPTH(1) TRIGTYPE(FIRST) +
TRIGDATA('TEST1.TO.SC1') BOQNAME(' ') PROCESS(' ') +
DEFPRTY(0) MAXMSGL(4194304) BOTHRESH(0) +
TRIGGER DEFSOPT(SHARED) HARDENBO +
MSGDLVSQ(PRIORITY) PUT(ENABLED) GET(ENABLED) +
DEFPSIST(NO) USAGE(XMITQ) RETINTVL(999999999) +
MAXDEPTH(5000) QDEPTHLO(20) QDEPTHHI(80) +
QSVCINT(999999999) QSVCIEV(NONE) +
QDPMAXEV(ENABLED) INITQ('SYSTEM.CHANNEL.INITQ') QDPHIEV(DISABLED) +
QDPLOEV(DISABLED) CLUSTER(' ') CLUSNL(' ') +
DEFBIND(OPEN) REPLACE

*
*
********************************************************************************
* Queue Manager SC1

ALTER QMGR DESCR(' ') TRIGINT(999999999) +
DEADQ('SYSTEM.DEAD.LETTER.QUEUE') DEFXMITQ(' ') +
MAXHANDS(256) AUTHOREV(DISABLED) INHIBTEV(DISABLED) +
LOCALEV(DISABLED) REMOTEEV(DISABLED) STRSTPEV(ENABLED) +
PERFMEV(DISABLED) CCSID(437) MAXMSGL(4194304) +
CHADEV(DISABLED) CHAD(DISABLED) CHADEXIT(' ') +
MAXUMSGS(10000) REPOS('SC_CLUSTER') REPOSNL(' ') +
CLWLEXIT(' ') CLWLDATA(' ') CLWLLEN(100) +
CONFIGEV(DISABLED) SSLTASKS(0) SSLCRYP( ) +
SSLCRLNL(' ') SSLKEYR('D:\mqm\qmgrs\SC1\ssl\key') FORCE



* Receiver Channels

DEFINE CHANNEL('TEST1.TO.SC1') CHLTYPE(RCVR) +
TRPTYPE(TCP) DESCR(' ') +
BATCHSZ(50) HBINT(300) +
MRTMR(1000) MRRTY(10) SCYEXIT(' ') +
SCYDATA(' ') MSGEXIT(' ') MSGDATA(' ') +
SENDEXIT(' ') SENDDATA(' ') RCVEXIT(' ') +
RCVDATA(' ') PUTAUT(DEF) SEQWRAP(999999999) +
MAXMSGL(4194304) NPMSPEED(FAST) MCAUSER(' ') +
MREXIT(' ') MRDATA(' ') +
KAINT(AUTO) SSLCIPH(' ') SSLPEER(' ') +
SSLCAUTH(REQUIRED) REPLACE


* Cluster Receiver Channels

DEFINE CHANNEL('TO.SC1') CHLTYPE(CLUSRCVR) +
TRPTYPE(TCP) CONNAME('10.16.178.133(1416)') +
DESCR(' ') +
BATCHSZ(50) +
BATCHINT(0) HBINT(300) MRTMR(1000) +
MRRTY(10) DISCINT(6000) SHORTRTY(10) +
SHORTTMR(60) LONGRTY(999999999) LONGTMR(1200) +
SCYEXIT(' ') SCYDATA(' ') MSGEXIT(' ') +
MSGDATA(' ') SENDEXIT(' ') SENDDATA(' ') +
RCVEXIT(' ') RCVDATA(' ') PUTAUT(DEF) +
SEQWRAP(999999999) MAXMSGL(4194304) CONVERT(NO) +
NPMSPEED(FAST) MCATYPE(THREAD) MCAUSER(' ') +
MREXIT(' ') MRDATA(' ') CLUSTER('SC_CLUSTER') +
CLUSNL(' ') NETPRTY(0) BATCHHB(0) +
KAINT(AUTO) LOCLADDR(' ') SSLCIPH(' ') +
SSLPEER(' ') SSLCAUTH(REQUIRED) REPLACE


* Local Queues

DEFINE QLOCAL('SC.REQ') +
DESCR(' ') SHARE +
TRIGMPRI(0) TRIGDPTH(1) TRIGTYPE(FIRST) +
TRIGDATA(' ') BOQNAME(' ') PROCESS(' ') +
DEFPRTY(0) MAXMSGL(4194304) BOTHRESH(0) +
NOTRIGGER DEFSOPT(SHARED) HARDENBO +
MSGDLVSQ(PRIORITY) PUT(ENABLED) GET(ENABLED) +
DEFPSIST(NO) USAGE(NORMAL) RETINTVL(999999999) +
MAXDEPTH(5000) QDEPTHLO(20) QDEPTHHI(80) +
QSVCINT(999999999) QSVCIEV(NONE) +
QDPMAXEV(ENABLED) INITQ(' ') QDPHIEV(DISABLED) +
QDPLOEV(DISABLED) CLUSTER('SC_CLUSTER') CLUSNL(' ') +
DEFBIND(NOTFIXED) REPLACE


* Alias QMgrs

DEFINE QREMOTE('SC1') +
DESCR(' ') RNAME(' ') +
RQMNAME(' ') XMITQ(' ') DEFPRTY(0) +
PUT(ENABLED) DEFPSIST(NO) CLUSTER(' ') +
CLUSNL(' ') DEFBIND(OPEN) REPLACE

*****************************************************************************************************************************
* >> Queue Manager SC2

* Cluster Receiver Channels

DEFINE CHANNEL('TO.SC2') CHLTYPE(CLUSRCVR) +
TRPTYPE(TCP) CONNAME('10.16.178.133(1417)') +
DESCR(' ') +
BATCHSZ(50) +
BATCHINT(0) HBINT(300) MRTMR(1000) +
MRRTY(10) DISCINT(6000) SHORTRTY(10) +
SHORTTMR(60) LONGRTY(999999999) LONGTMR(1200) +
SCYEXIT(' ') SCYDATA(' ') MSGEXIT(' ') +
MSGDATA(' ') SENDEXIT(' ') SENDDATA(' ') +
RCVEXIT(' ') RCVDATA(' ') PUTAUT(DEF) +
SEQWRAP(999999999) MAXMSGL(4194304) CONVERT(NO) +
NPMSPEED(FAST) MCATYPE(THREAD) MCAUSER(' ') +
MREXIT(' ') MRDATA(' ') CLUSTER('SC_CLUSTER') +
CLUSNL(' ') NETPRTY(0) BATCHHB(0) +
KAINT(AUTO) LOCLADDR(' ') SSLCIPH(' ') +
SSLPEER(' ') SSLCAUTH(REQUIRED) REPLACE

* Cluster Sender Channels

DEFINE CHANNEL('TO.SC1') CHLTYPE(CLUSSDR) +
TRPTYPE(TCP) CONNAME('10.16.178.133(1416)') +
DESCR(' ') MCANAME(' ') +
BATCHSZ(50) +
BATCHINT(0) HBINT(300) DISCINT(6000) +
SHORTRTY(10) SHORTTMR(60) LONGRTY(999999999) +
LONGTMR(1200) SCYEXIT(' ') SCYDATA(' ') +
MSGEXIT(' ') MSGDATA(' ') SENDEXIT(' ') +
SENDDATA(' ') RCVEXIT(' ') RCVDATA(' ') +
SEQWRAP(999999999) MAXMSGL(4194304) CONVERT(NO) +
NPMSPEED(FAST) MCATYPE(THREAD) MCAUSER(' ') +
USERID(' ') CLUSTER('SC_CLUSTER') +
CLUSNL(' ') BATCHHB(0) KAINT(AUTO) +
LOCLADDR(' ') SSLCIPH(' ') SSLPEER(' ') +
REPLACE


* Local Queues


DEFINE QLOCAL('SC.REQ') +
DESCR(' ') SHARE +
TRIGMPRI(0) TRIGDPTH(1) TRIGTYPE(FIRST) +
TRIGDATA(' ') BOQNAME(' ') PROCESS(' ') +
DEFPRTY(0) MAXMSGL(4194304) BOTHRESH(0) +
NOTRIGGER DEFSOPT(SHARED) HARDENBO +
MSGDLVSQ(PRIORITY) PUT(ENABLED) GET(ENABLED) +
DEFPSIST(NO) USAGE(NORMAL) RETINTVL(999999999) +
MAXDEPTH(5000) QDEPTHLO(20) QDEPTHHI(80) +
QSVCINT(999999999) QSVCIEV(NONE) +
QDPMAXEV(ENABLED) INITQ(' ') QDPHIEV(DISABLED) +
QDPLOEV(DISABLED) CLUSTER('SC_CLUSTER') CLUSNL(' ') +
DEFBIND(NOTFIXED) REPLACE



Note: The messages are going to the DLQ of qmgr1 SC1.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Fri Sep 04, 2009 9:13 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9469
Location: US: west coast, almost. Otherwise, enroute.

Quote:
Note: The messages are going to the DLQ of qmgr1 SC1.

Look at the DeadLetterHeader of one of the messages in the DLQ.
What is the reasoncode?
What is the destination qmgr name?
What is the destination queue name?
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2, 3  Next Page 1 of 3

MQSeries.net Forum Index » Clustering » Load balancing messages received from outside the cluster
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.