I recommend you to try the Microsoft Web Capacity Analysis Tool (WCAT). It is able to run on multiple machines simultaneously, and each of the clients can have multiple "virtual clients", thus they are able to simulate multiple connections to a web server. It can connect to any web server (used by some Apache fanatics), but of course it integrates best with IIS.
It was developed by the IIS performance team and is used by Microsoft to stress-test their IIS server. It has both x86 and x64 versions, and it is easy to create your own extensions to it.
It works the following way: you create a scenario file with which you can describe any number of HTTP requests. (It has options for GET, POST, and also has HTTPS support.) You can then group these requests to transactions which represent a series of requests to simulate user interaction. Each virtual client runs a single transaction at a time, and it waits until the current request completed before starting the next one.
It is easy to write a transaction that contains a series of requests which can simulate users "clicking" on things. (It is also possible to "sleep" for a certain amount of time between requests, thus simulating a user reading the page.)
Here is the official introduction:
Web Capacity Analysis Tool (WCAT) is a
lightweight HTTP load generation tool
primarily designed to measure the
performance of a web server within a
controlled environment. WCAT can
simulate thousands of concurrent users
making requests to a single web site
or multiple web sites. The WCAT
engine uses a simple script to define
the set of HTTP requests to be played
back to the web server. Extensibility
is provided through plug-in DLLs and a
standard, simple API.
Perhaps its only downside is that it is a bit compicated to set up at first. It is a command line tool so it is also a bit too easy to screw up with the parameters.