Application clustering is server clustering using a software program to configure the servers to a cluster, a group of machines dedicated to a single task. 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 integral system. The application handles the job of routing data to and from the clustered servers.
Main reasons to use Application Cluster:
- Load balancing: it is the process by which inbound Internet protocol (IP) traffic can be distributed across multiple servers. This enhances the performance of the servers, leads to their optimal use, and ensures that no single server is overwhelmed. The practice is particularly important for busy networks, where it is difficult to predict the number of requests that will be issued to a server. 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.
- High Availability: the system can be reliably utilized with a minimum amount of downtime, as when one server stops working because of the issue the other helps to cover it.
- Scalability: the benefits of 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.
- Solving Latency issues: the latency of a network is the time it takes for a data packet to be transferred from its source to the destination. Also known as lag, the problem of high latency is becoming more common as networks are growing bigger.
Types of clusters include symmetric clusters and asymmetric clusters:
- Symmetric clusters are clusters that distribute the load evenly among all connected servers
- 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.
- Microsoft Application Request Routing (ARR) for IIS 7.0 and above is a proxy-based routing module that forwards HTTP requests to content servers based on HTTP headers. ARR provides high availability and scalability for the content servers.
- Network Load Balancing (NLB) is introduced to achieve high availability and scalability.
For more information see also Microsoft Documentation: Achieving High Availability and Scalability - ARR and NLB.
There are 2 modes:
- Active/Passive mode typically includes two ARR servers in which one server processes the requests while the other server stands by as a failover server. This option provides high availability by removing the single point of failure, but the scalability of the content servers is limited by the maximum capacity of one ARR server.
- Active/Active mode, you can have two or more ARR servers. This configuration achieves both high availability and scalability, unlike the Active/Pass mode, which achieves only high availability.
The ARR configuration is the same for both modes.
- Enable shared configuration on two ARR servers: follow the steps in this document to set up the shared configuration in IIS.
- Configure 3-tier deployment architecture using ARR: Follow the steps in this document to configure ARR in 3-tier deployment architecture.
The referenced above document describes:
- How to make static content available on the ARR server.
- How to write URL rewrite rules for static content so that they are served directly from the ARR server.
- How to write URL rewrite rules for dynamic content so that they are forwarded to the application servers.
The NLB configuration is divided into the following steps, which differ depending on the preferred mode:
- Install the NLB feature on all ARR servers.
- Create NLB cluster for ARR.
- Configure NLB for your deployment mode:
For a step-by-step configuration see also Microsoft Documentation: Achieving High Availability and Scalability - ARR and NLB.
Useful links and materials:
Limitations and Known Issues
Cache invalidation for the Layouts is not supported yet and will be implemented in future releases.
Example: the layout definition is cached on the Application Server and if the new changes are introduced they are not applied for the other servers of the configured infrastructure. For example, User 1 edits the Dialog 1 layout and controls that are used in this dialog, the saved changes will be applied only on one server. If another user opens the same dialog via another application server that has cached dialog, User 2 will see an outdated cached page of the Dialog 1: