Supondo que todas as suas máquinas de back-end estejam "ativas" e capazes de responder a solicitações, tudo o que você realmente precisa é de um front-end de balanceador de carga.
Um bom balanceador de carga será capaz de acompanhar o número de conexões indo para cada host e distribuir dinamicamente novas conexões para evitar sobrecarregar um dos sistemas de back-end (por "bom" quero dizer "caro", como Cisco Content Switches / Content Switch Service Modules). O preço anda de mãos dadas com os recursos aqui: os switches de conteúdo estão bem no nível de soluções.
Eu não tenho experiência com o HAProxy, mas parece que ele pode fazer balanceamento de carga com menos conexão, como opções de conteúdo, então isso provavelmente seria uma boa escolha (e com um preço muito mais atraente). Não tenho certeza se o HAProxy pode fazer rastreamento de origem (envie todas as conexões do mesmo IP para o mesmo back-end).
Alguns passos no firewall pf (ou o pfsense distribuição personalizada) pode fazer o balanceamento de carga (random ou round-robin, eu não acredito que eles possam fazer "menos conexões ponderadas" como uma opção de balanceamento como o conteúdo muda). O rastreamento de origem é implementado em pf, embora você possa ter que jogar com o tempo que a informação é retida para evitar problemas com conexões sendo movidas de um servidor para outro. Se você já usa o pf / pfsense como seu firewall, essa é uma opção gratuita: usamos isso na minha implantação atual com bons resultados, mas nossas conexões não duram tanto quanto as suas.