I am looking at a number of possible options for load-balancing.

So far, I am constrained to the following options:

* DNS server load-balancer, balancing to a cluster of tomcat servers, with terracotta for session replication. Pros - don't have to buy new kit. Cons - DNS lb can keep directing to a broken server.
* Hardware load-balancer, direct to cluster of tomcat servers. Pros - could have second box for failover lb. Cons - expense.
* Apache server load-balancer. Pros - apache's lb polls for broken servers. Cons - apache server is single point of failure, plus need to buy another server.

Are there any other options I should consider?

Thanks.

Update: Thanks for all the answers so far +1's all round. Not accepting an answer yet, to keep more ideas coming.