Author |
Message
|
andrewfemin |
Posted: Thu May 03, 2018 1:05 am Post subject: Round Robin in Cluster |
|
|
 Acolyte
Joined: 26 Aug 2017 Posts: 54
|
Hi,
We have a full repository queue manager which acts as the gateway queue manager. It does not have any local queues. Two partial repository queue manager with identical set of clustered queues connect to the gateway queue manager. The idea is that messages are always sent to the gateway queue manager from outside applications or queue managers and when two messages are sent to a particular queue in the gateway server, the first one gets routed to the queue in one partial repository while the second one goes to the queue in other partial repository, hence achieving load balancing.
While this round robin routing is working perfectly when I put messages to the gateway queue manager using amqsput, it is not working when I put messages using RFHUtil. All the messages put using RFHUtil go to the same queue manager instead of being round robined. Is this expected behaviour? Or is there any QM parameter that needs to be altered for the messages put in using server connection channels also to be round robined? |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu May 03, 2018 2:30 am Post subject: Re: Round Robin in Cluster |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
andrewfemin wrote: |
Hi,
We have a full repository queue manager which acts as the gateway queue manager. It does not have any local queues. Two partial repository queue manager with identical set of clustered queues connect to the gateway queue manager. The idea is that messages are always sent to the gateway queue manager from outside applications or queue managers and when two messages are sent to a particular queue in the gateway server, the first one gets routed to the queue in one partial repository while the second one goes to the queue in other partial repository, hence achieving load balancing.
While this round robin routing is working perfectly when I put messages to the gateway queue manager using amqsput, it is not working when I put messages using RFHUtil. All the messages put using RFHUtil go to the same queue manager instead of being round robined. Is this expected behaviour? Or is there any QM parameter that needs to be altered for the messages put in using server connection channels also to be round robined? |
You need to use one of the switches on the RFHUtil panels (don't remember which one you'll have to go hunting). You need to make sure of your open options for the queue: not fixed is the value you're looking for...  _________________ MQ & Broker admin |
|
Back to top |
|
 |
bruce2359 |
Posted: Thu May 03, 2018 4:53 am Post subject: Re: Round Robin in Cluster |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
fjb_saper wrote: |
You need to make sure of your open options for the queue: not fixed is the value you're looking for...  |
These are two very different applications, each written with its set of default behaviors.
With MQ cluster-queues, the app can specify whether to BIND_ON_OPEN to one instance of the cluster-queue, or to BIND_NOT_FIXED to any instance of the cluster-queue. There are other open options, along with queue attribute values involved. Read this: https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q027030_.htm _________________ 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 |
|
 |
gbaddeley |
Posted: Thu May 03, 2018 3:46 pm Post subject: Re: Round Robin in Cluster |
|
|
 Jedi Knight
Joined: 25 Mar 2003 Posts: 2538 Location: Melbourne, Australia
|
andrewfemin wrote: |
Hi,
We have a full repository queue manager which acts as the gateway queue manager. |
Generally FR qmgrs should not be doing any messaging, they should only exist to provide MQ's internal cluster update services. You should have exactly 2 FR's for each MQ cluster. Its acceptable for a qmgr to be a FR for multiple clusters.
andrewfemin wrote: |
It does not have any local queues. Two partial repository queue manager with identical set of clustered queues connect to the gateway queue manager. The idea is that messages are always sent to the gateway queue manager from outside applications or queue managers and when two messages are sent to a particular queue in the gateway server, the first one gets routed to the queue in one partial repository while the second one goes to the queue in other partial repository, hence achieving load balancing.
|
By "gateway", do you mean the "outside applications" and "outside queue managers" are outside the enterprise internal network, or outside of the MQ cluster? _________________ Glenn |
|
Back to top |
|
 |
andrewfemin |
Posted: Sun May 06, 2018 9:01 pm Post subject: Re: Round Robin in Cluster |
|
|
 Acolyte
Joined: 26 Aug 2017 Posts: 54
|
fjb_saper wrote: |
You need to use one of the switches on the RFHUtil panels (don't remember which one you'll have to go hunting). You need to make sure of your open options for the queue: not fixed is the value you're looking for...  |
Found this in RFHUtil and changed it to Not Fixed. Also, the DEFBIND property of the local queues in both partial repositories were OPEN and I changed them to NOTFIXED as well. The messages are still going to the same queue manager. Does it require a QM restart for the changes to take effect or any other changes to be made?
 |
|
Back to top |
|
 |
bruce2359 |
Posted: Mon May 07, 2018 4:18 am Post subject: Re: Round Robin in Cluster |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
andrewfemin wrote: |
While this round robin routing is working perfectly when I put messages to the gateway queue manager using amqsput, it is not working when I put messages using RFHUtil. All the messages put using RFHUtil go to the same queue manager instead of being round robined. Is this expected behaviour? Or is there any QM parameter that needs to be altered for the messages put in using server connection channels also to be round robined? |
Did you specify both the queue-name and target-queue-manager-name when testing with rfhutil?
Re-run your amqsput test with target-queue-manager (5th parameter). Read this documentation on running amqsput and amqsputc: https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.dev.doc/q024270_.htm
The point: if the app explicitly specifies the target-queue-manager in the MQOD (object definition), then messages will only go to the that queue-manager. _________________ 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.
Last edited by bruce2359 on Mon May 07, 2018 12:30 pm; edited 1 time in total |
|
Back to top |
|
 |
bruce2359 |
Posted: Mon May 07, 2018 12:26 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
Moved to Clustering forum _________________ 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 |
|
 |
andrewfemin |
Posted: Mon May 07, 2018 9:10 pm Post subject: |
|
|
 Acolyte
Joined: 26 Aug 2017 Posts: 54
|
I haven't specified the queue manager name in RFHUtil. I've specified only the queue name. |
|
Back to top |
|
 |
fjb_saper |
Posted: Tue May 08, 2018 1:59 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
andrewfemin wrote: |
I haven't specified the queue manager name in RFHUtil. I've specified only the queue name. |
Doesn't matter much if the queue is local to the queue manager and the cluster distribution attribute for the queue (or the queue manager) is not any...  _________________ MQ & Broker admin |
|
Back to top |
|
 |
andrewfemin |
Posted: Tue May 08, 2018 2:20 am Post subject: |
|
|
 Acolyte
Joined: 26 Aug 2017 Posts: 54
|
Well. My queue is cluster queue and not local to the queue manager.
Let's say I have QM1, QM2 and QM3. QM1 is the full repository while QM2 and QM3 are partial repositories. QM2 and QM3 have local queues Q1(same queue name in both queue managers) which are shared in the cluster with QM1. I'm sending 2 messages to queue manager QM1 and queue Q1 using RFHUtil. I would expect the first message to go to Q1 in QM2 and the second message to go to Q1 in QM3. But this is not happening. Both the messages are going to Q1 in QM2. |
|
Back to top |
|
 |
exerk |
Posted: Tue May 08, 2018 2:40 am Post subject: |
|
|
 Jedi Council
Joined: 02 Nov 2006 Posts: 6339
|
I'm going to ask the obvious question - before making your changes in RFHUtil, did you first close the queue? _________________ 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 |
|
 |
mvic |
Posted: Tue May 08, 2018 2:42 am Post subject: |
|
|
 Jedi
Joined: 09 Mar 2004 Posts: 2080
|
It is possible (but not easy) to have a look at what decision logic MQ is applying, if you capture the situation in an MQ trace. (-t all -t detail). Format the trace (if this is Linux etc.) and search the .FMT files for rfiChooseOne. The decision logic is traced out somewhere near there. |
|
Back to top |
|
 |
exerk |
Posted: Tue May 08, 2018 2:52 am Post subject: |
|
|
 Jedi Council
Joined: 02 Nov 2006 Posts: 6339
|
To clarify, as the OPs issue may have been lost in the clutter:
1. The OP connects to a GATEWAY queue manager to put the messages;
2. The GATEWAY queue manager DOES NOT host the queues, which are in two other queue managers;
3. Using amqsput, the load-balancing works 'as advertised';
4. Using RHFUtil, the load-balancing did not work;
5. The OP changed the target queue instances to DEFBIND(NOTFIXED), and also specified the same in RFHUtil.
So there are two issues here:
1. Why did load-balancing occur when the queues were specified as DEFBIND(OPEN) ?
2. Why is it not working now that they are specified as DEFBIND(NOTFIXED) ?
OP, if I have made a mistake anywhere above, please correct me; thank you. _________________ 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 |
|
 |
andrewfemin |
Posted: Wed May 23, 2018 12:30 am Post subject: |
|
|
 Acolyte
Joined: 26 Aug 2017 Posts: 54
|
exerk wrote: |
To clarify, as the OPs issue may have been lost in the clutter:
1. The OP connects to a GATEWAY queue manager to put the messages;
2. The GATEWAY queue manager DOES NOT host the queues, which are in two other queue managers;
3. Using amqsput, the load-balancing works 'as advertised';
4. Using RHFUtil, the load-balancing did not work;
5. The OP changed the target queue instances to DEFBIND(NOTFIXED), and also specified the same in RFHUtil.
So there are two issues here:
1. Why did load-balancing occur when the queues were specified as DEFBIND(OPEN) ?
2. Why is it not working now that they are specified as DEFBIND(NOTFIXED) ?
OP, if I have made a mistake anywhere above, please correct me; thank you. |
Thanks exerk. This is exactly what I was trying to convey.
exerk wrote: |
I'm going to ask the obvious question - before making your changes in RFHUtil, did you first close the queue? |
Thanks again. I noticed that I wasn't closing the queue each time while using RFHUtil. I see that after sending each message, if I click on MQClose in RFHUtil, the messages are being round robined and load balancing is working as advertised. Earlier, I was under the impression that RFHUtil closes the connection in the background after each message.
So the only puzzle that remains is this:
exerk wrote: |
1. Why did load-balancing occur when the queues were specified as DEFBIND(OPEN)? |
Thanks everyone for all the help so far. My requirement is to have the load balancing working using RFHUtil and it is working now thanks to your help. |
|
Back to top |
|
 |
|