What is Server Clustering?
A server cluster in Windows network environments is a grouping of two or more individual servers that are dedicated to running a specific application(s) and are connected to each other for the purpose of providing fault tolerance and load balancing. Clustering is an advanced technology that is intended for organizations that run applications that must be available. Any server downtime is unacceptable. In a server cluster, each one is running the same critical application, so that if one of them fails the others will detect the failure and immediately take over. This is called failover. When the failed server comes back online, the other’s will again notice and begin using that node again. This is called failback. There are two unique types of clustering: Server Clusters and Network Load Balancing. Let’s look at these in more detail.
Server Clusters are designed to be used with special kinds of applications called “stateful applications”. These include database servers like SQL Server, e-mail and messengers like Exchange, and also file and print servers. They are identified by their long-running in-memory data states, and rapidly changing data sets. Essentially what this means is that all data on all cluster nodes needs to be identical at all times.
In a server cluster all of the nodes are connected to the same “data set”, be it a shared SCSI/SAS bus, Storage Area Network (SAN) or other network storage device. Because they are all accessing the same data, any one of the servers in the cluster can process a request from clients at any time.
For efficiency in this model, you can configure each node as “active” or “passive”. Active nodes, of course, receive and process requests. Passive nodes, on the other hand, remain entirely idle, doing nothing more than sending out “heartbeat” messages to check and ensure that the active node is functioning. Should the active node fail, the passive node can immediately become active and take over.
Network Load Balancing
Network Load Balancing (NLB) is a type of clustering that enables maximum availability and reliability. It is also particularly well suited to scaling. NLB is designed to be used with applications that are considered “stateless applications”. These include things like Web, FTP, and VPN. These are called stateless applications because the data sets associated with them are small and don’t change often. Since every request from a client is treated as a single transaction, network load balancing clusters can divide the requests up among multiple servers in the cluster. Since each contains the exact same information and all are active, the cluster of servers (which can be quite large) is, in reality, being treated like one dedicated server with extensive resources.
NLB clusters seek to divide all requests evenly amongst them. If one of the servers in the NLB cluster fails, the others will immediately detect the issue and pick up the slack by taking a larger portion of requests. What is particularly nice about NLB is that if your needs and traffic increase, all you need to do is add more servers to the cluster.