Je fais quelque chose de similaire et j'exécute plusieurs instances haproxy (en cluster de basculement dans chaque centre de données même) dans plusieurs centres de données à travers le monde. J'avais également besoin de la ségrégation du trafic basée sur GeoIP vers ces différents centres de données, alors j'ai opté pour la solution "Gestion avancée du trafic" de Dyn.com, qui permet de servir différentes régions du monde à leur emplacement le plus rapide au niveau mondial, mais gère également la surveillance et le basculement comme vous le recherchez. Dyn (et je suis sûr que d'autres) proposent des solutions de surveillance/basculement en tant que produits autonomes, par exemple, http://dyn.com/dns/dynect-managed-dns/active-failover/
Si vous essayez de faire cela à moindre coût, et lorsque vous dites que votre haproxy est "down" cela signifie qu'il ne répond pas en raison d'une panne du centre de données, vous pourriez essayer de servir plusieurs enregistrements A de votre serveur DNS pour chaque requête. Cela répartirait essentiellement les requêtes entre vos différents serveurs, et laisserait les clients essayer les autres si le premier échoue.
Je recommande cependant de choisir une solution hébergée, car cela a très bien fonctionné pour moi. Je pense que DnsMadeEasy propose également un produit similaire pour la distribution géographique qui inclut également la surveillance (pour moins cher que Dyn).
Vous pourriez bien sûr développer votre propre solution, mais vous devriez considérer le coût total de le faire par rapport à vous concentrer sur le service principal que votre entreprise propose. Tout est une question de compromis... :)
De plus, si vos requêtes DNS atteignent 50M/semaine, sauf si vous avez beaucoup de visiteurs ponctuels (ce qui est en fait mon cas), cela semble beaucoup. Assurez-vous que vos paramètres TTL ne sont pas trop bas. S'ils le sont, vous pourriez vous attendre à devoir payer beaucoup plus pour un service hébergé que ce dont vous avez besoin.