Os problemas que você está tentando resolver são separados, mas relacionados. Especificamente, você está tentando alcançar as duas coisas a seguir:
- Equilíbrio de carga
- Alta disponibilidade
O balanceamento de carga está distribuindo solicitações do usuário em diferentes servidores. A maneira como os usuários são distribuídos entre os servidores pode variar. Para dar apenas dois exemplos:
- round-robin - alterna entre seus dois servidores para cada solicitação
- least-connections - faça seu dispositivo de balanceamento de carga acompanhar quantas conexões cada servidor está gerenciando e envie novas solicitações para o servidor menos carregado
Nesse caso, você deseja que os usuários sejam direcionados para o servidor "mais próximo" de onde a solicitação está vindo. Como mencionado em outras respostas, vários provedores de DNS oferecem esse serviço, assim como servidores DNS como o BIND.
Alta disponibilidade refere-se a garantir que, se um dos seus servidores não estiver mais disponível, os usuários serão direcionados para uma alternativa. Uma maneira comum de fazer isso é através do uso de IP anycast; no entanto, para que isso funcione, seu provedor de hospedagem deve estar disposto a aceitar anúncios de roteamento de você, entre outras coisas. Veja esta questão para uma discussão mais aprofundada sobre anycast .