In large production web application environments, you can exceed the capacity of a single web server to keep up with the user demand.  At that point, one of the options available is to load balance your application across multiple servers (or scale-out).  Once you begin to introduce multiple servers, the number of factors to consider increases greatly.  If you're facing such a situation, you need to test your application in a scale-out environment to ensure that it works correctly.  Generally speaking, scale-out can be very expensive in terms of networking, load-balancing, and computer hardware.

In this 5 part series, I would like to present you with a procedure to create a load balanced test bed with nothing more than what is available to you out of the box with Windows Server 2008 R2.  It will give you an accurate representation of how your application will behave when placed in a load-balanced, scale-out environment without costing you a fortune.

The procedure I present will walk you through setting up a load balanced cluster with Network Load Balancing (NLB) using Hyper-V nodes.  It is done using a single host, with 2 Hyper-V machines all running Windows Server 2008 R2.

Environmental Prerequisites

You will need a physical Hyper-V host server.  Mine is a box I built myself with 12G of RAM and 1TB of space using mirrored drives. The host is running Windows Server 2008 R2 Enterprise with the Hyper-V role installed.

Plenty of RAM and fast disk IO are key to good performance hosting virtual machines.  In my experience, they’re the resource bottlenecks that I hit long before CPU.

You will also need your own test Windows domain, meaning a domain controller, access to create machine accounts (so you can join servers to your domain), access to create user accounts, and access to create DNS host records.

Throughout the posts I use the word "host" to refer to the physical host server, and "node" to refer to a Hyper-V virtual machine running on the physical server.

The 5 parts in this series (in order) are:

  1. Create a base image
  2. Networking setup
  3. Create the nodes
  4. Configure the nodes
  5. Configure the NLB cluster

All the best and I hope you find the series useful!