Deploying code to multiple front end servers We have a situation where we have multiple load balanced servers pointing to a common database. 

In the normal run of things this works fine and gives redundancy, scalability etc. 

However we are finding deployment to be a bit of a chore. 

We are using features extensively and are trying to automate deployment. Deployment at the moment is not very reliable.

In a simplified form the deploy script for each server has two stages


Update Files 
Revert Features (which
will manage dependencies, settings
changes etc)


Are there any best practices for deploying across multiple servers without causing them to be in an inconsistent state? 

As far as I can see if you deploy steps 1 and 2 to server A it will cause server B to break, if you try step one on both servers before proceeding to step 2 they will both be broken for a while.
You should probably look into Aegir, which is by far the most flexible and powerful Drupal site management/deployment system. It is able to manage 'platforms' that span acros multiple web heads, or 'clusters', as well as a variety of other configurations.

I'd suggest having a read through of their community documentation which is generally pretty good, as well as reading through mig5's excellent overview and introductory article and some of his other articles like this one.

You can also get good support in the #aegir IRC channel.

It'll be a bit of a workflow change, which can definitely take some time to get your head around, but once you're there you won't look back.