Identifying Applications That Benefit from NLB

The first step in creating your Network Load Balancing design, as illustrated in Figure 8.4, is to determine if any of your applications can benefit from the improved scalability and availability provided by Network Load Balancing. Your applications include not only applications in the traditional sense, such as Web applications, but also Windows Server 2003 network services, such as virtual private network (VPN) remote access.

Beyond using TCP/IP, an application that works well with Network Load Balancing has one or more of the following characteristics:

Avoids instructing the client to open a subsequent connection that must be serviced by the same cluster host.

For example, a Web application sends a response instructing a client to open an additional Secure Sockets Layer (SSL) session, and the application expects the SSL session to be established with the same cluster host that originated the response.

Avoids retaining application state on a specific server in the cluster, such as session state saved by Active Server Pages (ASP).

For example, some Web applications use a common database, or service, to maintain session state. A cookie is sent to the client on the initial request. On subsequent requests, the client sends the cookie to the cluster. Any cluster host in the cluster is capable of restoring the application session state by using the cookie sent by the client to retrieve the session state from the session database, or service. Applications that use a common database, or service, in conjunction with client-side cookies to maintain session state are more likely to work with Network Load Balancing than those that retain application state on a specific host in the cluster.

Applications and services that are stateless are the most likely to run without modifications on Network Load Balancing. Applications and services are said to be stateless when each client request is considered to be a new request that is unrelated to any previous request. Anytime a client request is considered to be a continuation of a previous request, the applications and services maintain session state.

Applications that maintain session state are said to be stateful. Stateful applications require affinity with the cluster host, when the session state is maintained locally.

Regardless of which category your application belongs to, always test the application with Network Load Balancing in your lab environment during the proof-of-concept stage in your design. Ensure that your application is compatible with Network Load Balancing before continuing with the design process.

Some of the common applications and services that run on Network Load Balancing include:

Web applications running on IIS 6.0

One of the most common of the solutions that use Network Load Balancing is an IIS 6.0 Web farm. A typical challenge in supporting Web applications occurs when an application must maintain a persistent connection to a specific cluster host. For example, if a Web application uses Hypertext Transfer Protocol Secure (HTTPS), the application should contact the same cluster hosts within the cluster, for efficiency. Connecting to a different cluster host requires establishing a new SSL session, which creates excess network traffic and overhead on the client and server. Network Load Balancing maintains affinity and reduces the possibility that a new SSL session needs to be established.

You can also use Network Load Balancing in solutions that include ISA Server to provide network security, network isolation, network address translation, or Web content caching. In ISA Server solutions, the design and deployment are integral parts of the ISA Server design and deployment process.

For more information about creating ISA Server designs and deploying ISA Server in your organization, see "Deploying ISA Server" in Deploying Network Services of this kit and see the documentation that accompanies ISA Server.

Application hosted on Terminal Services

When you run applications on Terminal Services, the Terminal Services clients can be load balanced across a number of computers running Terminal Services. Network Load Balancing is combined with the Session Directory service in Terminal Server to provide improved scalability and availability for Terminal Services.

For more information about creating Terminal Services designs to host applications, see "Hosting Applications with Terminal Server" in this book, or see the Session Directory and Load Balancing Using Terminal Server link on the Web Resources page at http://www.microsoft.com/windows/reskits/webresources.

Note

Network Load Balancing is an inappropriate solution if you are using Terminal Services to provide remote administration for specific servers, because Network Load Balancing can distribute your administration traffic to any one of the cluster hosts within the cluster. When you want to use Terminal Services to remotely administer cluster hosts, connect to the specific cluster host through the dedicated IP address on the cluster adapter or through a separate management adapter. For more information about the adapters in a cluster host, see "Selecting the Number of Network Adapters in Each Cluster Host" later in this chapter.

Custom applications

Network Load Balancing might be an appropriate method of improving scalability and availability for applications that your organization or third-party organizations have developed. Custom applications must adhere to the same criteria listed earlier in this section.

The considerations for custom applications are similar to those for Web applications running on IIS 6.0. For example, any application behavior that maintains local session state across multiple TCP connections is less likely to benefit from Network Load Balancing. For more information about determining if an application requires cluster host affinity, see "Identifying Applications or Services That Require Custom Port Rules" later in this chapter.

In addition to being compatible with Network Load Balancing, custom applications must be compatible with Windows Server 2003. For help in determining if your application is compatible with Windows Server 2003, use the Windows Application Compatibility Toolkit on the Windows Server 2003 Deployment Kit companion CD. For more information about the Windows Application Compatibility Toolkit, in Help and Support Center for Windows Server 2003, click Tools, and then click Windows Resource Kit Tools Help.