How Would You Configure High Traffic Webservers?

Today I was asked the question, “Should I separate the Apache server from mySQL server?” This brings up a great question. What’s the best way to configure a small set of servers for multiple high-traffic websites? Once you outgrow a single dedicated server, where do you go? Do you buy a big expensive dedicated server? What happens when that one is maxed out, do you buy two?

If you buy two servers, do you split Apache and mySQL? Do you use a load balancer even though it costs as much as a third server? Do you set up an Apache cluster with heartbeat? I find lots of tutorials on how to set up complex configurations, but so far I’ve found very little on which configurations you should use and why.Do you cloud? Do you set up virtualization on your own dedicated server? If so which software do you choose?

Hosting companies are no help. They just want to sell you a machine and be done with it. My inner nerd circle has lots of ideas, but none of us really know what the best way is. The main variables I see in this problem are as follows:

  1. Response Time
  2. Fault Tolerance
  3. Configuration Difficulty
  4. Cost

So, how do you maximize response time and fault tolerance without maximizing difficulty and cost? Got a link with the answer? Or, just care to throw in 2 cents? Drop a comment.