There is some confusion on the minimum number of Exchange 2010 servers that are required for running a Exchange 2010 in a High Available configuration. This seems logical, because with Exchange 2007 you could not mix a clustered Mailbox role with one of the other Exchange roles. That meant for a minimum Exchange 2007 HA configuration you need 2 clustered Mailbox servers and 2 Exchange servers with the CAS en Hub role, where you load balanced the CAS role using Network Load Balancing (NLB).
With Exchange 2010 you can add CAS and HUB roles to a Mailbox server that is part of a Database Availability Group (DAG). So this might lead people to think you can suffice with 2 servers with Exchange 2010, each server holding the Mailbox, CAS and Hub role, part of a DAG and with load balancing configured for CAS (Hub roles are load balanced automatically within a site).
However, there’s a caveat: NLB and Failover Clustering (on which DAGs are build) are mutually exclusive. This means you can’t have both.

The solution is to install the CAS and Hub roles on DAG’ed Mailbox servers, but instead of load balancing client requests on the server, you use an external load balancer or ISA Server. When using a load balancer you need to configure the CAS servers in a CAS array, but I’ll devote another article to that at a later time.
So, when asked what’s the minimum number of Exchange 2010 servers required for a HA solution, the answer is 2½.
Update: The mentioned article on CAS Arrays is located here.