Message Queuing in Network Load Balancing clusters
Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2
Message Queuing in Network Load Balancing clusters
Message Queuing services can be implemented in an Network Load Balancing cluster. Network Load Balancing clusters distribute client connections over multiple servers, providing scalability and high availability for client requests for services and applications, but they do not have failover capabilities. In its most common implementation, Network Load Balancing distributes incoming TCP/IP traffic between multiple Internet Information Services (IIS) servers, which comprise a Web farm. Network Load Balancing can combine up to 32 servers running Windows Server 2003, Enterprise Edition or Windows Server 2003, Datacenter Edition into a single load-balancing cluster. Servers can be added without shutting down the cluster.
The heart of Network Load Balancing is the WLBS driver, which is loaded into each member server, or host, in the cluster. This driver includes the statistical mapping algorithm that the cluster hosts collectively use to determine which host handles each incoming request.
Under this type of clustering, if a host fails or goes offline, Network Load Balancing automatically reconfigures the cluster to redirect subsequent client requests to hosts that are still viable members of the cluster. Any client connections that were open when the host failed or went offline are ended. On retry, the client connection is routed to a viable host. The downtime for client connections is less than 10 seconds.
Network Load Balancing allows all computers in the cluster to be addressed by the same set of cluster Internet Protocol (IP) addresses, while also maintaining their existing, dedicated IPs. This feature transparently distributes client requests among the hosts in the cluster, using virtual Internet Protocol (IP) addresses. You must run IIS 5.0 or another TCP/IP service on each host, and the hosts must serve the same content so that any of them can handle any request. You can copy updated pages to local disks on the hosts, or you can use commercial file-replication software to perform updates. Network Load Balancing allows you the option of specifying that all connections from the same client IP address be handled by a particular server (unless, of course, that server fails). It also permits you to allocate all requests from a Class C address range to a single server.
When you set up a Web farm using Network Load Balancing, each server is in constant communication with all the others. They exchange performance statistics and divide the responsibilities of handling incoming requests. Every incoming request is seen by every server in the farm, and Network Load Balancing has its own algorithm to determine which server will handle each request.
When messages are sent over HTTP transport to a queue at a virtual URL address, a TCP session is established with one of the nodes in the cluster. Messages can be sent only to destinations specified by direct format names. In the case of express and recoverable messages, the receiver is not required to maintain any internal state, and Message Queuing does not guarantee exactly-once delivery through a Web farm, although a best-effort attempt is made by means of a lightweight nonpersistent duplicate removal mechanism. When transactional messages are sent over HTTP transport, in-order delivery is guaranteed by including an SRMP stream header entry that includes information for message sequencing. For more information, see Store and forward servers.
When a session between a client and a node is disconnected and the client is routed to a different node for the next session, the messages whose delivery was not acknowledged are resent by the client and accepted by the new node with the possible creation of duplicates.
Message Queuing applications can be deployed on the nodes of an Network Load Balancing cluster to receive and process messages sent to the cluster.
Similar Web farms can also be implemented using DNS round-robin distribution, and network address translation (NAT).