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 » General IBM MQ Support » Load Balancing cluster queue/QM inhibit question

Post new topic  Reply to topic
 Load Balancing cluster queue/QM inhibit question « View previous topic :: View next topic » 
Author Message
NealM
PostPosted: Thu Dec 18, 2014 9:43 am    Post subject: Load Balancing cluster queue/QM inhibit question Reply with quote

Master

Joined: 22 Feb 2011
Posts: 230
Location: NC or Utah (depends)

We currently use a DataPower appliance for load balancing SOA web service requests between 4 WMB's, and it works great for that.
Now though we are looking at load balancing MQ message requests coming from a legacy system to these same 4 brokers. We don't see a way to involve DataPower in this, so are looking at placing the 4 broker QMs plus 1 (or 2 for HA) gateway QMs into a cluster with the broker flow input queues involved (plus matching alias queues on the gateways) becoming cluster queues and their properties set up for load balancing.
A POC looks good.

However, we have one concern to work out. At times a broker may need to be taken out of service for various reasons while its QM needs to remain up, or, rarely, a flow may be having issues on one broker. For DataPower, the former situation is quckly handled by operations and the latter is an automatic with its algorithms. Is there a Best Practice for handling these situations in a load balancing MQ cluster?
We don't want to find a buildup of MQ request messages on the QM of a down broker or broker flow.
Back to top
View user's profile Send private message
Vitor
PostPosted: Thu Dec 18, 2014 9:55 am    Post subject: Re: Load Balancing cluster queue/QM inhibit question Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

NealM wrote:
At times a broker may need to be taken out of service for various reasons while its QM needs to remain up


Why? If the broker's down, what's the rational for leaving the queue manager running?

NealM wrote:
Is there a Best Practice for handling these situations in a load balancing MQ cluster?


It's the solution you alude to in the title of this post - you put inhibit the instance of the clustered queue(s) you want not to receive requests, and enable it again when service is restored.

Clearly this is something it's highly desirable to automate through script or PCF-enabled application.

Or you can suspend the QM from the cluster. As long as there is at least 1 other valid target for the messages, the cluster workload mechanism will honour the suspension.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
NealM
PostPosted: Thu Dec 18, 2014 10:49 am    Post subject: Reply with quote

Master

Joined: 22 Feb 2011
Posts: 230
Location: NC or Utah (depends)

Thanks for the quick response Vitor.
Regarding the why of the broker QM remaining up, well, yes, there is little reason for the QM to remain up. However, we do find ourselves with the broker bringup problem, in that we heavily depend on the new embedded global cache, which can take several minutes to re-initialize. Looking at an expected rate of incoming legacy system MQ message requests of 40/sec, just relying on stopping the broker QM isn't acceptable.

But your mention of the cluster suspend (MQCMD_SUSPEND_Q_MGR_CLUSTER) and the corresponding resume appears to be ideal for our most common situation, and looks to be easily scriptable.

So that leaves the rare situation of an individual flow going haywire on one broker. Time for me to read up on events/triggers/Omegamon and see what might make sense with a buildup on a flow input queue.
Back to top
View user's profile Send private message
Vitor
PostPosted: Thu Dec 18, 2014 11:05 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

NealM wrote:
Regarding the why of the broker QM remaining up, well, yes, there is little reason for the QM to remain up. However, we do find ourselves with the broker bringup problem, in that we heavily depend on the new embedded global cache, which can take several minutes to re-initialize.


Ok, I don't see what the global cache has to do with the queue manager.

NealM wrote:
Looking at an expected rate of incoming legacy system MQ message requests of 40/sec, just relying on stopping the broker QM isn't acceptable.


Nor do I see the sense in that sentance. If you just stopped the broker's QM (which would after a brief delay cause the broker to stop) then you can rely on the fact that any messages sent to the stopped queue manager would not arrive due to the cluster channel going bye-bye. You'll get a backlog in the SCTQ and that would take a while to clear (or not if this is the last target) but I don't really understand what you're getting at here.

NealM wrote:
But your mention of the cluster suspend (MQCMD_SUSPEND_Q_MGR_CLUSTER) and the corresponding resume appears to be ideal for our most common situation, and looks to be easily scriptable.


It is.

NealM wrote:
So that leaves the rare situation of an individual flow going haywire on one broker. Time for me to read up on events/triggers/Omegamon and see what might make sense with a buildup on a flow input queue.


Doing the put inhibit I mentioned and you aluded to.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
NealM
PostPosted: Thu Dec 18, 2014 11:57 am    Post subject: Reply with quote

Master

Joined: 22 Feb 2011
Posts: 230
Location: NC or Utah (depends)

Regarding global cache, no, no effect on the queue manager. But, think of this situation:
When you start up a broker you must also start up its queue manger (pre-IIBv10 anyway). So the QM comes up and, without a QM cluster suspend in place, its cluster queues become available for the legacy system to again put request messages on. An important point that I left out above is that the legacy system needs a reply returned within 7 seconds.
In the meantime, the broker is starting up, with global cache rebuilding containers, catalog servers, etc, and refreshing content from the other brokers (common GC policy file). On a good day that takes close to 120 seconds on our zLinux brokers.
So, 1/4 x 40 x (120 -7) = 1130 failed (expired) messsages.
Since our Operations already know how to check for global cache being operational before adding the broker back to DataPower, adding a QCMD_RESUME_Q_MGR_CLUSTER at that point will be simple enough.

Thanks again
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Thu Dec 18, 2014 4:19 pm    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7717

NealM wrote:

So that leaves the rare situation of an individual flow going haywire on one broker. Time for me to read up on events/triggers/Omegamon and see what might make sense with a buildup on a flow input queue.


NealM,
Take a look at amqsclm.
http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q024620_.htm


Also, when it comes to suspending a QM from the cluster, the other QMs are only advised to avoid sending to this QM is possible. If the suspended QM hosts the only reachable instance of the queue, it will get the message. Likewise, if the sending app specifically addresses an instance of the queue on the suspended QM, the message will still go to the suspended QM.
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
NealM
PostPosted: Thu Dec 18, 2014 5:26 pm    Post subject: Reply with quote

Master

Joined: 22 Feb 2011
Posts: 230
Location: NC or Utah (depends)

Hey Peter, long time! (4 years since our last clustering discussion)
And thanks! At first blush the AMQSCLM sample program looks like it is exactly what we need for the case of individual message flow problems.

Regarding our cluster setup:

    Each broker will have exactly the same flows deployed.
    Each cluster input queue involved will have the same properties for load balancing
    The gateway QM(s) will have only alias queues, and the full repository.
    The legacy app will only be sending messages to the gateway QM

...so the only (extremely unlikely) problem that I forsee would be if only 1 broker is up and one of its cluster-involved flows burps. But of course we will test the heck out of this setup before it ever heads to production.
Back to top
View user's profile Send private message
JosephGramig
PostPosted: Mon Dec 29, 2014 6:44 am    Post subject: Reply with quote

Grand Master

Joined: 09 Feb 2006
Posts: 1230
Location: Gold Coast of Florida, USA

NealM,

I would not use inhibit of the cluster queue to control the flow of msgs to it. If, like you say, there is a stream of msgs being sent to it, then most likely between the time you inhibit the queue and the channel sends a batch of msgs that batch will go to the DLQ because the queue is inhibited.

I hit that before, so it will happen. Suspending the Qmgr or removing the object from the cluster is the way to go.
Back to top
View user's profile Send private message AIM Address
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » General IBM MQ Support » Load Balancing cluster queue/QM inhibit question
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.