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 » SOLVED: Workload Balancing & Remote Queue Manager Defint

Post new topic  Reply to topic
 SOLVED: Workload Balancing & Remote Queue Manager Defint « View previous topic :: View next topic » 
Author Message
kerbling
PostPosted: Mon Oct 24, 2005 3:29 am    Post subject: SOLVED: Workload Balancing & Remote Queue Manager Defint Reply with quote

Novice

Joined: 15 Aug 2005
Posts: 10

I apologise for the length of this post but I want to be clear.

I have 2 scenarios. The first is simple workload balancing with 3 queue managers within the same cluster. The second is workload balancing from a queue manager outside the cluster via a gateway queue manager. I am using queue manager aliases in both scenarios and for me this is the problem.

Scenario One. QM1, QM2 and QM3 are in CLUSTER1. QM1 and QM2 each have a local queue (QIN) that are NOT clustered:

DEFINE QLOCAL(QIN) DEFBIND(NOTFIXED)

Queue managers QM1 and QM2 have a queue manager alias remote queue definition (QMALIAS) which are clustered:

DEFINE QREMOTE(QMALIAS) RNAME('') RQMNAME(QM1) CLUSTER(CLUSTER1) DEFBIND(NOTFIXED)

and,

DEFINE QREMOTE(QMALIAS) RNAME('') RQMNAME(QM2) CLUSTER(CLUSTER1) DEFBIND(NOTFIXED)

Therefore, QM3 can see 2 instances of 'QMALIAS' - one from QM1 and one from QM2.

It is therefore possible for an application on QM3 to put a message to the queue 'QIN' specifying queue manager 'QMALIAS' and the message goes to 'QIN' on QM1 or QM2.

The issue arises when I try to load balance. MQSeries will still load balance messages between QM1 and QM2 but the application needs to close its connection to the queue and then re-open it in order for MQSeries to balance messages evenly.

Now, if I had defined 'QIN' as a cluster queue on QM1 and QM2:

DEFINE QLOCAL(QIN) CLUSTER(CLUSTER1) DEFBIND(NOTFIXED)

Then the application on QM3 puts directly to 'QIN' and it does NOT have to close its connection to the queue, MQSeries balances the messages evenly between QM1 and QM2.

Scenario Two. QM1, QM2 and QM3 are in CLUSTER1. QM3 is the gateway queue manager to CLUSTER1. QM1 and QM2 each have a local queue (QIN) that are NOT clustered:

DEFINE QLOCAL(QIN) DEFBIND(NOTFIXED)

Queue managers QM1 and QM2 have a queue manager alias remote queue definition (QMALIAS) which are clustered:

DEFINE QREMOTE(QMALIAS) RNAME('') RQMNAME(QM1) CLUSTER(CLUSTER1) DEFBIND(NOTFIXED)

and,

DEFINE QREMOTE(QMALIAS) RNAME('') RQMNAME(QM2) CLUSTER(CLUSTER1) DEFBIND(NOTFIXED)

Therefore, QM3 can see 2 instances of 'QMALIAS' - one from QM1 and one from QM2.

In this scenario there is a 4th queue manager outside the cluster called 'QM4'. QM4 has a remote queue defintion pointing to QM3 (the gateway queue manager):

DEFINE QREMOTE(QIN) RNAME(QIN) RQNAME(QMALIAS) XMITQ(QM3)

It is therefore possible for an application on QM4 to put a message to it's local remote queue defintion 'QIN'. The message then goes across the distributed sender channel to 'QM3'. QM3 resolves the queue manger name from the 'QMALIAS' defintions it has from CLUSTER1 and puts the message to 'QIN' on either 'QM1' or 'QM2'.

The problem is that for all the subsequent messages put to 'QIN' on QM4, MQSeries will always put to the same final queue manager. The only way to balance between QM1 and QM2 is to stop and start the distributed sender channel between QM4 and the gateway QM3!

As in the first scenario, workload balancing will only work if the two 'QIN' queues on QM1 and QM2 are clustered:

DEFINE QLOCAL(QIN) CLUSTER(CLUSTER1) DEFBIND(NOTFIXED)

Also, following the example in the clustering manual, there is a remote queue manager definition on QM3:

DEFINE QREMOTE(QMALIAS_GATEWAY) RNAME('') RQMNAME('') DEFBIND(NOTFIXED)

And then the remote queue defintion on QM4 points queue manager 'QMALIAS_GATEWAY'.

DEFINE QREMOTE(QIN) RNAME(QIN) RQNAME(QMALIAS_GATEWAY) XMITQ(QM3)

Therefore, my question is whether MQSeries workload balancing (especially using a gateway queue manager) works using remote queue manager definitions. The examples in the manuals assume the final destination queue is a cluster queue. In my examples the local queues are not clustered, the remote queue manager defintions are clustered and this is how the messages are routed.

I know this post has been lengthy and appreciate peoples time those who feel they'd like to respond.


Last edited by kerbling on Tue Oct 25, 2005 3:43 am; edited 1 time in total
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Mon Oct 24, 2005 3:39 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

Please confirm that your code uses BIND_AS_QDEF, or BIND_NOT_FIXED.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
kerbling
PostPosted: Mon Oct 24, 2005 3:48 am    Post subject: Reply with quote

Novice

Joined: 15 Aug 2005
Posts: 10

Correct. For my testing I am using support pac IH03 to put the messages and have the 'Cluster Open' option set to either 'As Queue' (BIND_AS_QDEF) or 'Not Fixed' (BIND_NOT_FIXED).
Back to top
View user's profile Send private message
Michael Dag
PostPosted: Mon Oct 24, 2005 3:48 am    Post subject: Reply with quote

Jedi Knight

Joined: 13 Jun 2002
Posts: 2607
Location: The Netherlands (Amsterdam)

The last part of scenario 2 is correct.

with regard to the first part, don't create QREMOTES to QIN.
if you cluster the QIN (QLOCAL) they will automatically become known inside the cluster.

The trick of putting the QM Alias on QM3 with RMQNAME "", makes the cluster reset the queuemanager and let's the cluster resolve where to go,
either QIN on QM1 or QIN on QM2
_________________
Michael



MQSystems Facebook page
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
kerbling
PostPosted: Mon Oct 24, 2005 4:10 am    Post subject: Reply with quote

Novice

Joined: 15 Aug 2005
Posts: 10

Michael: Thanks for your response however ...

I am looking to make my scenarios work where the local queues are not clustered. The examples in the manuals all work but they assume that the final local queue will be clustered. I need to make my scenarios work where the final destination queue is not clustered but the queue manager aliases are clustered. Thanks.
Back to top
View user's profile Send private message
Michael Dag
PostPosted: Mon Oct 24, 2005 4:18 am    Post subject: Reply with quote

Jedi Knight

Joined: 13 Jun 2002
Posts: 2607
Location: The Netherlands (Amsterdam)

I don't think it works that way. local queue definitions (wether qremote, qalias or qlocal) prevail over clustered queues, so you end up on the QM1 or QM2 not using the clustering load balancing...

may I ask why you prefer one not clustered qlocal with 2 clustered qremotes over simple 1 clustered qlocal that does it all?
_________________
Michael



MQSystems Facebook page
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
harry_hotdog
PostPosted: Mon Oct 24, 2005 4:28 am    Post subject: Reply with quote

Novice

Joined: 19 Oct 2005
Posts: 10
Location: England

This looks like defect 92775, included in CSD11. The defect description is
[quote]Use qmgr alias bind option when bind as queue def
[/quote]

This seems to fit your description of both scenarii.

Try changing to use BIND_NOT_FIXED explicitly, rather than BIND_AS_Q_DEF, and see whether it makes any difference.
Back to top
View user's profile Send private message
kerbling
PostPosted: Mon Oct 24, 2005 5:08 am    Post subject: Reply with quote

Novice

Joined: 15 Aug 2005
Posts: 10

Yes ... that looks suspiciously like my issue. I had set BIND_NOT_FIXED on all queues and on the application doing the put, all with no joy. So I will install the CSD11 and let you know if it solves the issue. Thank you for pointing it out to me.
Back to top
View user's profile Send private message
kerbling
PostPosted: Tue Oct 25, 2005 3:42 am    Post subject: SOLVED: Workload Balancing & Remote Queue Manager Defint Reply with quote

Novice

Joined: 15 Aug 2005
Posts: 10

Thank you. Installing CSD11 solved this problem.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » Clustering » SOLVED: Workload Balancing & Remote Queue Manager Defint
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.