Respostas:
(Não vou entrar na "melhor maneira de carregar o equilíbrio", pois isso obviamente é específico da situação.)
O HAProxy e o nginx são excelentes opções para balanceadores de carga HTTP de código aberto no Unix. Em um nível muito alto, os prós e contras que vêm à mente são IMHO:
nginx:
HAProxy:
Mas, como dito, ambos são excelentes opções. Escolha a que você se sentir mais confortável.
Isso realmente depende do que você quer fazer.
O Nginx pode dividir a carga entre clusters, bem como rotear domínios específicos para diferentes clusters. Nosso desempenho nginx foi satisfatório. É mais como um roteador de carga.
Para haproxy, eu sei que ele consulta o status do servidor constantemente e verifica o servidor antes de direcionar o tráfego para ele. Também possui uma interface na qual você pode visualizar estatísticas. Nginx: Acho que não faz isso em nenhum dos pontos.
Usamos o nginx como servidor da web e estamos muito felizes com isso. Eu nunca vou voltar para o Apache. A desvantagem é se você pretende executar o PHP; requer alguma hackery-jiggery para fazê-lo funcionar sob fastCGI.
Não se esqueça de colocar o verniz no lugar do cache! Esse passo simples resolve muitos dos problemas dos sites que estão sendo Slashdotted / Fireballed!
Não sou especialista nisso, mas, tanto quanto sei, o HAProxy tem melhor desempenho e é mais configurável na maneira como faz o balanceamento de carga.
Agora eu poderia lançar uma lista de comparações e benchmarks para você, mas ligarei os resultados do Google em https://encrypted.google.com/search?q=nginx+vs+haproxy