If you are worried about a process not running, monit (http://mmonit.com/monit/) is very good at keeping track of processes. I have used this in high available situations, it will alert and restart upon failure (or alert if restart failed) and check via a TCP connect along with PID currently used to inform you if a process changed / isn't running / cannot connect / etc.
I do agree on the back end (if you are using a database) that it should be replicated. You can use a tungsten topology and you can then take databases offline and no end-user would be the wiser.
LVS is always a great tool for load balancing, and directing web traffic. You can remove web servers from your LVS loop to perform maintenance as well.
You would also want to take network into concern, if you have 2 NICs (as most servers do), then I would run them into different switches and ensure the switches reside on different PDUs on different power circuits so you can lose a power circuit and still keep network traffic going internally (as you can float your internalLVS IPs to your second network interface on said server).
You routers/firewalls should be configured for failover as well.
Just some food for thought.