hardware loadbalancer + apache 2.2. proxy + mongrels

Option 1 should work fine as long as you maintain session state in the
DB or via some other machine-independent means (which you are probably
already doing if you are using multiple mongrel processes).

V/r
Anthony Eden

Hey Phil-

  We are doing pretty much number 1 except with nginx instead of apache. Our setup is like this:

hardware load balancers -> nginx on each node -> mongrel_cluster.

  This works superbly. Unless there is some specific feature of apache that you have to have though I recommend using nginx instead of apache2.2 nginx proxy module is much faster then mod_proxy_balancer. Also nginx uses almost no resources, compared to apache which does use resources heavily. We have close to 100 nodes setup exactly like this and have had very good results from it.

  We did experiments with going directly to mongrel from the load balancers but the performance difference was minimal. ANd nginx serves static files very fast , much faster then plain mongrel. Overall its a performance win to use nginx in front of mongrel instead of straight to mongrel because static files are served many times faster. You really don't want mongrel serving any static files if possible.

Cheers-
-- Ezra Zygmuntowicz-- Lead Rails Evangelist
-- ez@engineyard.com
-- Engine Yard, Serious Rails Hosting
-- (866) 518-YARD (9273)

Another option would be:

hardware load balancers -> litespeed(s)

I may be in the minority with that suggestion -- however my experience
with Litespeed has been very rewarding. Haven't figured out why it
doesn't come up more often.

Joe