Our environment is mostly consisting of SSL web sites running on IIS/ASP.Net. The majority of the site code is reporting, analysis, and user specific views of data. We are expanding the number of concurrent users and I need to plan for failover and cluster capability. I've been doing research on setting up nginx and haproxy as well as possibly varnish to handle the SSL offloading, load balancing, and caching.
One of my questions pertains to the configuration. I believe, from what I have read, nginx needs to be in front of varnish due to the SSL sites we have running. I envision the proper setup to be:
*-------*
* nginx *
*-------*
|
*---------*
* varnish *
*---------*
|
*---------*
* haproxy *
*---------*
|\
| - - - - -
| |
*------* *------*
* web1 * * web2 *
*------* *------*
First, is this the best case setup for our environment (IIS 7.5) and is there any benefit to implementing varnish in a case where most of the content is essentially per request dynamic content? I'm hitting the point of paralysis by analysis on this topic and can't seem to get to a good answer on the use cases for a varnish middle layer.
My second question is dealing with single point of failure. Right now our ASA5510 routes to each web server so our single point is the firewall/connection. The connection has such a small chance of even going down that I am really only considering the firewall as the single point of failure in our configuration. Management is sure to look at the above diagram and see 3 possible new points of failure. Is there a way to setup this up to eliminate any of the points as main bottlenecks to all servers? I couldn't find consistent reports of instability with nginx or haproxy so they seem to be solid, but I would still like to provide failover wherever possible.
Any thoughts or ideas as to the best way to get these integrated without compromising the infrastructure?