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: Overlapping cluster design issue

Post new topic  Reply to topic Goto page 1, 2  Next
 SOLVED: Overlapping cluster design issue « View previous topic :: View next topic » 
Author Message
girish_tharwani
PostPosted: Mon Jul 09, 2012 12:51 am    Post subject: SOLVED: Overlapping cluster design issue Reply with quote

Voyager

Joined: 01 Aug 2001
Posts: 88
Location: Pune, India

Setup
We have two overlapping cluster C1 and C2. Two qmgrs QM1 and QM2 are part of both clusters. These qmgrs are not Full Repos for any cluster. A local queue CLQ on QM1 is shared only in C1. We have a request-reply situation in which responding app conneting to QM2 is sending reply messages to CLQ on QM1.

Problem
We have noticed that if responding app ignores the ReplytoQmgr field value (ie QM1) and leaves the target qmgr as blank in reply messages, all reply messages go via C1 clusrcvr. However, reply messages go 50-50 on c1 and C2 clusrcvrs, if ReplytoQmgr field value (ie QM1) is used by responding app.

Is there a way to force all the message to go via C1 clusrcvr even when using replytoqmgr. This is needed becuase in future requsetor will be running on two legs (separate qmgrs eg QM1a and QM1b) so we need replies going back to same qmgr where the request came from so use of replytoqmgr is mandatory in design.

This issue came to our notice becuase we are using two different MCAUSERS for these two clusrcvrs on QM1 and we had given the CLQ put authority to only C1 clusrcvr's MCAUSER so half of our replies are ending in DLQ due to Auth error C2 clusrcvr's MCAUSER. And I do not want to give put access to C2 clusrcvr's MCAUSER so messages travelling on both channels is a problem.


Last edited by girish_tharwani on Tue Jul 17, 2012 10:55 pm; edited 1 time in total
Back to top
View user's profile Send private message
mqjeff
PostPosted: Mon Jul 09, 2012 1:56 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

The target queue and target queue manager name form a unique address at the time the message is put. If the message is put to a queue manager that has more than one route to that unique address, then the message will be load-balanced across the available routes.

It seems like you are attempting to use clusters to build an application-specific network - i.e. one or more sets of applications communicate with each other using CLUSTER1, and an entirely different set of applications communicate using CLUSTER2.

In order for that to be successful, you need to ensure that the applications always use cluster-specific information and NOT queue manger specific information.

So you would need to create a cluster alias for routing the reply messages.
Back to top
View user's profile Send private message
girish_tharwani
PostPosted: Mon Jul 09, 2012 2:19 am    Post subject: Reply with quote

Voyager

Joined: 01 Aug 2001
Posts: 88
Location: Pune, India

mqjeff wrote:
The target queue and target queue manager name form a unique address at the time the message is put. If the message is put to a queue manager that has more than one route to that unique address, then the message will be load-balanced across the available routes.

I understand that there are two routes from QM2 to QM1 however I am not clear what makes MQ to load balance on both routes when ReplyToQmgr field value is used and what makes MQ to select only C1 ClusRcvr when ReplytoQmgr field is ignored?

mqjeff wrote:

In order for that to be successful, you need to ensure that the applications always use cluster-specific information and NOT queue manger specific information.

So you would need to create a cluster alias for routing the reply messages.

Not sure I understand it correctly . Would you mind elaborating a littile bit. If I use cluster alias, will I not lose the ability to send the replies to same qmgr where the reqeusts came from.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Mon Jul 09, 2012 6:38 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

You are using the real name of the queue manager in the replytoqmgr field.

There are two routes to that real name of the queue manager.
Back to top
View user's profile Send private message
girish_tharwani
PostPosted: Mon Jul 09, 2012 8:13 pm    Post subject: Reply with quote

Voyager

Joined: 01 Aug 2001
Posts: 88
Location: Pune, India

mqjeff wrote:
You are using the real name of the queue manager in the replytoqmgr field.

There are two routes to that real name of the queue manager.


Yes clear about that now.

However, still struggling for a solution. I have to put the real name of qmgr so that replies are delivered to correct qmgr and I want only one clusrcver (one path) to be used for delivery

Any suggestions?
Back to top
View user's profile Send private message
bruce2359
PostPosted: Mon Jul 09, 2012 8:52 pm    Post subject: Reply with quote

Poobah

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

To be clear, are you saying that the replying app receives multiple requests in one execution of the app?

At MOPEN for the MQPUT, does the replying application specify MQOO_BIND_ON_OPEN? Or MQOO_BIND_NOT_FIXED? Or BIND_AS_QDEF?

If BIND_AS_Q_DEF, what is the BIND queue attribute of the reply-to-queue?
_________________
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
girish_tharwani
PostPosted: Mon Jul 09, 2012 9:10 pm    Post subject: Reply with quote

Voyager

Joined: 01 Aug 2001
Posts: 88
Location: Pune, India

Its NOT_FIXED all over. Though I am not clear how that relates to problem at hand.

The challenge is that messages from QM2 to QM1 are using both clusrcvrs even though the destination queue is shared in one cluster (C1) only. Ask is to force messages from one C1 clusrcvr while still using the real replytoqmgr name QM1.
Back to top
View user's profile Send private message
exerk
PostPosted: Tue Jul 10, 2012 12:05 am    Post subject: Reply with quote

Jedi Council

Joined: 02 Nov 2006
Posts: 6339

girish_tharwani wrote:
The challenge is that messages from QM2 to QM1 are using both clusrcvrs even though the destination queue is shared in one cluster (C1) only. Ask is to force messages from one C1 clusrcvr while still using the real replytoqmgr name QM1.

As stated earlier by mqjeff:

Quote:
The target queue and target queue manager name form a unique address at the time the message is put. If the message is put to a queue manager that has more than one route to that unique address, then the message will be load-balanced across the available routes.

Maybe moving to V7.5 and its separate C.T.Qs might help separate traffic down a particular route (haven't had time to play yet, so I may be barking up the wrong tree) although I doubt cluster behaviour will have changed that much between versions, or maybe play around with channel priorities etc.
_________________
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
mqjeff
PostPosted: Tue Jul 10, 2012 4:49 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

girish_tharwani wrote:
I have to put the real name of qmgr so that replies are delivered to correct qmgr


NO.

You have to put in a unique name so that there is a unique path to the correct queue manager.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Tue Jul 10, 2012 7:54 pm    Post subject: Reply with quote

Grand High Poobah

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

girish_tharwani wrote:

However, still struggling for a solution. I have to put the real name of qmgr so that replies are delivered to correct qmgr and I want only one clusrcver (one path) to be used for delivery

Any suggestions?

Your assumption is incorrect. This is why qmgr aliases and cluster aliases do exist. Have fun.
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
bruce2359
PostPosted: Tue Jul 10, 2012 8:13 pm    Post subject: Reply with quote

Poobah

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

Search here (and google) for name resolution.
_________________
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
girish_tharwani
PostPosted: Fri Jul 13, 2012 4:18 am    Post subject: Reply with quote

Voyager

Joined: 01 Aug 2001
Posts: 88
Location: Pune, India

fjb_saper wrote:
Your assumption is incorrect. This is why qmgr aliases and cluster aliases do exist. Have fun.


I have been working on same lines for last two days but no solution yet.

Bottomline is that:

(option 1) if QM2 has target qmgr name available (either provided by responding app explicitly in MQOD.ObjectQmgrName or I supply it via a Qmgr alias), it does not bother to resolve the target queue name. It simply load balances messages to QM2 via both available routes.

However,
(option 2) when QM2 does not have target qmgr name available (ie responding app puts MQOD.ObjectQmgrName as blank), it is forced to resolve the clustered target queue name, sees that its shared only in once cluster and then "somehow" ensures that only that cluster's channel is used for transmitting the messages. But in that case, if there are multiple instance of target queue, messages are load balanced on all of them and that I do not want (because these are reply messages and I want these routed specifically to the qmgr where the request came from thus the option 1)

Option 1 may be as designed feature of WMQ but it does not seem right that even if a queue is shared explictly in one cluster only, other clusters channels are used for communication and probably that's what they are trying to improve by mulitple SCTQs of v7.5.

If I am missing something which can solve this issue, until we move to v7.5, please help.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Fri Jul 13, 2012 7:42 am    Post subject: Reply with quote

Grand High Poobah

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

What you are missing:

Create a qmgr alias that is only shared in 1 cluster.
Use the qmgr alias as the reply to qmgr.
Resolving to local qmgr is done by the qmgr alias.

Have fun
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
girish_tharwani
PostPosted: Sun Jul 15, 2012 7:48 pm    Post subject: Reply with quote

Voyager

Joined: 01 Aug 2001
Posts: 88
Location: Pune, India

fjb_saper wrote:
What you are missing:

Create a qmgr alias that is only shared in 1 cluster.
Use the qmgr alias as the reply to qmgr.
Resolving to local qmgr is done by the qmgr alias.

Have fun


Thanks fjb_saper. It should work (will try it today).

But being devil's advocate...

Typically when I design a system, I avoid asking requesting app to populate the "ReplyToQmgr" field. I let MQ fill it when the request message leaves the requestor side qmgr (QM1). This helps when requesting app is running on two nodes connecting to two qmgrs (say QM1a and QM1b). MQ populate the appropriate name without app worrying about it. To implement this alias solution, I will have to create aliases (say QM1a.C1 and QM1b.C1) and ask app to populate these. Which means app needs to have two different config files on two nodes (assuming it stores replytoqmgr info in a config file).

Though I can circumvent this problem by keeping the alias names same as qmgr names (ie QM1a and QM1b) but that may cause issues/confusions in long run. If the aliases are for specific cluster routing, I want the alias names to reflect it and I do not want these aliases to be interfering with cluster C2's functioning. Tomorrow I may want to implement something similar for C2 and at that time having cluster names embedded in alias names will simplify the naming pattern.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Sun Jul 15, 2012 8:30 pm    Post subject: Reply with quote

Poobah

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

girish_tharwani wrote:

But being devil's advocate...

I don't see you in the role of devil's advocate here. Rather, you appear to still be confused with some of the basics of name resolution.

Your design extends the usual (and simple) request-reply model. In the usual model, the app only seeds the reply-to-queue name; and the qmgr puts its own name in the reply-to-qmgr field. On the replying qmgr, there needs to be an xmitq with the same name as the requesting qmgr.

You have added an additional requirement to have explicit control of the path the reply takes back to the requesting qmgr. This is typically done with the app specifying both reply-to-q and reply-to-qmgr fields; and the reply-to-qmgr name would identify an alternate xmit queue for the return trip. This alternative qmgr name must be resolved. This resolution is typically done with a qmgr-alias.

Both of these scenarios, with sample definitions, are well-documented in the WMQ Intercommunications manual (and InfoCenter equivalent).

Use of aliases in clusters is also nicely documented in the WMQ Queue Manager Clusters manual (and InfoCenter equivalent). Look for this section title "Using aliases and remote-queue definitions with clusters"
_________________
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  Next Page 1 of 2

MQSeries.net Forum Index » Clustering » SOLVED: Overlapping cluster design issue
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.