Discussion:
Getting NLB to work correctly with my to Webserver with MSMQ
(too old to reply)
Joseph T.S.Lim
2009-09-09 07:49:11 UTC
Permalink
To All Guru Out there,

Need help !!!!

I would like to know how to balance my MSMQ server messages within 2
server. I have successfully setup my NLB and I can see it is working.
My problem is when I have written a small windows application and send
messages to my private queue, I only see messages are only accumulating
in one of the server (SERVER A), and the other server (SERVER B) is not
receiving any messages. When I drainstop or stop the queue in SERVER A,
then I see SERVER B is starting to received messages. When I restarted
the queue at SERVER A, it is not receiving until i stop SERVER B.

I have tried modified CleanupInterval but still can't to make it work.
What am I missing in this setup ? What I want to achieve is that when
my Windows application is sending message, both SERVER A and B should
received messages in equally.

In my environment, only 2 application will be sending to my cluster.
Both are pointing to my cluster IP 10.10.10.39. Both application can
send 4 messages or more per second.


MY SERVER SETUP
=============
Server A
--------
NLB Setup
Cluster IP : 10.10.10.39
Subnet : 255.255.255.0
Dedicated IP : 10.10.10.24
Subnet : 255.255.255.0

TCP Port rule : 1801 (MSMQ)
Affinity : None
Priority : 1
MultiCast
Weight : Equal
WEB Server
IIS 6.0.
A Webservices is installed in this server
MSMQ
MSMQ Private$\incoming (Queue name)

Server B
--------
NLB Setup
Cluster IP : 10.10.10.39
Subnet : 255.255.255.0
Dedicated IP : 10.10.10.24
Subnet : 255.255.255.0

TCP Port rule : 1801 (MSMQ)
Affinity : None
Priority : 1
MultiCast
Weight : Equal
WEB Server
IIS 6.0.
A Webservices is installed in this server
MSMQ
MSMQ Private$\incoming (Queue name)


Each server have IIS installed and there is a Webservices method call.
My windows application will call this webservices method and the method
will write the message into the private$ queue. Both server have the
same private$ queue name.

Best regards,
Joseph
John Breakwell
2009-09-09 09:42:42 UTC
Permalink
Hi Joseph,

MSMQ maintains a persistent connection to the destination machine for as
long as you send messages (and for the CleanupInterval beyond that).
This is why you see messages only going to one machine.
To test NLB with MSMQ you need to have multiple clients, not just one.

In theory you could set CleanupInterval so small that MSMQ is dropping the
connection after every message which may let NLB do what you want. The
downside is that this means MSMQ must reconnect a session for every message
and so performance will visibly drop. Also, it's not representative of the
MSMQ configuration you would have in production.

Cheers
John Breakwell (MSFT)
Post by Joseph T.S.Lim
To All Guru Out there,
Need help !!!!
I would like to know how to balance my MSMQ server messages within 2
server. I have successfully setup my NLB and I can see it is working. My
problem is when I have written a small windows application and send
messages to my private queue, I only see messages are only accumulating in
one of the server (SERVER A), and the other server (SERVER B) is not
receiving any messages. When I drainstop or stop the queue in SERVER A,
then I see SERVER B is starting to received messages. When I restarted
the queue at SERVER A, it is not receiving until i stop SERVER B.
I have tried modified CleanupInterval but still can't to make it work.
What am I missing in this setup ? What I want to achieve is that when my
Windows application is sending message, both SERVER A and B should
received messages in equally.
In my environment, only 2 application will be sending to my cluster. Both
are pointing to my cluster IP 10.10.10.39. Both application can send 4
messages or more per second.
MY SERVER SETUP
=============
Server A
--------
NLB Setup
Cluster IP : 10.10.10.39
Subnet : 255.255.255.0
Dedicated IP : 10.10.10.24
Subnet : 255.255.255.0
TCP Port rule : 1801 (MSMQ)
Affinity : None
Priority : 1
MultiCast
Weight : Equal
WEB Server
IIS 6.0.
A Webservices is installed in this server
MSMQ
MSMQ Private$\incoming (Queue name)
Server B
--------
NLB Setup
Cluster IP : 10.10.10.39
Subnet : 255.255.255.0
Dedicated IP : 10.10.10.24
Subnet : 255.255.255.0
TCP Port rule : 1801 (MSMQ)
Affinity : None
Priority : 1
MultiCast
Weight : Equal
WEB Server
IIS 6.0.
A Webservices is installed in this server
MSMQ
MSMQ Private$\incoming (Queue name)
Each server have IIS installed and there is a Webservices method call. My
windows application will call this webservices method and the method will
write the message into the private$ queue. Both server have the same
private$ queue name.
Best regards,
Joseph
Loading...