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 » Clustering » Problem with WIN2k Clustering

Post new topic  Reply to topic
 Problem with WIN2k Clustering « View previous topic :: View next topic » 
Author Message
cvrachak
PostPosted: Sat Jul 06, 2002 3:26 pm    Post subject: Problem with WIN2k Clustering Reply with quote

Novice

Joined: 06 Jul 2002
Posts: 17

Hi,

I have a problem while connecting a remote Queue to a Clustered Environment.

The configuration details are as follows

working on MQ series Version 5.2 on WIN2k Platform.

Cluster named QMC has two servers

Server1

QM1 Primary Repository
QM2 has a queue named QMQ (default Bind type is NOT FIXED)

Server2

QM3 Secondary Repository
QM4 has a queue named QMQ (default Bind type is NOT FIXED)

QMQ are shared as Clustered queues.

within the MQ Series explorer I am able to put messages to these queues from QM1 or QM3. It is even doing Load balancing too.

I am unable to submit a message from the the Remote Queue Manager QMR who has to submit some messages onto the Clustered environment.

QMR uses the Remote Queue, Transmission Queue, Sender and Reciever Channels to Server1/2 Server. In the Remote Queue, if I specify that the 'Remote Queue Name' as QMQ and 'Remote Queue Manager Name' as QM1, I am unable to post the message. But If I change the value of 'Remote Queue Manager Name' to QM2 or QM4 it cooly submits the message. Am I doing anything wrong here or missing anything???But why should the outside world know who is hosting the Queue?

But practically, I should be able to submit the message onto QMQ on QM1 and let Cluster do the load balanching.. why is it not hapenning.

I have set the default Bind of Remote and Transmission Queue on QMR to Not Fixed too. But still not of help.. can anyone help me ?

Thanks
Chandra Sekhar
Back to top
View user's profile Send private message
nimconsult
PostPosted: Sun Jul 07, 2002 11:06 pm    Post subject: Reply with quote

Master

Joined: 22 May 2002
Posts: 268
Location: NIMCONSULT - Belgium

Hi,

The solution is simple:

In your cluster queue manager, define an empty queue manager alias:

Code:
define qremote(QMC)


(you can replace QMC by any other name, I just used your cluster name for conveniance)

Outside the cluster (in your case queue manager QMR), define the remote queue with target queue manager QMC (the queue manager alias defined previously):

Code:
define qremote(QMQ) rname(QMQ) rqmname(QMC) xmitq(XQ.QM1)


The difference is:
- if you specify QM1 as target queue manager MQ Series will attempt to find a local queue, which does not exist (hence the message goes in dead-letter queue).
- if you specify a target queue manager alias, which itself resolves to an empty queue manager name, MQ Series will attempt to resolve the queue either locally or inside the cluster. This is the trick.

Tell me if this works. Regards,
_________________
Nicolas Maréchal
Senior Architect - Partner

NIMCONSULT Software Architecture Services (Belgium)
http://www.nimconsult.be


Last edited by nimconsult on Mon Jul 08, 2002 2:27 am; edited 2 times in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website
oz1ccg
PostPosted: Mon Jul 08, 2002 12:22 am    Post subject: Reply with quote

Yatiri

Joined: 10 Feb 2002
Posts: 628
Location: Denmark

Hi folks,

I've have discussed this topic many times many places, the solution is pretty easy (we we have found it..) It's even in the doc.

Take a look on the link below.
http://www.webmq.com/phpBB2/viewtopic.php?p=9178#9178

Just my $0.02
_________________
Regards, Jørgen
Home of BlockIP2, the last free MQ Security exit ver. 3.00
Cert. on WMQ, WBIMB, SWIFT.
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
cvrachak
PostPosted: Mon Jul 08, 2002 11:47 am    Post subject: Reply with quote

Novice

Joined: 06 Jul 2002
Posts: 17

Thanks for the information,

It worked for me.

I have another related question,

Now the remote queue manager alias is defined on the primary repository. The outside QMGR's sender channel is pointing to the IP address of primary repository. In this case, if pimary repository goes down, how to achieve failover? Can the secondary repository take over?

Thanks again for the information
Chandra Sekhar
Back to top
View user's profile Send private message
nimconsult
PostPosted: Mon Jul 08, 2002 10:19 pm    Post subject: Reply with quote

Master

Joined: 22 May 2002
Posts: 268
Location: NIMCONSULT - Belgium

Chandra,

In case of failure of the repository:
- the second full repository takes over in term of keeping knowledge of the cluster topology;
- there is however no failover for the sender-receiver channels. They are by definition point-to-point connection. If one point fails, the connection fails.

There are different answers to your question on failover:
(1) In case of failure of the repository, the messages will not be lost but simply piled up in the transmission queue. The only requirement is to size the transmission queue correctly. If you can restart the queue manager within an acceptable service level for your application, then as soon as the queue manager restarts, the message will flow into the cluster and your server application will process the backlog of messages.
(2) If the first solution is not acceptable then you need to implement a solution to switch to an alternative route in case of failure. Possible implementations:
- post your messages into an alternate remote queue that uses a different route. This has an impact on your client application.
- define two different point-to-point channels on the same transmission queue and implement a flip-flop procedure. If the first cluster queue manager fails, the sender channels goes in the state "retrying". Stop the channel and start the alternative one.
(3) You can ask yourself the question of putting the queue manager QMR inside the cluster, which eliminates the need of defining point-to-point channels and implementing manual failover solutions.
_________________
Nicolas Maréchal
Senior Architect - Partner

NIMCONSULT Software Architecture Services (Belgium)
http://www.nimconsult.be
Back to top
View user's profile Send private message Send e-mail Visit poster's website
oz1ccg
PostPosted: Tue Jul 09, 2002 3:23 am    Post subject: Reply with quote

Yatiri

Joined: 10 Feb 2002
Posts: 628
Location: Denmark

Another fail toolerant solution is haveing 2 sets of channels..
One set to the primary qmgr, and one set to the secondary, configured in this way:

from outside cluster sharing XMITQ, without retry on the sender channel, and timeout=0, this means that the channel always runs. If it goes down your automations system could catch this failure and the try start the backup channel (this is possible because the primary sender is closed.
IT WORKS, but not pretty.

Another approach could be using two or more clusters: You have your QMC cluster. you can connect more clusters to this, so that each "normal qmgr" is a cluster, this gives you the failover posibillity, like shown below:

Code:

+----------------+  +----------------+  +----------------+
!   QM7(QM7C)    !  !    QM8(QM8C)   !  !    QM9(QM9C)   !
+----------------+  +----------------+  +----------------+
         !                  !                  !
         +-------------------------------------+
         !                  !
+----------------+  +----------------+
!   QM1(QMC)     !  !      QM3(QMC)  !
+----------------+  +----------------+
         !                  !
+----------------+  +----------------+
!   QM2(QMC)     !  !     QM4(QMC)   !
+----------------+  +----------------+


Yes, you might say it's a bit overkilling, but it works; yes it requires a bit of administration on QM1 and QM3, because it requires that the QMC queues are published, on the gateway MQ's.

I my firm we're running a similar setup, and it works fine.

Just my $0.02
_________________
Regards, Jørgen
Home of BlockIP2, the last free MQ Security exit ver. 3.00
Cert. on WMQ, WBIMB, SWIFT.
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
cvrachak
PostPosted: Tue Jul 09, 2002 2:58 pm    Post subject: Reply with quote

Novice

Joined: 06 Jul 2002
Posts: 17

Thanks for the suggestions.

I think putting the remote Queue Manager as part of the cluster is a good solution,

I didn't understand how is the clustering done in the example below, can you please explain it more clearly.

QM7, QM8 and QM9 in thier own clusters and how is it talking to QMC??

Thanks In Advance
Chandra Sekhar
Back to top
View user's profile Send private message
oz1ccg
PostPosted: Wed Jul 10, 2002 12:27 am    Post subject: Reply with quote

Yatiri

Joined: 10 Feb 2002
Posts: 628
Location: Denmark

You could have the remote qmgr in it's own cluster, that was what I was trying to tell.

QM7-QM9 have their own clusters (with only one qmgr each), that is what the illustration should tell.

In Queue Manager Clusters manual ch9 task 8, there are a description of how to do it (interconnected cluster).

I think it would be a good idea haveing all repositories on QM1/QM3 as today, using namelists as described in the doc instead of having them spread. Before any other wakes up, ther might be some security tasks to take a look on, there have been some discusions on that topic, or take a look in the Cluster manual ch. 8. (Keeping clusters secure).

I've got both configurations running, and it works fine.

Just my $0.02
_________________
Regards, Jørgen
Home of BlockIP2, the last free MQ Security exit ver. 3.00
Cert. on WMQ, WBIMB, SWIFT.
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
nimconsult
PostPosted: Wed Jul 10, 2002 2:51 am    Post subject: Reply with quote

Master

Joined: 22 May 2002
Posts: 268
Location: NIMCONSULT - Belgium

My interpretation of Jorgen's answer is that:

QM7C includes QM7, QM1, QM3
QM8C includes QM8, QM1, QM3
QM9C includes QM9, QM1, QM3

(the clusters do not include only one qmgr as mentionned, but 3 in fact)

QM1 & QM3 hold the repositories of QMC and QM7-9C.

The queues of the cluster QMC must be also advertised in the clusters QM7-9C, both in QM1 and QM3.

This solution requires more administration but has the advantage of offering automatic fail-over as proposed built-in by MQ Series.
_________________
Nicolas Maréchal
Senior Architect - Partner

NIMCONSULT Software Architecture Services (Belgium)
http://www.nimconsult.be
Back to top
View user's profile Send private message Send e-mail Visit poster's website
oz1ccg
PostPosted: Fri Jul 12, 2002 2:15 am    Post subject: Reply with quote

Yatiri

Joined: 10 Feb 2002
Posts: 628
Location: Denmark

Well Nicolas,
You've got a point saying:
Quote:
My interpretation of Jorgen's answer is that:

QM7C includes QM7, QM1, QM3
QM8C includes QM8, QM1, QM3
QM9C includes QM9, QM1, QM3

(the clusters do not include only one qmgr as mentionned, but 3 in fact)


So on QM1 and QM3 create a NAMELIST:
DEFINE NAMELIST(BIGCLUSTER) DESCR('List of cluster names') +
NAMES(QMC, QM7C, QM8C, QM9C)

Then alter QMGR REPOS(' ') REPOSNL(BIGCLUSTER) on QM1 & QM3.

Then alter CLUSRCVR to use the CLUSNL(BIGCLUSTER) CLUSTER(' ') on QM1 and QM3
Then alter CLUSSDR to use the CLUSNL(BIGCLUSTER) CLUSTER(' ') on QM1 and QM3 as in the stanza example below

when this is done, QM1 and QM3 will now host the full repos for all 4 clusters.

Then define CLUSRCVR(TO.QM7) CLUSTER(QM7C) on QM7
Then define CLUSSDR(TO.QM1) CLUSTER(QM7C) on QM7
repeat this for QM8 and QM9 aswell, (remember to do it in this order!)

Now we should have 4 clusters....

Now it's time to make the queue defs:

Define QLOCAL: QMQ CLUSTER(QMC) on QM2 and QM4
Define QALIAS: QMQ.GLOBAL TARGQ(QMQ) CLUSNL(BIGCLUSTER) on QM1 and QM3

Now you should be able to see QMQ.GLOBAL on QM7-QM9 and offcause on QM1-QM4,
but all the other queues on QM1-QM4 are not exposed

In the example below it's also posible t osend msgs to QM7-9 from QM2 and MQ4,
the major trick to get it working, is DEFBIND(NOTFIXED) on the ALIAS queues.

I hope this will help Chandra aswell

Code:
**** QM1 ****
ALTER  QMGR +
       REPOS(' ') +
       REPOSNL('BIGCLUSTER') +
       FORCE

DEFINE QALIAS ('QMQ.GLOBAL') +
       SCOPE(QMGR) +
       TARGQ('QMQ') +
       CLUSTER(' ') +
       CLUSNL('BIGCLUSTER') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE QALIAS ('QMQ7.GLOBAL') +
       SCOPE(QMGR) +
       TARGQ('QMQ7') +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE QALIAS ('QMQ8.GLOBAL') +
       SCOPE(QMGR) +
       TARGQ('QMQ8') +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE QALIAS ('QMQ9.GLOBAL') +
       SCOPE(QMGR) +
       TARGQ('QMQ9') +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE CHANNEL ('TO.QM1') CHLTYPE(CLUSRCVR) +
       TRPTYPE(TCP) +
       BATCHINT(0) +
       BATCHSZ(50) +
       CLUSTER(' ') +
       CLUSNL('BIGCLUSTER') +
       CONNAME('ip_addr(1441)') +
       CONVERT(NO) +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM3') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       BATCHINT(0) +
       BATCHSZ(50) +
       CLUSTER(' ') +
       CLUSNL('BIGCLUSTER') +
       CONNAME('ip_addr(1443)') +
       CONVERT(NO) +
       DESCR(' ') +
       REPLACE

DEFINE NAMELIST ('BIGCLUSTER') REPLACE +
       NAMES('QMC                                             ', +
          'QM7C                                            ', +
          'QM8C                                            ', +
          'QM9C                                            ')

**** QM2 ****
ALTER  QMGR +
       REPOS(' ') +
       REPOSNL(' ') +
       FORCE

DEFINE QLOCAL ('QMQ') +
       SCOPE(QMGR) +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE CHANNEL ('TO.QM1') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1441)') +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM2') CHLTYPE(CLUSRCVR) +
       TRPTYPE(TCP) +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1442)') +
       REPLACE

DEFINE CHANNEL ('TO.QM3') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1443)') +
       REPLACE

DEFINE NAMELIST ('BIGCLUSTER') REPLACE +
       NAMES('QMC                                             ', +
          'QM7C                                            ', +
          'QM8C                                            ', +
          'QM9C                                            ')

**** QM3 ****
ALTER  QMGR +
       REPOS(' ') +
       REPOSNL('BIGCLUSTER') +
       FORCE

DEFINE QALIAS ('QMQ.GLOBAL') +
       SCOPE(QMGR) +
       TARGQ('QMQ') +
       CLUSTER(' ') +
       CLUSNL('BIGCLUSTER') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE QALIAS ('QMQ7.GLOBAL') +
       SCOPE(QMGR) +
       TARGQ('QMQ7') +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE QALIAS ('QMQ8.GLOBAL') +
       SCOPE(QMGR) +
       TARGQ('QMQ8') +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE QALIAS ('QMQ9.GLOBAL') +
       SCOPE(QMGR) +
       TARGQ('QMQ9') +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE CHANNEL ('TO.QM1') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER(' ') +
       CLUSNL('BIGCLUSTER') +
       CONNAME('ip_addr(1441)') +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM3') CHLTYPE(CLUSRCVR) +
       TRPTYPE(TCP) +
       CLUSTER(' ') +
       CLUSNL('BIGCLUSTER') +
       CONNAME('ip_addr(1443)') +
       DESCR(' ') +
       REPLACE

DEFINE NAMELIST ('BIGCLUSTER') REPLACE +
       NAMES('QMC                                             ', +
          'QM7C                                            ', +
          'QM8C                                            ', +
          'QM9C                                            ')

**** QM4 ****
ALTER  QMGR +
       REPOS(' ') +
       REPOSNL(' ') +
       FORCE

DEFINE QLOCAL ('QMQ') +
       DESCR(' ') +
       SCOPE(QMGR) +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE CHANNEL ('TO.QM1') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1441)') +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM3') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1443)') +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM4') CHLTYPE(CLUSRCVR) +
       TRPTYPE(TCP) +
       CLUSTER('QMC') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1444)') +
       DESCR(' ') +
       REPLACE

**** QM7 ****
ALTER  QMGR +
       REPOS(' ') +
       REPOSNL(' ') +
       FORCE

DEFINE QLOCAL ('QMQ7') +
       DESCR(' ') +
       SCOPE(QMGR) +
       CLUSTER('QM7C') +
       CLUSNL(' ') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE CHANNEL ('TO.QM1') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER('QM7C') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1441)') +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM3') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER('QM7C') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1443)') +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM7') CHLTYPE(CLUSRCVR) +
       TRPTYPE(TCP) +
       CLUSTER('QM7C') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1447)') +
       DESCR(' ') +
       REPLACE

**** QM8 ****
ALTER  QMGR +
       REPOS(' ') +
       REPOSNL(' ') +
       FORCE


DEFINE QLOCAL ('QMQ8') +
       DESCR(' ') +
       CLUSTER('QM8C') +
       CLUSNL(' ') +
       DEFBIND(NOTFIXED) +
       REPLACE

DEFINE CHANNEL ('TO.QM1') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER('QM8C') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1441)') +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM3') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER('QM8C') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1443)') +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM8') CHLTYPE(CLUSRCVR) +
       TRPTYPE(TCP) +
       CLUSTER('QM8C') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1448)') +
       DESCR(' ') +
       REPLACE


**** QM9 ****
ALTER  QMGR +
       REPOS(' ') +
       REPOSNL(' ') +
       FORCE

DEFINE QLOCAL ('QMQ9') +
       DESCR(' ') +
       SCOPE(QMGR) +
       CLUSTER('QM9C') +
       CLUSNL(' ') +
       DEFBIND(OPEN) +
       REPLACE

DEFINE CHANNEL ('TO.QM1') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER('QM9C') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1441)') +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM3') CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CLUSTER('QM9C') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1443)') +
       DESCR(' ') +
       REPLACE

DEFINE CHANNEL ('TO.QM9') CHLTYPE(CLUSRCVR) +
       TRPTYPE(TCP) +
       CLUSTER('QM9C') +
       CLUSNL(' ') +
       CONNAME('ip_addr(1449)') +
       DESCR(' ') +
       REPLACE


If you want the full stanzas for experiments, send me a private message or email.

Just my $0.02
_________________
Regards, Jørgen
Home of BlockIP2, the last free MQ Security exit ver. 3.00
Cert. on WMQ, WBIMB, SWIFT.
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
oz1ccg
PostPosted: Sun Jul 14, 2002 3:24 am    Post subject: Reply with quote

Yatiri

Joined: 10 Feb 2002
Posts: 628
Location: Denmark

I've added the information regarding this topic to my web-site including some diagrams and the stanzas I've used for testing it.
http://w1.1491.telia.com/~u149101068/cluster_qmc_1.htm

Just my $0.02
_________________
Regards, Jørgen
Home of BlockIP2, the last free MQ Security exit ver. 3.00
Cert. on WMQ, WBIMB, SWIFT.
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » Clustering » Problem with WIN2k Clustering
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.