I'm in middle of re-building a website that currently gets about 4mil+ visitors a month (and that's going straight up lately). It's currently being run and hosted by an external company, but we're dumping them so I need to design hosting.
I'm thinking about building a small cluster (probably on Linode):
One Linode NodeBalancer to balance the load among app servers. It can keep all traffic from a specific client going to one app server, but WP handles sessions via cookies so that's not so important.
Two (or more) app servers - Linode (512?) VPS's running Debian6/Apache2/PHP5/Wordpress, but nginx for caching.
One MySQL (or MariaDB?) database server (again, a VPS), and maybe a slave with HyperDB.
Development is done in-house on a plain old FBSD/Apache2/MySQL/PHP5, deployment would just push new code to all the app servers one at a time and any DB changes to the DB servers.
Backups would be stored locally. We could back up one app server (they should be identical?) at a low-traffic time to keep load down.
E-mail is handled via MailChimp. Easy.
WP itself is running W3 Total Cache with Xcache, I'm considering a CDN for images and other static files, cache headers are already being used for those static files...
The plan is that as we expand, I can just add more app and/or db servers as needed.
In a nutshell: would this setup work? Would it be efficient? I've never built something like this before so I'd like to make sure I'm not missing something.
Just for reference: it's a news website. We run articles in several sections, some media, and visitors can comment on articles, sign up for our email list, etc.