Clustering Scenario Question
2014-07-28 14:46:41 GMT
We have a clustering scenario, that we are working on. I was hoping to get some input from the LISTSERV on our approach, or what would be a better approach for this scenario.
We have the following application/MQ set up.
MQ queue managers are at 184.108.40.206 on Linux x86.
Server A hosts QM1
Server B hosts QM2
A redundant app1 runs on both server A and B. app1 will take a message from Q1, process it, and then put a message on Q2 for processing by app2.
Q1 is in cluster X and lives on both QM1 and QM2. Q1 has the same CLWLRANK and CLWLPRTY on QM1 and QM2. So basically, messages are being distributed somewhat evenly between QM1 and QM2 for Q1.
App2 should primarily run on QM1 and use QM2 only as a failover when QM1 is not available. So Q2 is in cluster X and has the same CLWLRANK on QM1 and QM2. However, the CLWLPRTY for Q2 is 5 on QM1 and 3 on QM2. Also, the CLWLUSEQ for Q2 on QM2 is ANY. Therefore, when app1 is running on QM2 and PUTs to Q2, MQ will send the message over to QM1 for processing.
This all works fine. However, we have noticed if Server A/QM1 becomes unavailable for a longer period of time, there is a short window where app1 PUTs to Q2 on QM2 will be put on the SCTQ to be destined for QM1 for processing. After a few minutes, QM2 realizes QM1 is truly not available, and then subsequent app1 PUTs to Q2 go to the local queue on QM2. However, those previous Q2 messages that were PUT on the SCTQ on QM2 and were destined for QM1, stay on the SCTQ until QM1 becomes available again (which could be hours). This does not meet our SLA, as we need these messages to be processed near time.
Therefore we were thinking about the following option.
Put a “loopback” QM3 on Server B. QM3 would have a queue alias for Q2 with a target of Q2 and be in cluster X. It would have a CLWLRANK that matches Q2 on QM1 and QM2, but a lower CLWLPRTY like 1. We haven’t had a chance to test it yet, but we are assuming when that condition occurs where messages are “stuck” on the SCTQ on QM2 because QM1 is unavailable, then MQ will see the queue alias on QM3 and send the messages there. Once QM3 receives the messages, it will route them back to QM2 where they can then be put on the local Q2 for processing.
Would people have concerns with this above loopback queue manager approach for this stuck messages on the SCTQ scenario?
Have others used this approach for this type of clustering scenario?
Do others have a better suggestion to use?
I appreciate anyone’s input.
List Archive - Manage Your List Settings - Unsubscribe
Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com