We are looking to implement a load balancer that will serve requests between 2 IIS servers.
I have been tasked with the project of making sure that it is a seamless integration, but I don’t have load balancing myself on my dev machine.
How can I simulate a round-robin load balancing scenario on my dev system using IIS?
If you want to test a specific server setup, you need to have a comparable setup available with which you can test.
This is probably the time to look at adding some sort of test environment to your setup.
This would allow you to retain a simple local development environment without load balancing that you can test your code on. Then, when you have a stable release candidate you can move it to the test environment, which would be load balanced. In this sort of setup, each developer would have their own development environment, but would all share a test environment which can act as a clean setup to prevent the idiosyncrasies of one workstation from creating or obscuring bugs.
If you are truly determined to have your own load balancing system, you may want to look at setting up two or three virtual machines (via Virtual PC, VirtualBox or VMWare) and running them locally. You could then configure these VMs to be load balanced amongst one another and test against them.
When I had the task of testing our website for deployment to a load balanced environment, a duplicate test environment wasn’t an option.
What we did was specify more than 1 Worker Process (aka a web garden) in IIS, found under the ‘Process Model’ group in ‘Advanced Settings’ for the appropriate application pool.
This worked a treat for us, with simple round robin behaviour.
As Michael says, you need to set up a test environment that mirrors your intended deployment environment.
Traditionally this was done in-house. That option is still open to you, and will give you the most control over the test resources. But testing is a near-perfect scenario for cloud servers. Whether you rent them from Amazon, GoGrid, HP, Rackspace, or someone else, you can set up test environments–including servers, simulated clients, load balancers, etc. that you will pay for only for the duration of your tests. While there are some hurdles in matching the cloud test configuration to the configuration you’ll have in deployment, the advantages can be substantial:
- Low cost. You only pay the infrastructure cost for the duration of the setup and test.
- High scale. You can afford to run much larger tests with many more clients, much higher load, and much higher scale points that you could probably afford for test infrastructure you buy and bring in-house.
1