Load balancing for Web and Database Servers
Solution 1:
There are probably other ways to do it, but the best way in my opinion would be the MSSQL cluster for the database portion. Typically a load balanced set of web servers are ignorant to the database clustering, but that can change depending on your application. Most applications have individual discrete calls for data, so there's never any worry about being connected to a different database server, as long as the same dataset exists.
When you say the databases are mirrored, exactly how are they mirrored? An easier, common setup is to actually just have a shared datastore that fails over with the cluster. This probably isn't as fault tolerant as some mirrored options, but mirroring enters more variables. (How frequent is it mirrored, what's the load generated from constant mirroring, etc)