The two scenarios you mention, DNS and email, don't really need a special load balance or HA setup as they have it built in. Just build as many servers as you need and make them available via DNS entries.
That is, for DNS, when you put your glue records in at your registrar, make sure you put all your servers in. Also include them in the NS entries for all your zones. When other servers attempt to query your name servers, if one isn't available, they will try and query the other/s automatically.
For email, you can load balance by making your MX records have the same weight, which will create a round robin style system. If one of your servers becomes unavailable, SMTP is designed such that connecting servers will try all servers that have MX records defined for the domain. For an example of load balancing mail with DNS, have a look at the MX records for hotmail.com. They also take things further by having multiple IP addresses per A record.
If you are after HA and LB for other types of services, I believe there's some how-tos around here if you try a search.