In Exchange 2010, you can define Database Availability Groups and have your mailbox database(s) automatically replicated between multiple servers, and you can have mailbox server which are members of a DAG also host other server roles, such as Hub Transport and/or Client Access (which wasn't possible with Exchange 2007).
But can you define an array of Client Access Servers on the same two servers which are members of a DAG? The documentation I've found states quite clearly that you can't use NLB with DAGs due to incompatibilities with the cluster service... or, that you can try to set it up, but it would be an unsupported scenario.
What about using a hardware load balancer? Or a reverse proxy which can publish multiple internal servers on the same external URL (such as ISA)? If NLB is not used on the two servers and another balancing solution is implemented, can then full high availability of all main Exchange services (Mailbox, Hub, CAS) be achieved with only two servers?
Yes. It can be done quite well. Do a basic Exchange install on each server (Mailbox, CAS, and Hub). Setup a CAS Array and assign it to the mailbox
Setup a DNS record pointing exchange.domain.com to your hardware load balancer. Then setup your DAG, create mailbox copies, and you're all done.
You also might want to check out yesterday's Exchange team blog. It doesn't talk about a single server but does go over your options for load balancing your CAS servers with ISA (now called TMG) and HLBs. http://msexchangeteam.com/archive/2010/07/20/455575.aspx
http://rebootuser.com/2011/01/05/exchange-2010-configuring-dag-on-a-2-node-cluster-each-running-cas-ht-mb-roles/
By this method you can configure 2 servers with MB/HT/CAS and DAG with High Availability. If one server is out of service owa and outlook will work fine. Please be note that when we create DAG, windows will automatically create a cluster IP. That you can use as "cas array" dns entry.
You can use the Windows Clustering Services for fail over of the CAS role. It will not load balance but it will still be HA.
You can do so by creating an IP resource in your Windows Cluster and creating a CAS array with the cluster node name.
It's what we used for 2 server HA Exchange solution, and it works fine without needing an additional load balancer.
Yes, it can. There are additional services I have used, that simply clone an exchange server with all the roles, and keep it in active stdby: NeverFail, DoubleTake, WanSyncHA - just to name a few.