This patterns cluster starts off with Server Clustering, which focuses on using server clusters to design an infrastructure tier that meets specific availability and scalability requirements. A server cluster is two or more servers that are interconnected to form a unified virtual computing resource.
Clustering servers increases the availability of a system by ensuring that if a server becomes unavailable because of failure or planned downtime, another server in the cluster can assume the workload, ensuring that the application remains available to users. Clustering also enhances scalability by supporting more users at the current level of performance or by improving application performance for the current users. Clustering servers for scalability adds server redundancy, helping to increase system availability, as mentioned earlier.
The Server Clustering pattern focuses on clustering as a general design technique, which is applied to two additional design patterns: Load-Balanced Cluster and Failover Cluster. Figure 7.1 shows the Performance and Reliability patterns cluster.
Figure 7.1: Performance and Reliability patterns cluster
The Load-Balanced Cluster pattern addresses how to maintain acceptable performance through the design and implementation of a scalable infrastructure tier. This pattern describes the common ways to balance incoming Internet Protocol (IP) traffic across a set, or farm, of read-only or application servers.
Load balancing enhances the performance, availability, and scalability of infrastructure tiers, which contain servers such as Web servers, streaming media servers, and virtual private network (VPN) servers, by distributing requests across all of the healthy servers in the server farm (see Server Farm). Load- balanced servers also serve a failover function by redistributing load to the remaining servers when a server in the load-balanced cluster fails.
The Failover Cluster pattern helps you design a highly available application infrastructure tier that protects against loss of service due to the failure of a single server or the software that it hosts. The pattern describes failover clusters and how they provide high availability for read/write stores such as databases, messaging systems, and file and print services.
In a failover cluster, if one of the servers becomes unavailable, another server takes over and continues to provide the service to the end-user, a process known as failover. When failover occurs, users continue to use the application and are unaware that a different server is providing it.