Author |
Message
|
maja |
Posted: Tue Sep 25, 2007 9:29 am Post subject: MQ Client Connection Load Balancing Using F5 BigIP |
|
|
Apprentice
Joined: 13 Jun 2006 Posts: 30
|
Hi,
Is it possible to use the F5 BigIP for client connections load balancing.
If yes how does it work?
Please advise.
Maja. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Sep 25, 2007 9:35 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
It's possible to use a network load balancer to load balance MQ client connections.
I don't know about F5 particularly.
You need to ensure that the MQ client is not dependent on connecting to a *particular* queue manager by a *particular* name.
It's relatively straight forward to do this with a client connection table. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
maja |
Posted: Tue Sep 25, 2007 9:57 am Post subject: |
|
|
Apprentice
Joined: 13 Jun 2006 Posts: 30
|
Thanks Jerry,
We were using the Channel tab till now.
The problem we face is that it connects to primary and only on failure to the secondary. It does not help to load balance the users.
So F5 was suggested.
How does a client connect to Server through F5. Is it any different form the regular client connections.
Please advise.
thanks,
Maja. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Sep 25, 2007 10:06 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Network load balancers work at the network level.
You will need to adjust the client connection channels to point to the virtual IP address.
And, again, make sure that the client app doesn't rely on the queue manager name. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
maja |
Posted: Tue Sep 25, 2007 10:20 am Post subject: |
|
|
Apprentice
Joined: 13 Jun 2006 Posts: 30
|
Thanks Jeff.
So I should modify the Channel tab to use the virtual Ip as primary...and use the Queuemanager* to connect to queue manager. Rest I should continue ot connect to Server as general.Do I need to do anything more.
What should I read that will give me more information about this.
please advise.
Thanks,
Maja. |
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Sep 25, 2007 11:10 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
You need to determine what you want to achieve. Is it client load balancing or client failover?
Both have different ways to be achieved...
Load balancing can be achieved through a virtual IP and redirecting the connection with some specific rules... all at Network level.
You can also choose to have multiple different client channel tables that you distribute across the clients.
Client failover is typically achieved by the client channel table...
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Sep 25, 2007 11:11 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
I don't know of anything per se that specifically discusses this aspect of WMQ architecture.
The intercommunications manual has some discussion, maybe. The clients manual talks about the client channel table, and I think it has some discussion on designing apps to not know the qmgr name. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
sebastia |
Posted: Tue Sep 25, 2007 1:13 pm Post subject: |
|
|
 Grand Master
Joined: 07 Oct 2004 Posts: 1003
|
mr Jeff, mr Saper :
If the Client Channel tables have "blank" at QmgrName
then we have said the table will be searched
in ALPHABETICAL order of the channel names
(couldn't find any paper to say that,
but if "grand masters" say it,
so I trust)
Then, I dont understand the option to
"choose to have multiple different client channel tables
that you distribute across the clients"
If the first queue manager is "alive", all the clients will wait there
and NEVER use the second in the table.
Am I right ?
Is the 2-nd channel in the CCDT use "ONLY" on "2059" Ret Code ?
Because that is not what we expected from CCDT ...
Anyway, thanks a lot. Sebastian. |
|
Back to top |
|
 |
maja |
Posted: Tue Sep 25, 2007 1:14 pm Post subject: |
|
|
Apprentice
Joined: 13 Jun 2006 Posts: 30
|
Thanks Jeff and Saper for the inputs.
Saper,
We currently use the Channel tables for clients. It provides us the Failover but it does not provide us the Load balancing. So we do exactly as you told, we have few sets of Channel tables which help in load balancing. But htis leads to some distribution issues.
So we thought if we could utilise teh F5 for load balancing it would help. I thought maybe the F5 could load balance by spraying to various Servers and if one of the servers is down , then send the requests to the available server. So analysing the approach. But not very clear how to go about it.
Any advise from you experts is welcome.
Please advise.
Thanks,
Maja. |
|
Back to top |
|
 |
maja |
Posted: Wed Sep 26, 2007 8:01 am Post subject: |
|
|
Apprentice
Joined: 13 Jun 2006 Posts: 30
|
Masters , please advise.
Thanks,
Maja. |
|
Back to top |
|
 |
Vitor |
Posted: Wed Sep 26, 2007 8:09 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
jefflowrey wrote: |
Network load balancers work at the network level.
You will need to adjust the client connection channels to point to the virtual IP address.
And, again, make sure that the client app doesn't rely on the queue manager name. |
Sound advice. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
maja |
Posted: Wed Sep 26, 2007 8:23 am Post subject: |
|
|
Apprentice
Joined: 13 Jun 2006 Posts: 30
|
Vitor,
I agree.
I am a bit new ot the F5 concept, so not clear how it would fit into the MQ architechture. Trying to highlight the same and get some inputs form you masters regarding any possible issues that could occur with the F5 usage, and the suitability of the same.
So per that advise :
I should use the IP address of the Load Balancer for Machine Ip for client connection.. and as an assumption if Queue manager names on the 2 boxes are QM1 and QM2, I could use QM* in connection. Would that be it?
Please advise.
Thanks,
Maja. |
|
Back to top |
|
 |
hilltops |
Posted: Wed Sep 26, 2007 2:49 pm Post subject: |
|
|
Centurion
Joined: 01 Mar 2006 Posts: 112
|
I have used a load balancer called GSS from Cisco to distribute load from MQ clients to various front-end queue managers. The only snag I found with this product is that it is configured to routinely send probe messages to the queue manager listener port to test if the queue managers are responsive. Because these probe messages are not in MQ-speak, the queue managers response by issuing errors in the logs. The performance and functioning of the queue manager is not in any way disrupted/interrupted by these probe messages. But it is annoying to have these errors in the logs every few second. I could never find a workaround this issue. If you can tolerate these errors, then this is an acceptable solution.
GSS can be configures to distribute the IP traffic from your MQ client in a round-robin fashion to your front-end queue managers. |
|
Back to top |
|
 |
maja |
Posted: Wed Sep 26, 2007 2:56 pm Post subject: |
|
|
Apprentice
Joined: 13 Jun 2006 Posts: 30
|
Thanks for your inputs Hilltops.
So when you connect to the Queue Manager you provide teh Virtual Ip or IP of the load Balancer ? Is that all the changes we need to do on the client connection end?
The errors in Errorlog, I will check regarding the same, but as long as performance is not affected , I suppose I should be fine with the entries.
Please provide some more inputs about the client connection.
Thanks,
Maja. |
|
Back to top |
|
 |
hilltops |
Posted: Wed Sep 26, 2007 3:06 pm Post subject: |
|
|
Centurion
Joined: 01 Mar 2006 Posts: 112
|
Maja,
Yes, you are right in saying the the CLNTCONN is built with the IP of the load-balancer of the. That way, the connections from the application end targets the LB, which in turns targets the various queue managers it has been configured to point to. So in that case, your channels definitions would look something like this:
DEF CHANNEL(MYCHANNEL) CHLTYPE(CLNTCONN) TRPTYPE(TCP) +
CONNAME('LOADBALANCERIP(12000)')
DEF CHANNEL(MYCHANNEL) CHLTYPE(SVRCONN) TRPTYPE(TCP)
Your queue managers would have listeners on port 12000.
Hope that helps |
|
Back to top |
|
 |
|