Author |
Message
|
solomon_13000 |
Posted: Sun Oct 05, 2008 2:02 am Post subject: Cluster |
|
|
Master
Joined: 13 Jun 2008 Posts: 284
|
I was doing some reading on clusters and this are the things I discovered. In a cluster we have the full repository and the partial repository. The full repository knows all about the cluster such as the queue manager in the cluster, the channels, the queues and so on. In the full repository we define a single receiver channel. Suppose there are two full repository in the cluster then we can define a sender channel so that a full repository can push information about itself to the other full repository. This means that both full repository will hold the same information about the cluster. Should one of the full repository fail, the other full repository will take over.
As for the partial repository it knows about the full repository and it pushes information about itself to the full repository. The partial repository does not receive information about other queue managers in the cluster at setup time. A partial repository has a single sender channel to the full repository and a receiver channel pointing to itself.
Now when an application wishes to put information in a queue it needs to talk to a queue manager. This is done using the MQI. Now the queue manager will look for the queue and if found the information will be placed into the queue belonging to the queue manager. Suppose if the queue manager does not have the queue, it will query the full repository for the instance of the queue and then use it. It will then retain the information so that the next time when an application wishes to put information in a queue it wont have to query the full repository again.
But now the thing is in the full repository there is no sender channel pointing to the partial repository. But in the partial repository we have a receiver channel pointing to the full repository. Is this because the full repository will automatically define a sender channel to the receiver using the attribute ChannelAutoDef of the queue manager?.
Last edited by solomon_13000 on Sun Oct 05, 2008 4:14 am; edited 1 time in total |
|
Back to top |
|
 |
atheek |
Posted: Sun Oct 05, 2008 4:06 am Post subject: |
|
|
 Partisan
Joined: 01 Jun 2006 Posts: 327 Location: Sydney
|
Solomon_13000 wrote: |
But in the partial repository we have a receiver channel pointing to the full repository |
This is not correct.
Receiver cluster channel of a queue manager always points to itself so that other queue managers in the cluster can talk to it |
|
Back to top |
|
 |
ranganathan |
Posted: Sun Oct 05, 2008 4:27 am Post subject: Re: Cluster |
|
|
 Centurion
Joined: 03 Jul 2008 Posts: 104
|
solomon_13000 wrote: |
But in the partial repository we have a receiver channel pointing to the full repository
|
I guess that's a typo...
solomon_13000 wrote: |
Is this because the full repository will automatically define a sender channel to the receiver using the attribute ChannelAutoDef of the queue manager?. |
Yes.. you are right.. the CLUSRCVR definition of the partial repos will be used by the FR to define auto CLUSSDRA to the PR... In a cluster auto-defined channels will be used frequently, so as to reduce the overhead of defining channels between all the cluster members and this auto-definition comes by default in a cluster... |
|
Back to top |
|
 |
atheek |
Posted: Sun Oct 05, 2008 5:04 am Post subject: Re: Cluster |
|
|
 Partisan
Joined: 01 Jun 2006 Posts: 327 Location: Sydney
|
solomon_13000 wrote: |
Is this because the full repository will automatically define a sender channel to the receiver using the attribute ChannelAutoDef of the queue manager?. |
As ranganathan pointed out its the CLUSRCVR definition of the partial repos that is used for auto defining the senders and not by channel Auto def(CHAD) attribute of the queue manager. The channel auto def is applicable only for receiver and server connection channels. For Cluster Sender channels this is always enabled..what it means is that even if CHAD is disabled , the cluster queue managers will be able to make auto cluster sender definitions to the other queue managers in the cluster |
|
Back to top |
|
 |
solomon_13000 |
Posted: Mon Oct 06, 2008 7:16 am Post subject: |
|
|
Master
Joined: 13 Jun 2008 Posts: 284
|
Is it possible to define a cluster receiver channel without specifying the conname?. |
|
Back to top |
|
 |
ranganathan |
Posted: Mon Oct 06, 2008 8:24 am Post subject: |
|
|
 Centurion
Joined: 03 Jul 2008 Posts: 104
|
|
Back to top |
|
 |
bruce2359 |
Posted: Mon Oct 06, 2008 9:34 am Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
All qmgrs (FRs and PRs) in a cluster have CLUSSDR channels to a full repository. FR CLUSSDR channels point to the other FR. All qmgrs in a cluster have CLUSRCVR that points to itself.
FRs maintain info about all clustered objects; A PR maintain info about objects that it has expressed interest in. _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
solomon_13000 |
Posted: Mon Oct 06, 2008 7:36 pm Post subject: |
|
|
Master
Joined: 13 Jun 2008 Posts: 284
|
I created two full repository as below. But when I check the channel status it is retrying.
QM1 - Full Repository
ALTER QMGR REPOS(CLUS2)
DEFINE CHANNEL('QM1.QM2.DF') CHLTYPE(CLUSSDR) TRPTYPE(TCP) CONNAME('localhost(1415)') CLUSTER(CLUS2)
DEFINE CHANNEL('QM2.QM1.DF') CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('localhost(1417)') CLUSTER(CLUS2)
DEFINE QLOCAL(QL1) CLUSTER(CLUS2)
runmqlsr -m QM1 -t TCP -p 1417
QM2 - Full Repository
ALTER QMGR REPOS(CLUS2)
DEFINE CHANNEL('QM2.QM1.DF') CHLTYPE(CLUSSDR) TRPTYPE(TCP) CONNAME('localhost(1417)') CLUSTER(CLUS2)
DEFINE CHANNEL('QM1.QM2.DF') CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('localhost(1415)') CLUSTER(CLUS2)
DEFINE QLOCAL(QL2) CLUSTER(CLUS2)
runmqlsr -m QM2 -t TCP -p 1415
Last edited by solomon_13000 on Mon Oct 06, 2008 8:03 pm; edited 1 time in total |
|
Back to top |
|
 |
zhanghz |
Posted: Mon Oct 06, 2008 7:47 pm Post subject: |
|
|
Disciple
Joined: 17 Jun 2008 Posts: 186
|
please, port number.
channels not running, usually because definition is wrong, or firewall problem, or listener not up. |
|
Back to top |
|
 |
fjb_saper |
Posted: Mon Oct 06, 2008 8:02 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
@solomon_13000: Your channel definitions are all wrong.
Go back to the cluster manual compare with the default implementaion and tell us why you had it wrong and what the correct values would have been.  _________________ MQ & Broker admin |
|
Back to top |
|
 |
solomon_13000 |
Posted: Mon Oct 06, 2008 8:03 pm Post subject: |
|
|
Master
Joined: 13 Jun 2008 Posts: 284
|
Now it works. The problem is with the definition. After carefully thinking I fixed it. |
|
Back to top |
|
 |
solomon_13000 |
Posted: Mon Oct 06, 2008 10:47 pm Post subject: |
|
|
Master
Joined: 13 Jun 2008 Posts: 284
|
QM3 - Partial Repository
DEFINE CHANNEL('QM2.QM1.DF') CHLTYPE(CLUSSDR) TRPTYPE(TCP) CONNAME('localhost(1417)') CLUSTER(CLUS2)
DEFINE CHANNEL('QM1.QM3.DF') CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('localhost(1419)') CLUSTER(CLUS2)
DEFINE QLOCAL(QL3) CLUSTER(CLUS2)
runmqlsr -m QM3 -t TCP -p 1419
Comments:
After setting up the partial repository, I tried to amqsput QL3 QM1 and I am getting the error:
Sample AMQSPUT0 start
target queue is QL3
MQOPEN ended with reason code 2085
unable to open queue for output
Sample AMQSPUT0 end
Take note that the channel status is running. |
|
Back to top |
|
 |
zhanghz |
Posted: Tue Oct 07, 2008 2:03 am Post subject: |
|
|
Disciple
Joined: 17 Jun 2008 Posts: 186
|
Issue
DIS CLUSQMGR(*) ALL
DIS QC(*) ALL
on QM1 and QM3, what do you see? |
|
Back to top |
|
 |
solomon_13000 |
Posted: Tue Oct 07, 2008 2:15 am Post subject: |
|
|
Master
Joined: 13 Jun 2008 Posts: 284
|
QM1
DIS CLUSQMGR(*) ALL
1 : DIS CLUSQMGR(*) ALL
AMQ8441: Display Cluster Queue Manager details.
CLUSQMGR(QM1) ALTDATE( )
ALTTIME( ) BATCHHB(0)
BATCHINT(0) BATCHSZ(50)
CHANNEL(QM2.QM1.DF) CLUSDATE(2008-10-07)
CLUSTER(CLUS2) CLUSTIME(09.38.41)
CLWLPRTY(0) CLWLRANK(0)
CLWLWGHT(50) COMPHDR(NONE)
COMPMSG(NONE) CONNAME(localhost(1417))
CONVERT(NO) DEFTYPE(CLUSRCVR)
DESCR( ) DISCINT(6000)
HBINT(300) KAINT(AUTO)
LOCLADDR( ) LONGRTY(999999999)
LONGTMR(1200) MAXMSGL(4194304)
MCANAME( ) MCATYPE(THREAD)
MCAUSER( ) MODENAME( )
MRDATA( ) MREXIT( )
MRRTY(10) MRTMR(1000)
MSGDATA( )
MSGEXIT( ) NETPRTY(0)
NPMSPEED(FAST) PASSWORD( )
PUTAUT(DEF) QMID(QM1_2008-10-07_09.38.07)
QMTYPE(REPOS)
RCVDATA( )
RCVEXIT( ) SCYDATA( )
SCYEXIT( )
SENDDATA( )
SENDEXIT( ) SEQWRAP(999999999)
SHORTRTY(10) SHORTTMR(60)
SSLCAUTH(REQUIRED) SSLCIPH( )
SSLPEER( ) STATUS(RUNNING)
SUSPEND(NO) TPNAME( )
TRPTYPE(TCP) USERID( )
AMQ8441: Display Cluster Queue Manager details.
CLUSQMGR(QM2) ALTDATE( )
ALTTIME( ) BATCHHB(0)
BATCHINT(0) BATCHSZ(50)
CHANNEL(QM1.QM2.DF) CLUSDATE(2008-10-07)
CLUSTER(CLUS2) CLUSTIME(14.24.29)
CLWLPRTY(0) CLWLRANK(0)
CLWLWGHT(50) COMPHDR(NONE)
COMPMSG(NONE) CONNAME(localhost(1415))
CONVERT(NO) DEFTYPE(CLUSSDRB)
DESCR( ) DISCINT(6000)
HBINT(300) KAINT(AUTO)
LOCLADDR( ) LONGRTY(999999999)
LONGTMR(1200) MAXMSGL(4194304)
MCANAME( ) MCATYPE(THREAD)
MCAUSER( ) MODENAME( )
MRDATA( ) MREXIT( )
MRRTY(10) MRTMR(1000)
MSGDATA( ) MSGEXIT( )
NETPRTY(0) NPMSPEED(FAST)
PASSWORD( ) PUTAUT(DEF)
QMID(QM2_2008-10-07_09.39.09) QMTYPE(REPOS)
RCVDATA( ) RCVEXIT( )
SCYDATA( ) SCYEXIT( )
SENDDATA( ) SENDEXIT( )
SEQWRAP(999999999) SHORTRTY(10)
SHORTTMR(60) SSLCAUTH(REQUIRED)
SSLCIPH( ) SSLPEER( )
STATUS(RUNNING) SUSPEND(NO)
TPNAME( ) TRPTYPE(TCP)
USERID( )
DISPLAY QC(*) ALL
2 : DISPLAY QC(*) ALL
AMQ8409: Display Queue details.
QUEUE(QL1) TYPE(QCLUSTER)
ALTDATE(2008-10-07) ALTTIME(16.51.51)
CLUSDATE(2008-10-07) CLUSTER(CLUS2)
CLUSQMGR(QM1) CLUSQT(QLOCAL)
CLUSTIME(09.38.47) CLWLPRTY(0)
CLWLRANK(0) DEFBIND(NOTFIXED)
DEFPRTY(0) DEFPSIST(NO)
DESCR( ) PUT(ENABLED)
QMID(QM1_2008-10-07_09.38.07)
AMQ8409: Display Queue details.
QUEUE(QL2) TYPE(QCLUSTER)
ALTDATE(2008-10-07) ALTTIME(16.51.11)
CLUSDATE(2008-10-07) CLUSTER(CLUS2)
CLUSQMGR(QM2) CLUSQT(QLOCAL)
CLUSTIME(15.22.1 CLWLPRTY(0)
CLWLRANK(0) DEFBIND(NOTFIXED)
DEFPRTY(0) DEFPSIST(NO)
DESCR( ) PUT(ENABLED)
QMID(QM2_2008-10-07_09.39.09)
QM2
DIS CLUSQMGR(*) ALL
1 : DIS CLUSQMGR(*) ALL
AMQ8441: Display Cluster Queue Manager details.
CLUSQMGR(SYSTEM.TEMPQMGR.localhost(1417))
ALTDATE( ) ALTTIME( )
BATCHHB(0) BATCHINT(0)
BATCHSZ(50) CHANNEL(QM2.QM1.DF)
CLUSDATE(2008-10-07) CLUSTER(CLUS2)
CLUSTIME(14.29.20) CLWLPRTY(0)
CLWLRANK(0) CLWLWGHT(50)
COMPHDR(NONE) COMPMSG(NONE)
CONNAME(localhost(1417)) CONVERT(NO)
DEFTYPE(CLUSSDR) DESCR( )
DISCINT(6000) HBINT(300)
KAINT(AUTO) LOCLADDR( )
LONGRTY(999999999) LONGTMR(1200)
MAXMSGL(4194304) MCANAME( )
MCATYPE(THREAD) MCAUSER( )
MODENAME( ) MRDATA( )
MREXIT( ) MRRTY(10)
MRTMR(1000)
MSGDATA( )
MSGEXIT( ) NETPRTY(0)
NPMSPEED(FAST) PASSWORD( )
PUTAUT(DEF)
QMID(SYSTEM.TEMPUUID.localhost(1417))
QMTYPE(REPOS)
RCVDATA( )
RCVEXIT( ) SCYDATA( )
SCYEXIT( )
SENDDATA( )
SENDEXIT( ) SEQWRAP(999999999)
SHORTRTY(10) SHORTTMR(60)
SSLCAUTH(REQUIRED) SSLCIPH( )
SSLPEER( ) STATUS(RUNNING)
SUSPEND(YES) TPNAME( )
TRPTYPE(TCP) USERID( )
DIS QC(*) ALL
2 : DIS QC(*) ALL
AMQ8409: Display Queue details.
QUEUE(QL3) TYPE(QCLUSTER)
ALTDATE(2008-10-07) ALTTIME(16.52.30)
CLUSDATE(2008-10-07) CLUSTER(CLUS2)
CLUSQMGR(QM3) CLUSQT(QLOCAL)
CLUSTIME(14.26.36) CLWLPRTY(0)
CLWLRANK(0) DEFBIND(NOTFIXED)
DEFPRTY(0) DEFPSIST(NO)
DESCR( ) PUT(ENABLED)
QMID(QM3_2008-10-07_14.25.33) |
|
Back to top |
|
 |
solomon_13000 |
Posted: Tue Oct 07, 2008 2:54 am Post subject: |
|
|
Master
Joined: 13 Jun 2008 Posts: 284
|
the solution:
QM1
DEFINE CHANNEL('QM1.QM3.DF') CHLTYPE(CLUSSDR) TRPTYPE(TCP) CONNAME('localhost(1419)') CLUSTER(CLUS2) |
|
Back to top |
|
 |
|