Home Page › Forums › BizTalk 2004 – BizTalk 2010 › Load Balancing Confusion
- This topic has 6 replies, 1 voice, and was last updated 9 years, 3 months ago by
community-content.
-
AuthorPosts
-
-
December 19, 2006 at 2:14 AM #17004
Hi All!
I've got a bit of a confusion over load balancing and High Availability, this is from a Microsoft document on 'Scaled Out Receive Hosts':
During typical operations, as long as you have done the necessary work for scale out in front of the receive adapters (for example, if you configure network load balancing for HTTP), the messaging load is distributed among the three host instances for each host. If a host instance on one computer fails, the host instances running on the other two computers provide redundancy and maintain service availability.
Ok, it says you need to do some extra work to acheive load balancing, like configure nlb for HTTP and SOAP, but in one or two other documents I've read that if you create multiple host instances of a host on different machines, Biztalk load balances automatically b/w hosts. So this is the whole conufsion:
1. If we have multiple instances of a host running on different machines and that host is configured as a cluster resource, is that only for failover? and the load would not be balanced b/w different host automatically?
2. If yes then Ok we can load balance for Http and Soap using NLB, and use host instances for failover scenarios, But how do we load balance other receive adapters like MSMQ?
3. If no then same should be the case for Http and Soap adapters, as they are also running under a host instance?
Waiting for your replies,
Regards,
Sajid.
-
December 19, 2006 at 2:54 AM #17005
Depends on the adapter type.
For HTTP and SOAP the adapter listens for messages. The sending machine needs to decide which server to send it to and it has no idea which server is active. NLB addresses this problem, it picks one of the servers to receive each message. If one server goes down, the other/s will take over.
The FILE and FTP adapters pull data from a remove server. If you have two servers with the same host instance running an FTP adapter they will both connect to the remove server and attempt to download the same file – you need to fail over this host instance using a cluster
Although MSMQ is a listening rather than a polling adapter, it does not load balance – you can only have one queue so you cannot alternate messages between two servers – you need to fail over host instances using a cluster.
-
December 19, 2006 at 9:39 PM #17014
Greg,
Thanks for explaining this, but I haven't got the complete answers:
1. As you explained in the File and FTP adapter scenario, they will both be looking for the same file and who'll ever get it first will process it, thats how load is balanced b/w those host instances. But why cant we do the same for MSMQ, have a queue server rather then a Remove Server, the queue is placed there, and have both queue host instances listening to there and whoever get it first can process the message?
2. If that is not possible, is there any other way we can load balance MSMQ messages or you are ruling out any possiblity of that?, Also please kindly tell me if load balancing is possible with WebSphere MQ?
3. Lastly From your explanation I infer that the statement 'BizTalk itself load balances b/w host instances' is in correct, because it is dependent on the adapters, whether they support load balancing or not?
Hope to listen from you soon,
Regards,
Sajid.
-
December 22, 2006 at 4:53 AM #17056
Waiting for a response…..
Sajid.
-
December 22, 2006 at 5:33 AM #17057
Sajid,
1) What Greg was trying to explain was that the File and FTP adapters don't really "load balance" in that sense. If you put two bts servers to monitor the same remote folder on a server using the FILE adapter, for example, you're very likely end up pulling messages twice. Certainly not what you intended. What's recommended in such an scenario is to cluster the BizTalk servers so that only one is active at a time (hence only one is actively polling the remote folder); if that server fails, clustering ensures the other server picks up, thus achieving high availability.
Regarding MSMQ, the basic problem is similar if you're using non-transactional queues. However, this is rarely the case in many scenarios. if you're using transactional queues, then the core limitation here is that MSMQ doesn't support remote transactional reads. That means that the queue itself needs to be located in the actual biztalk server for it to be able to read messages transactionally, and thus no way to load balance anything there. Again, you can cluster both MSMQ and the biztalk host associated with the MSMQ receive adapter to achieve HA.
2) MSMQ really, really doesn't lend itself towards load balancing. There are a few articles around about working around using intermediary servers that distribute load, but that's not really very useful with BizTalk since it already can do that internally. As for Websphere MQ, I don't know much about it so I can't answer that part.
3) The trick here is to remember that BizTalk does a lot more than just receive messages. It also processes them (orchestrations) and sends them. Receive, Send and Orchestration processes in biztalk are completely independent. For orchestrations and sending, biztalk automatically load balances the operations if the associated handler (host) has host instances on multiple servers. So, for example, if you have a Host A with instances in servers S1 and S2, and that host has an orchestration configured to run on it, biztalk will automatically execute some orchestration instances in S1 and some in S2.
In other words, the larger problem with HA and scalability in biztalk (from an architecture perspective) is usually with receive-side adapters; send side adapters and orchestrations are much easier to handle.
-
-
-
-
AuthorPosts
- The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.