Windows Server 2003 : Clustering Servers - Understanding Clustering (part 2) - Designing a Clustering Solution

1/9/2014 3:13:39 AM

2. Designing a Clustering Solution

The first thing to decide when you are considering a clustering solution for your network is just what you expect to realize from the cluster—in other words, know just how much availability, reliability, or scalability you need. For some organizations, high availability means that any downtime at all is unacceptable, and clustering can provide a solution that protects against three different types of failures:

  • Software failures Many types of software failure can prevent a critical application from running properly. The application itself could malfunction, another piece of software on the computer could interfere with the application, or the operating system could have problems, causing all the running applications to falter. Software failures can result from applying upgrades, from conflicts with newly installed programs, or from the introduction of viruses or other types of malicious code. As long as system administrators observe basic precautions (such as not installing software updates on all the servers in a cluster simultaneously), a cluster can keep an application available to users despite software failures.

  • Hardware failures Hard drives, cooling fans, power supplies, and other hardware components all have limited life spans, and a cluster enables critical applications to continue running despite the occurrence of a hardware failure in one of the servers. Clustering also makes it possible for administrators to perform hardware maintenance tasks on a server without having to bring down a vital application.

  • Site failures In a geographically dispersed cluster, the servers are in different buildings or different cities. Apart from making vital applications locally available to users at various locations, a multisite cluster enables the applications to continue running even if a fire or natural disaster shuts down an entire site.

Estimating Availability Requirements

The degree of availability you require depends on a variety of factors, including the nature of the applications you are running; the size, location, and distribution of your user base; and the role of the applications in your organization. In some cases, having applications available at all times is a convenience; in other cases, it is a necessity. The amount of availability an organization requires for its applications can affect its clustering configuration in several ways, including the type of clustering you use, the number of servers in the cluster, the distribution of applications across the servers in the cluster, and the locations of the servers.

High Availability Requirements

The technical support department of a software company might need the company’s customer database available to be fully productive, but it can conceivably function without it for a time. For a company that sells its products exclusively through an e-commerce Web site, however, Web server downtime means no incoming orders and therefore no income. For a hospital or police department, nonfunctioning servers can literally be a matter of life and death. Each of these organizations might be running similar applications and servicing a similar number of clients, but their availability requirements are quite different, and so should their clustering solutions be.

Availability is sometimes quantified in the form of a percentage reflecting the amount of time that an application is up and running. For example, 99% availability means that an application can be unavailable for up to 87.6 hours during a year. An application that is 99.9% available can be down for no more than 8.76 hours a year.

Achieving a specific level of availability often involves more than just implementing a clustering solution. You might also have to install fault-tolerant hardware, create an extensive hardware and software evaluation and testing plan, and establish operational policies for the entire IT department. As availability requirements increase, the amount of time, money, and effort needed to achieve them grows exponentially. You might find that achieving 95% to 99% reliability is relatively easy, but pushing reliability to 99.9% becomes very expensive indeed.

Scaling Clusters

Both server clusters and Network Load Balancing are scalable clustering solutions, meaning that you can improve the performance of the cluster as the needs of your organization grow. The two basic methods of increasing cluster performance are as follows:

  • Scaling Up Improving individual server performance by modifying the computer’s hardware configuration. Adding random access memory (RAM) or level 2 (L2) cache memory, upgrading to faster processors, and installing additional processors are all ways to scale up a computer. Improving server performance in this way is independent of the clustering solution you use. However, you do have to consider the individual performance capabilities of each server in the cluster. For example, scaling up only the active nodes in a server cluster might establish a level of performance that the passive nodes cannot meet when they are called on to replace the active nodes. It might be necessary to scale up all the servers in the cluster to the same degree to provide optimum performance levels under all circumstances.

  • Scaling Out Adding servers to an existing cluster. When you distribute the processing load for an application among multiple servers, adding more servers reduces the burden on each individual computer. Both server clusters and NLB clusters can be scaled out, but it is easier to add servers to an NLB cluster.

    In Network Load Balancing, each server has its own independent data store containing the applications and the data they supply to clients. Scaling out the cluster is simply a matter of connecting a new server to the network and cloning the applications and data. Once you have added the new server to the cluster, NLB assigns it an equal share of the processing load.

    Scaling out a server cluster is more complicated because the servers in the cluster must all have access to a common data store. Depending on the hardware configuration you use, scaling out might be extremely expensive or even impossible. If you anticipate the need for scaling out your server cluster sometime in the future, be sure to consider this when designing its hardware configuration.

Scalability in the Real World

Be sure to remember that the scalability of your cluster is also limited by the capabilities of the operating system you are using. The maximum numbers of nodes supported by the Windows operating systems when scaling out a cluster are shown in Table 1.

Table 1. Number of Nodes Supported When Scaling Out a Cluster
Operating SystemNetwork Load BalancingServer Clusters
Windows Server 2003, Web Edition32Not Supported
Windows Server 2003, Standard Edition32Not Supported
Windows Server 2003, Enterprise Edition328
Windows Server 2003, Datacenter Edition328
Windows 2000 Advanced Server322
Windows 2000 Datacenter Server324

Table 2 shows the operating system limitations when scaling up a cluster.

Table 2. System Limitations When Scaling Up a Cluster
Operating SystemMaximum Number of ProcessorsMaximum RAM
Windows Server 2003, Web Edition22 GB
Windows Server 2003, Standard Edition44 GB
Windows Server 2003, Enterprise Edition832 GB (for x86-based computers), 64 GB (for Itanium-based computers)
Windows Server 2003, Datacenter Edition64 (minimum 8-way capable machine required)64 GB (for x86-based computers), 512 GB (for Itanium-based computers)
Windows 2000 Advanced Server88 GB
Windows 2000 Datacenter Server3264 GB

How Many Clusters?

If you want to deploy more than one application with high availability, you must decide how many clusters you want to use. The servers in a cluster can run multiple applications, of course, so you can combine multiple applications in a single cluster deployment, or you can create a separate cluster for each application. In some cases, you can even combine the two approaches.

For example, if you have two stateful applications that you want to deploy using server clusters, the simplest method would be to create a single cluster and install both applications on every computer in the cluster, as shown in Figure 3. In this arrangement, a single server failure affects both applications, and the remaining servers must be capable of providing adequate performance for both applications by themselves.

Figure 3. A cluster with two applications running on each server

Another method is to create a separate cluster for each application, as shown in Figure 4. In this model, each cluster operates independently, and a failure of one server only affects one of the applications. In addition, the remaining servers in the affected cluster only have to take on the burden of one application. Creating separate clusters provides higher availability for the applications, but it can also be an expensive solution because it requires more servers than the first method.

Figure 4. Two separate clusters running two different applications

You can also compromise between these two approaches by creating a single cluster, installing each application on a separate active node, and using one passive node as the backup for both applications, as shown in Figure 5. In this arrangement, a single server failure causes the passive node to take on the burden of running only one of the applications. Only if both active nodes fail would the passive node have to take on the full responsibility of running both applications. It is up to you to evaluate the odds of such an occurrence and to decide whether your organization’s availability requirements call for a passive node server with the capability of running both applications at full performance levels, or whether a passive node scaled to run only one of the applications is sufficient.

Figure 5. Two active nodes sharing a single passive node

Combining Clustering Technologies

The decision to use server clustering or Network Load Balancing on your clusters is usually determined by the applications you intend to run. However, in some cases it might be best to deploy clusters of different types together to create a comprehensive high-availability solution.

The most common example of this approach is an e-commerce Web site that enables Internet users to place orders for products. This type of site requires Web servers (which are stateless applications) to run the actual site and (stateful) database servers to store customer, product, and order entry information. In this case, you can build an NLB cluster to host the Web servers and a server cluster for the database servers, as shown in Figure 6. The two clusters interface just as though the applications were running on individual servers.

Figure 6. An NLB cluster interacting with a server cluster

Dispersing Clusters

Deploying geographically dispersed clusters enables applications to remain available in the event of a catastrophe that destroys a building or even a city. Having cluster servers at different sites can also enable users to access applications locally, rather than having to communicate with a distant server over a relatively slow wide area network (WAN) connection.

Geographically dispersed server clusters can be extremely complex affairs: in addition to the regular network, you have to construct a long-distance storage area network (SAN) that gives the cluster servers access to the shared application data. This usually means that you have to combine privately owned hardware and software products with WAN links for the SAN supplied by a third-party service provider.

Geographically dispersing Network Load Balancing clusters is much easier because there is no shared data store. However, in most cases, an NLB cluster that is dispersed among multiple sites is not actually a single cluster at all. Instead of installing multiple servers at various locations and connecting them all into a single cluster, you can create a separate cluster at each location and use another technique to distribute the application load among the clusters. This is possible with stateless applications. In the case of a geographically dispersed cluster of Web or other Internet servers, the most common solution is to create a separate NLB cluster at each site, and then use the Domain Name System (DNS) round robin technique to distribute client requests evenly among the clusters.

Dispersing Network Load Balancing Clusters

Normally, DNS servers contain resource records that associate a single host name with a single IP address. For example, when clients try to connect to an Internet Web server named, the clients’ DNS servers always supply the same IP address for that name. When the Web site is actually a Network Load Balancing cluster, there is still only one name and one IP address, and it is up to the clustering software to distribute the incoming requests among the servers in the cluster. In a typical geographically dispersed NLB cluster, each site has an independent cluster with its own separate IP address. The DNS server for the domain associates all the cluster addresses with the single host name, and it supplies the addresses to incoming client requests in a round robin fashion. The DNS server thus distributes the requests among the clusters, and the clustering software distributes the requests for the cluster among the servers in that cluster.

  •  Windows Server 2003 : Administering Software Update Services (part 6) - SUS Backup and Recovery,Designing a Network Security Update Infrastructure
  •  Windows Server 2003 : Administering Software Update Services (part 5) - Configuring Automatic Updates Through Group Policy , SUS Troubleshooting
  •  Windows Server 2003 : Administering Software Update Services (part 4) - The Automatic Updates Client
  •  Windows Server 2003 : Administering Software Update Services (part 3) - Synchronizing SUS, Approving Updates
  •  Windows Server 2003 : Administering Software Update Services (part 2) - Configuring and Administering SUS - Configuring Software Update Services
  •  Windows Server 2003 : Administering Software Update Services (part 1) - Installing SUS on a Windows Server 2003 Computer
  •  Windows 7 : Understanding the User Account Control - INTERACTING WITH THE UAC
  •  Windows 7 : Understanding the User Account Control
  •  Windows Server 2003 : Supporting and Troubleshooting Terminal Server (part 5) - Managing User Sessions
  •  Windows Server 2003 : Supporting and Troubleshooting Terminal Server (part 4) - Managing and Troubleshooting Terminal Server - Device Redirection
    Top 10
    3 Tips for Maintaining Your Cell Phone Battery (part 2) - Discharge Smart, Use Smart
    3 Tips for Maintaining Your Cell Phone Battery (part 1) - Charge Smart
    OPEL MERIVA : Making a grand entrance
    FORD MONDEO 2.0 ECOBOOST : Modern Mondeo
    BMW 650i COUPE : Sexy retooling of BMW's 6-series
    BMW 120d; M135i - Finely tuned
    PHP Tutorials : Storing Images in MySQL with PHP (part 2) - Creating the HTML, Inserting the Image into MySQL
    PHP Tutorials : Storing Images in MySQL with PHP (part 1) - Why store binary files in MySQL using PHP?
    Java Tutorials : Nested For Loop (part 2) - Program to create a Two-Dimensional Array
    Java Tutorials : Nested For Loop (part 1)
    - First look: Apple Watch

    - 3 Tips for Maintaining Your Cell Phone Battery (part 1)

    - 3 Tips for Maintaining Your Cell Phone Battery (part 2)
    - How to create your first Swimlane Diagram or Cross-Functional Flowchart Diagram by using Microsoft Visio 2010 (Part 1)

    - How to create your first Swimlane Diagram or Cross-Functional Flowchart Diagram by using Microsoft Visio 2010 (Part 2)

    - How to create your first Swimlane Diagram or Cross-Functional Flowchart Diagram by using Microsoft Visio 2010 (Part 3)
    Popular Tags
    Microsoft Access Microsoft Excel Microsoft OneNote Microsoft PowerPoint Microsoft Project Microsoft Visio Microsoft Word Active Directory Biztalk Exchange Server Microsoft LynC Server Microsoft Dynamic Sharepoint Sql Server Windows Server 2008 Windows Server 2012 Windows 7 Windows 8 Adobe Indesign Adobe Flash Professional Dreamweaver Adobe Illustrator Adobe After Effects Adobe Photoshop Adobe Fireworks Adobe Flash Catalyst Corel Painter X CorelDRAW X5 CorelDraw 10 QuarkXPress 8 windows Phone 7 windows Phone 8 BlackBerry Android Ipad Iphone iOS