Author |
Message
|
srivenu |
Posted: Sat Jun 28, 2003 8:25 pm Post subject: Load Balancers |
|
|
Newbie
Joined: 28 Jun 2003 Posts: 6
|
I have installed MQSeries v 5.3 on 2 Solaris 2.8 servers. I want to implement a load balancing solution for the MQSeries installed on these servers. I am using Foundry equipment for the load balancers. I have configured Foundry so messages are posted only to the primary server. Messages will be diverted to the secondary if primary fails.
This works fine and messages are only sent to the primary server. However when I was running some tests and found that if stopped the queue manager on the primary using endmqm, Foundry is not able to divert messages to the secondary since it still sees port 1414 alive and thinks the primary is up. Foundry is configured to basically look for the service on port 1414.
Can I even implement a load balancing solution for MQ Series.
Thanks
Sri |
|
Back to top |
|
 |
Michael Dag |
Posted: Sun Jun 29, 2003 12:45 am Post subject: |
|
|
 Jedi Knight
Joined: 13 Jun 2002 Posts: 2607 Location: The Netherlands (Amsterdam)
|
What is connecting to those 2 servers?
Clients or other MQ Servers?
If Clients are connecting you only need an MQ Client Channel Table with clntconn channels to both Queumanager in them and MQ will always connect to the first and then move to the second when the first is not available.
Do use *Qmgrname in your MQConn calls.
The example you gave more resembles failover instead of loadbalancing as nothing get's 'balanced' IMHO.
Michael |
|
Back to top |
|
 |
srivenu |
Posted: Sun Jun 29, 2003 5:18 am Post subject: Load Balancers |
|
|
Newbie
Joined: 28 Jun 2003 Posts: 6
|
>>What is connecting to those 2 servers?
>>Clients or other MQ Servers?
MQClients written in Java
>>If Clients are connecting you only need an MQ Client Channel Table >>with clntconn channels to both Queumanager in them and MQ will >>always connect to the first and then move to the second when the first >>is not available.
Will take a look at the MQClient Channel Table. Did not know such a thing existed
>>Do use *Qmgrname in your MQConn calls.
We have customers outside the firewall posting to queues on MQSeries and they do use queue manager name
>>The example you gave more resembles failover instead of >>loadbalancing as nothing get's 'balanced' IMHO.
I am trying to implement failover, using Foundry load balancers. The Foundry equipment can be configured for failover support. I am not looking for load balancing just failover. It just seems that the Foundry equimpent cannot recognize one of the queue managers being down. |
|
Back to top |
|
 |
Michael Dag |
Posted: Sun Jun 29, 2003 1:47 pm Post subject: |
|
|
 Jedi Knight
Joined: 13 Jun 2002 Posts: 2607 Location: The Netherlands (Amsterdam)
|
implementing a good failover you need to consider all kinds of options, so multiple scenarios are covered. Also important to know: what are your recovery times and criteria?
reading back your original post I noticed you tested failover using endmqm, but foundry still 'saw' the 1414 port listening, did you end the listener aswell using endmqlsr? this is a separate task from endmqm. |
|
Back to top |
|
 |
srivenu |
Posted: Sun Jun 29, 2003 5:08 pm Post subject: Load Balancers |
|
|
Newbie
Joined: 28 Jun 2003 Posts: 6
|
>>implementing a good failover you need to consider all kinds of options, >>so multiple scenarios are covered. Also important to know: what are >>your recovery times and criteria?
Recovery time is important, that is why I am looking at the failover scenario. However the client is coded in such a way that messages will get to the queue eventually even if the servers are down currently.
>>reading back your original post I noticed you tested failover using >>endmqm, but foundry still 'saw' the 1414 port listening, did you end the >>listener aswell using endmqlsr? this is a separate task from endmqm.
when i did a endmqlsr after i bought the queue manager down mqseries told me that there were no listeners currently. The client is posting messages via a server connection channel. I am thinking that the way it works is when mq comes up a socket binds itself to port 1414 and unbinds itself at the end. So even when mq is down the port is alive and so foundry thinks that mqseries is up. Foundry can only be configured to a port.
I am going to try the mqclient channel table. |
|
Back to top |
|
 |
mqonnet |
Posted: Sun Jun 29, 2003 6:11 pm Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
To add to the discussion thats going on, you have to bear in mind that if you issue just "endmqm" and there were any api calls in progress, then they would contiue to be processed until they are finished. So, how sure are you that you are not doing a put of a large message or something like that using your client because of which even though endmqm might have come back, in reality the processes such as the agent might still be running. Did you check to verify that "all" of the MQ processes actually stopped that related to this QM in question???
The alternative to this would be to use either "endmqm -i" or "endmqm -p".
This is just a guess, since i am not really aware of what Foundry is, what it does and how it talks to MQ.
From MQ's point of view, if the QM is down, and the listener is still up and running, the client, if any is still connected somehow to this port, would not be able to process any further MQI calls anyways. Hence there OUGHT to be some sort of check in foundry if the only way it works is to read off a port to verify if the QM is in fact running for sure.
Hope this helps.
Cheers
Kumar |
|
Back to top |
|
 |
srivenu |
Posted: Sun Jun 29, 2003 7:50 pm Post subject: Load Balancers |
|
|
Newbie
Joined: 28 Jun 2003 Posts: 6
|
Doesnt look like Java clients can use the client connection table based on what I have looked at. |
|
Back to top |
|
 |
mrlinux |
Posted: Mon Jun 30, 2003 4:30 am Post subject: |
|
|
 Grand Master
Joined: 14 Feb 2002 Posts: 1261 Location: Detroit,MI USA
|
How are you running the listener ??? If you are using inetd this is your problem the listener wont come down with the queue manager, you
need to try the runmqlsr command or start the listener from the runmqsc
interface, this way when the queue manager comes down the listener will to and the balancer then should shift over to the secondary. _________________ Jeff
IBM Certified Developer MQSeries
IBM Certified Specialist MQSeries
IBM Certified Solutions Expert MQSeries |
|
Back to top |
|
 |
srivenu |
Posted: Mon Jun 30, 2003 10:16 am Post subject: Load Balancers |
|
|
Newbie
Joined: 28 Jun 2003 Posts: 6
|
>>How are you running the listener ??? If you are using inetd this is your >>problem the listener wont come down with the queue manager, you
>>need to try the runmqlsr command or start the listener from the >>runmqsc
>>interface, this way when the queue manager comes down the listener >>will to and the balancer then should shift over to the secondary.
Works great. I tried running the listener out of the inetd process and foundry does the failover when the queue manager is down. However I had to manually end the mq listener using endmlsr -m after the queue manager is down. Also I had to manually start the mq listener after I started the queue manager from a unix command prompt like
strmqlsr -m queuemnagername -t TCP &
so it runs in the background.
Did not seem like I could start or end listener services from the runmqsc interface |
|
Back to top |
|
 |
mrlinux |
Posted: Mon Jun 30, 2003 3:38 pm Post subject: |
|
|
 Grand Master
Joined: 14 Feb 2002 Posts: 1261 Location: Detroit,MI USA
|
So what fixed it, didnt quite understand ???
2 issues
1) you may need to add nohup in front of the startmqlsr command in order for the listener to conitinue to run after you logout.
2) echo "start listener" | runmqsc QMGR_NAME
QMGR_NAME = to your queue manager name, if default queue manager it is not needed _________________ Jeff
IBM Certified Developer MQSeries
IBM Certified Specialist MQSeries
IBM Certified Solutions Expert MQSeries |
|
Back to top |
|
 |
srivenu |
Posted: Mon Jun 30, 2003 7:11 pm Post subject: Load Balancers |
|
|
Newbie
Joined: 28 Jun 2003 Posts: 6
|
>> So what fixed it, didnt quite understand ???
Pulling the listener out of the services and starting it manually helped the load balancers. Since I can manually end the listener now the load balancer detects if a particular listener is down.
Couple of questions though
1. Is there a way to start a listener when a queue manager starts automatically, without having to start it manually.
2. Can the listener be bought down when a queue manager is ended, without having to bring it down manually. |
|
Back to top |
|
 |
mrlinux |
Posted: Tue Jul 01, 2003 8:54 am Post subject: |
|
|
 Grand Master
Joined: 14 Feb 2002 Posts: 1261 Location: Detroit,MI USA
|
Answers to questons
1) I dont know of away
2) when using this command echo "start listener" | runmqsc QMGR_NAME , I believe the listener comes down with the queue manager.
I havent tested this yet. _________________ Jeff
IBM Certified Developer MQSeries
IBM Certified Specialist MQSeries
IBM Certified Solutions Expert MQSeries |
|
Back to top |
|
 |
|