In computing, a cluster is a group of machines, usually computers or servers, dedicated to a single task. The practice of grouping servers this way is called server clustering. Application clustering is server clustering using a software program to configure the servers to cluster. The software program creates a connection among the servers that allows them to perform tasks like load balancing, failure detection, and compensation for individual server failures.
When a system is using application clustering, that means that it is using an application that has been individually installed in each of the servers to allow the servers to handle server load as if they were one giant server. The application handles the job of routing data to and from the clustered servers. Application clustering is in contrast with hardware clustering, which uses another piece of hardware to cluster servers. Types of hardware clustering devices include network boxes that enable a set of servers to communicate as a cluster, or a cluster cabinet that physically houses and clusters a series of servers. When hardware is used to cluster a set of servers, it generally handles the same data tasks as an application clustering software program.
Load balancing is the process of distributing the data load among the available servers. For servers housing a website on the Internet, load balancing would help determine which server responds to which web traffic requests. Types of clusters include symmetric clusters and asymmetric clusters. Symmetric clusters are clusters that distribute load evenly among all connected servers, while asymmetric clusters reserve certain servers for when the main servers fail. Because symmetrically clustered servers that receive a constant load can be more likely to fail when hit with an extra load due to the failure of another server, which can take down the whole system, asymmetric servers offer greater protection against overall failure.
Benefits to using clustered servers include increased scalability and protection against downtime. Scalability is the ability to increase or decrease a certain type of resources if the system needs to shrink or grow. Application clustering makes a server system scalable because it allows for servers to be easily added to or removed from the cluster.
Because a server cluster means multiple servers are dedicated to the same purpose, clustering can harbor more seamless, error-free server function. This is essential for businesses that depend on sales made through their websites. Even brief server downtime can cause major financial losses for an online store. When a business uses a server cluster, the likelihood of downtime decreases significantly because it generally takes the failure of multiple servers to take down a cluster of servers.