Author |
Message
|
MQS |
Posted: Mon Mar 04, 2002 3:05 pm Post subject: |
|
|
Newbie
Joined: 12 Feb 2002 Posts: 7
|
I desperately need some help on clustering. I have set up two queue managers with identical queue names in two different servers and created a cluster from them. Now if i want to send a message from a client to a queue in the cluster, how do I achieve that? I have tried coping the client connection table from the server to the client but that did not work.
Secondly, if one of the server is down will the messages automatically get delivered to the other server that is up and running. |
|
Back to top |
|
 |
mqonnet |
Posted: Mon Mar 04, 2002 5:31 pm Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
That is the very essense of having Clusters. In the event of failure of one of the repositories, the other takes over the whole show. And thus in the case of your first QM going down, the other one takes over all the processing.
As for accessing the queue is concerned. You should be able to connect to only one qm and able to put messages on the queue. If this queue is present on both the Qm's with the same name, then MQ puts the messages using round robin mechanism to the queues. And which queue is chosen depends on which one comes first in the round robin.
Hope this helps.
Not quite sure what you mean by trying to connect using client without luck. If the above info does not suffice your queries, you need to supply more info as to what you were trying to do and where it is going wrong.
Cheers.
kumar
_________________ IBM Certified WebSphere MQ V5.3 Developer
IBM Certified WebSphere MQ V5.3 Solution Designer
IBM Certified WebSphere MQ V5.3 System Administrator |
|
Back to top |
|
 |
MQS |
Posted: Wed Mar 06, 2002 9:00 am Post subject: |
|
|
Newbie
Joined: 12 Feb 2002 Posts: 7
|
Kumar thank you for the inputs. Let me explain my problem in detail.
Created two queue managers QM1 on Server 1 and QM2 on Server 2
Created a cluster out of the two queue managers.
Created three Queues Q1, Q2, Q3 on both the queue managers.
Copied the client connection table from the server from which I created the cluster to a client machine.
I am not able to put message on to the servers from the client by referencing to the client connection table.
I am not sure where I am going wrong. Please respond.
Thanks
|
|
Back to top |
|
 |
mqonnet |
Posted: Wed Mar 06, 2002 9:22 am Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
As per my understanding i believe you need to add a Channel definition from the client, or you need to add the Svrconn channel on the server. I have not used channel def tabels much, so cannot comment definitely.
But you could as well use the MQSERVER variable, instead, you have to define the Svrconn channel on only one of the Servers and you should be able to access the queues defined on both systems, on a round robin fashion.
Refer to "clients" section in the IBM Manuals.
Hope this helps.
Cheers.
Kumar
_________________ IBM Certified WebSphere MQ V5.3 Developer
IBM Certified WebSphere MQ V5.3 Solution Designer
IBM Certified WebSphere MQ V5.3 System Administrator |
|
Back to top |
|
 |
MQS |
Posted: Wed Mar 06, 2002 10:01 am Post subject: |
|
|
Newbie
Joined: 12 Feb 2002 Posts: 7
|
Kumar,
If go by using the MQ Variable and define the svrconn channel, what will happen to the messages if that server is down. Will the messages automatically get routed to the other server in the cluster.
Thanks |
|
Back to top |
|
 |
mqonnet |
Posted: Wed Mar 06, 2002 10:36 am Post subject: |
|
|
 Grand Master
Joined: 18 Feb 2002 Posts: 1114 Location: Boston, Ma, Usa.
|
Yes it will. The server is always hidden from the application programmers perspective. And he/she is never known about the status of the server until both servers(assuming that there are only 2 of them and both full repositories) go down.
Cheers.
Kumar
_________________ IBM Certified WebSphere MQ V5.3 Developer
IBM Certified WebSphere MQ V5.3 Solution Designer
IBM Certified WebSphere MQ V5.3 System Administrator |
|
Back to top |
|
 |
EddieA |
Posted: Wed Mar 06, 2002 1:11 pm Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
The issue of connecting to the Server and Clustering are COMPLETELY independent of each other.
If you use the MQSERVER variable to connect to a Server (or code the values in your program), then THAT is the server you will connect to. If it is down, then you cannot connect.
If you wish to have the client connect to a Server, but 'fail over' to a second Server if the first is down, then you need to use the Client table.
Neither of the above is changed if the Servers are part of a Cluter or not.
Next, clustering. In the scenario you have described, once the client connects to a Server, QM1 or QM2, then ALL the messages put to the queues Q1, Q2, or Q3 will go to the queues ON THAT SERVER. Why, because a local copy exists.
If you wish to load balance the messages between the queues on QM1 and QM2, then you need to define a 3rd Queue Manager, QM3, that is part of the cluster, but DOES NOT have any of Q1, Q2, or Q3 defined. Then connect your client to QM3. When you put a message to either Q1, Q2, or Q3, then MQ will round-robin the messages between QM1 and QM2. (Assuming that all the BIND options are correctly set).
Cheers,
_________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
MQS |
Posted: Fri Mar 08, 2002 9:05 am Post subject: |
|
|
Newbie
Joined: 12 Feb 2002 Posts: 7
|
Thank you very much for your suggestion. I still have some unresolved question with the cluster setup. Let me first explain how i have setup my cluster.
Two Servers Server1 and Server2
Four Queue Managers - QM1 & QM3 on Server1 and QM2 & QM4 on Server2
Created a cluster first with QM3 & QM4 and both hold full repositories.
Then added QM1 to the cluster from Server1 and QM2 to the cluster from Server2.
Created Identical Queues in both QM1 & QM2.
Copied the client connection table of QM3 which has connection of QM4 to my local client machine.
Now if i try to put messages to the cluster. MQ puts messages only to the queues in QM1, it does not do a round robbin and put messages to the queues in both QM1 & QM2.
I am not sure where i am going wrong , please help.
Thanks
|
|
Back to top |
|
 |
EddieA |
Posted: Fri Mar 08, 2002 3:08 pm Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
When you say it puts all messages to QM1, is that from a single execution of your client program, or multiple executions.
If it's from a single execution, then this could be down to the options for the Queue and you Open options.
The default Open option is MQOO_BIND_AS_Q_DEF.
The default Queue property is DEFBIND(OPEN).
This means that once you Open a Cluster Queue, all MQPUTs to that queue will go to the same instance.
If it's from different executions of your client program, then I would make sure that you really are connecting to either QM3 or QM4 (and NOT QM1). Also confirm that there are no communication problems between the QM you connect to and QM2.
Cheers,
_________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
MQS |
Posted: Mon Mar 11, 2002 11:59 am Post subject: |
|
|
Newbie
Joined: 12 Feb 2002 Posts: 7
|
Eddie,
Thankyou very much for your help. I finally got the cluster working.
Regards
MQS |
|
Back to top |
|
 |
|