Author |
Message
|
belchman |
Posted: Thu Aug 02, 2018 10:11 am Post subject: MQ Cluster Workload Management Poser |
|
|
Partisan
Joined: 31 Mar 2006 Posts: 386 Location: Ohio, USA
|
I have 3 queue managers named MQ1, MQ2, MQ3 and these 3 queue managers are hosted on 2 hosts named HOST1 and HOST 2 as follows.
MQ1, MQ2 hosted on HOST1
MQ3 hosted on HOST2
MQ1 on HOST1 serves as a gateway from a B2B partner to either MQ2 or MQ3 via MQ clustering. All three MQ systems participate in the same cluster.
MQ2 and MQ3 host a queue name QUEUE1 and both local instances are shared in the cluster.
MQ2 and MQ3 have CLWLUSEQ set to local.
Both QUEUE1 instances have CLWLUSEQ set to qmgr.
Both QUEUE1 instances are BIND NOT FIXED.
QUEUE1 @ MQ2 has CLWLRANK and CLWLPRTY set to 0
QUEUE1 @ MQ3 has CLWLRANK and CLWLPRTY set to 9
MQ2 and MQ3 are full repos'
The application only wants one route from the B2B partner to be viable at any given time. To do this, I made QUEUE1 @ MQ3 has CLWLRANK and CLWLPRTY set to 9 so if that queue manager is up, the data flows that way.
Now the application is writing an application that is to simulate the B2B partner. They are connecting that app to MQ2 and putting a message on QUEUE1 and the message is going to QUEUE1 @ MQ3 instead of MQ @ QM2 as I would expect.
To test on my own, I created an alias on QM2 named TEST. That alias resolves to QUEUE1.
Via MQ Explorer using TRACE ROUTE, I put 10 messages to the alias Q named TEST, and all ten messages went to QUEUE1 @ QM3 instead of QUEUE1 @ QM2.
Regarding my test, I expected all 10 messages to go to QUEUE1 @ QM2.
I read through the cluster workload management algorithm doc and it seems that what I expected should be what happens.
Am I missing something? _________________ Make three correct guesses consecutively and you will establish a reputation as an expert. ~ Laurence J. Peter |
|
Back to top |
|
 |
exerk |
Posted: Thu Aug 02, 2018 11:08 am Post subject: |
|
|
 Jedi Council
Joined: 02 Nov 2006 Posts: 6339
|
Working as advertised - the messages are going to the higher priority queue.
From the KC: "...The CLWLPRTY queue attribute specifies the priority of local, remote, or alias queues for cluster workload distribution. The value must be in the range 0-9, where 0 is the lowest priority and 9 is the highest..." _________________ It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys. |
|
Back to top |
|
 |
belchman |
Posted: Thu Aug 02, 2018 11:12 am Post subject: |
|
|
Partisan
Joined: 31 Mar 2006 Posts: 386 Location: Ohio, USA
|
But step three of the CWMA says this. So I am thinking it never interrogates priority or rank.
3. When choosing a queue, if the resulting set of queues contains the local instance of the queue, the local instance is typically used. The local instance of the queue is used if one of these three conditions are true:◦Either the use-queue attribute of the queue, CLWLUSEQ is set to LOCAL,
◦Or both the following statements are true:a. The use-queue attribute of the queue, CLWLUSEQ is set to QMGR.
b. The use-queue attribute of the queue manager, CLWLUSEQ is set to LOCAL.
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.ref.con.doc/q082390_.htm
◦Or the message is received over a cluster channel rather than by being put by a local application.
_________________ Make three correct guesses consecutively and you will establish a reputation as an expert. ~ Laurence J. Peter |
|
Back to top |
|
 |
gbaddeley |
Posted: Thu Aug 02, 2018 5:29 pm Post subject: |
|
|
 Jedi Knight
Joined: 25 Mar 2003 Posts: 2538 Location: Melbourne, Australia
|
Quote: |
MQ1 on HOST1 serves as a gateway from a B2B partner to either MQ2 or MQ3 via MQ clustering.
...
Now the application is writing an application that is to simulate the B2B partner. They are connecting that app to MQ2 |
Shuldn't the simulator app be connecting to MQ1 ? _________________ Glenn |
|
Back to top |
|
 |
exerk |
Posted: Thu Aug 02, 2018 11:06 pm Post subject: |
|
|
 Jedi Council
Joined: 02 Nov 2006 Posts: 6339
|
belchman wrote: |
But step three of the CWMA says this. So I am thinking it never interrogates priority or rank... |
OK, weird. Notwithstanding gbaddeley's question, what happens when you repeat the test using amqsput and amqsputc ? _________________ It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys. |
|
Back to top |
|
 |
belchman |
Posted: Fri Aug 03, 2018 3:27 am Post subject: |
|
|
Partisan
Joined: 31 Mar 2006 Posts: 386 Location: Ohio, USA
|
gbaddeley,
Not in this case. If the app connects to MQ1, all of the messages should flow to MQ3.
The app connecting to MQ2 directly should put to queues on MQ2.
What I did not tell you guys is that two separate WAS systems are servicing MQ2 and MQ3. MQ2 is DEV and MQ3 is QA. The external entity is to feed only QA unless they tell me to have them feed DEV.
So this app they are using, is to simulate the external entity to feed messages to DEV.
This challenge is a byproduct of the external entity only having 2 environments; prod and non-prod. So I have two clusters; prod and non-prod. _________________ Make three correct guesses consecutively and you will establish a reputation as an expert. ~ Laurence J. Peter |
|
Back to top |
|
 |
belchman |
Posted: Fri Aug 03, 2018 3:28 am Post subject: |
|
|
Partisan
Joined: 31 Mar 2006 Posts: 386 Location: Ohio, USA
|
exerk,
I will find out and let you know. _________________ Make three correct guesses consecutively and you will establish a reputation as an expert. ~ Laurence J. Peter |
|
Back to top |
|
 |
exerk |
Posted: Fri Aug 03, 2018 3:31 am Post subject: |
|
|
 Jedi Council
Joined: 02 Nov 2006 Posts: 6339
|
belchman wrote: |
...What I did not tell you guys is that two separate WAS systems are servicing MQ2 and MQ3. MQ2 is DEV and MQ3 is QA. The external entity is to feed only QA unless they tell me to have them feed DEV...
...This challenge is a byproduct of the external entity only having 2 environments; prod and non-prod. So I have two clusters; prod and non-prod. |
Are there separate CLUSSDR/CLUSRCVR channels for each cluster? _________________ It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys. |
|
Back to top |
|
 |
belchman |
Posted: Fri Aug 03, 2018 3:39 am Post subject: |
|
|
Partisan
Joined: 31 Mar 2006 Posts: 386 Location: Ohio, USA
|
exerk,
I cannot easily test with amqsputc or amqsput because the app is going to get my messages before I can see where they are routed.
As to cluster sender/receiver pairs the answer will be yes. I do not have the prod cluster built yet but when I build it, it will have its own clusters channels.
However, remember, MQ1, MQ2, MQ3 in this problem are all in the same cluster. _________________ Make three correct guesses consecutively and you will establish a reputation as an expert. ~ Laurence J. Peter |
|
Back to top |
|
 |
exerk |
Posted: Fri Aug 03, 2018 3:41 am Post subject: |
|
|
 Jedi Council
Joined: 02 Nov 2006 Posts: 6339
|
Are you not able to route-test with the applications shut down, or the queues GET-disabled? _________________ It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys. |
|
Back to top |
|
 |
belchman |
Posted: Fri Aug 03, 2018 3:55 am Post subject: |
|
|
Partisan
Joined: 31 Mar 2006 Posts: 386 Location: Ohio, USA
|
Yes I can but I have to plan an outage with the app because they are running an active project and are testing. _________________ Make three correct guesses consecutively and you will establish a reputation as an expert. ~ Laurence J. Peter |
|
Back to top |
|
 |
exerk |
Posted: Fri Aug 03, 2018 3:56 am Post subject: |
|
|
 Jedi Council
Joined: 02 Nov 2006 Posts: 6339
|
Create some like queues, that the application does not use (and has no knowledge of) and use those. _________________ It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys. |
|
Back to top |
|
 |
belchman |
Posted: Fri Aug 03, 2018 4:33 am Post subject: |
|
|
Partisan
Joined: 31 Mar 2006 Posts: 386 Location: Ohio, USA
|
Brilliant. I will do that now. _________________ Make three correct guesses consecutively and you will establish a reputation as an expert. ~ Laurence J. Peter |
|
Back to top |
|
 |
belchman |
Posted: Fri Aug 03, 2018 4:50 am Post subject: |
|
|
Partisan
Joined: 31 Mar 2006 Posts: 386 Location: Ohio, USA
|
using amqsput and amqsputc from HOST1 in which the default queue manager is QM2, I put 10 messages each. All 20 messages went to QM3.
I am thinking I must have something configured that is causing this but for the life of me I cannot think of what it could be. _________________ Make three correct guesses consecutively and you will establish a reputation as an expert. ~ Laurence J. Peter |
|
Back to top |
|
 |
belchman |
Posted: Fri Aug 03, 2018 4:53 am Post subject: |
|
|
Partisan
Joined: 31 Mar 2006 Posts: 386 Location: Ohio, USA
|
This is the local queue I created that is shared in the cluster
AMQ8409: Display Queue details.
QUEUE(EXERK) TYPE(QLOCAL)
ACCTQ(QMGR) ALTDATE(2018-08-03)
ALTTIME(08.36.29)
BOQNAME(FTB_MQ1.REQUEST.FROM.RTP_MQ1_BOQ)
BOTHRESH( CLUSNL( )
CLUSTER(RTP_CLUSTER) CLCHNAME( )
CLWLPRTY(0) CLWLRANK(0)
CLWLUSEQ(QMGR) CRDATE(2018-08-03)
CRTIME(08.36.29) CURDEPTH(0)
CUSTOM( ) DEFBIND(NOTFIXED)
DEFPRTY(0) DEFPSIST(NO)
DEFPRESP(SYNC) DEFREADA(NO)
DEFSOPT(SHARED) DEFTYPE(PREDEFINED)
DESCR( ) DISTL(NO)
GET(ENABLED) HARDENBO
IMGRCOVQ(QMGR) INITQ( )
IPPROCS(0) MAXDEPTH(5000)
MAXMSGL(104857600) MONQ(QMGR)
MSGDLVSQ(PRIORITY) NOTRIGGER
NPMCLASS(NORMAL) OPPROCS(0)
PROCESS( ) PUT(ENABLED)
PROPCTL(COMPAT) QDEPTHHI(80)
QDEPTHLO(20) QDPHIEV(DISABLED)
QDPLOEV(DISABLED) QDPMAXEV(ENABLED)
QSVCIEV(NONE) QSVCINT(999999999)
RETINTVL(999999999) SCOPE(QMGR)
SHARE STATQ(ON)
TRIGDATA( ) TRIGDPTH(1)
TRIGMPRI(0) TRIGTYPE(FIRST)
USAGE(NORMAL)
This is the alias I use to access the queue
AMQ8409: Display Queue details.
QUEUE(HERMAN_TEST) TYPE(QALIAS)
ALTDATE(2018-08-03) ALTTIME(08.38.25)
TARGET(EXERK) CLUSNL( )
CLUSTER( ) CLWLPRTY(0)
CLWLRANK(0) CUSTOM( )
DEFBIND(OPEN) DEFPRTY(0)
DEFPSIST(NO) DEFPRESP(SYNC)
DEFREADA(NO) DESCR( )
GET(ENABLED) PUT(ENABLED)
PROPCTL(COMPAT) SCOPE(QMGR)
TARGTYPE(QUEUE)
After posting this, I am going to try to put to EXERK without the alias. _________________ Make three correct guesses consecutively and you will establish a reputation as an expert. ~ Laurence J. Peter |
|
Back to top |
|
 |
|