Jeff, I disagree, load balancing does pas imply redundancy, c'est assez le opposite in fact. The more servers you have, le more likely you'll have a failure at a given instant. C'est why redundancy IS mandatory quand doing load balancing, mais unfortunately there are a lot of solutions qui seulement provide load balancing sans performing tout health check, resulting in a less reliable service.
DNS roundrobin is excellent to increase capacity, by distributing le load across multiple points (potentially geographically distributed). But it does pas provide fail-over. You must premier describe what type of failure you are trying to cover. A server failure must be covered locally using a standard IP address takeover mechanism (VRRP, CARP, ...). A switch failure is covered by resilient links on le server to two switches. A WAN link failure can be covered by a multi-link setup entre you et votre provider, using soit a routing protocol ou a layer2 solution (eg: multi-link PPP). A site failure should be covered by BGP : votre IP addresses are replicated over multiple sites et you announce them to le net seulement où they are available.
From votre question, it seems that you seulement need to provide a server fail-over solution, qui is le easiest solution depuis it does pas involve tout hardware nor contract avec tout ISP. You juste have to setup le approprié software on votre server for that, et c'est by far le cheapest et le plus reliable solution.
You asked "what si an haproxy machine fails ?". C'est le same. All people Je sais who use haproxy for load balancing et high availability have two machines et run soit ucarp, keepalived ou heartbeat on them to ensure that one of them is toujours available.
Hoping this helps!