Redundancy with real time server replication

Can anyone provide me with a best practice scenario to provide high availability redundant servers with real time replication including any programming, user settings and voice mail and load balancing? We are looking at installing 2 geographicly redundant servers (dual quad core zeon with Raid and redundant pwr) using SRV DNS and EdgeMarc routers at each of 15 locations with a total of 532 phones dispersed amoung the locations with the 2 locations with the servers on premise having 150 phones each and the others divided between the other 13 locations.

Thanks