We are trying to develop a design for a cluster of web servers at a single data center which will ensure that the cluster, as a whole, has very, very high availability.

Each of the servers is basically identical. They all serve web pages, and each can act relatively independently of the other.

Our initial thought was to put the servers behind a redundant, hardware-based, load balancing solution. The load balancers would be able to detect if any single webserver went down, and would redirect traffic to the other servers in that case.

An alternative -- less expensive -- solution that has been suggested to us is to use EtherChannel. We're concerned, however, that it might not be as robust an approach as the load balancer solution.

Can anyone make any suggestions as to how we can best assure the high availability of our cluster?

Cost is an important consideration for us.

In addition, we'd prefer a solution that allowed for session maintenance. That is, once a user starts interacting with a particular server in our cluster, it would be nice if they could continue interacting with that particular physical server.

As an aside, I'll mention that we intend to implement this approach at two different data centers in different geographic regions, and use round robin DNS to further ensure high availability of the overall set of servers.

Thoughts? Recommendations? Criticisms? ;-)

Thanks!