Na minha experiência, o haproxy sempre começa do primeiro servidor (não aleatório). Se o que você está descrevendo realmente acontecer, basta girar a lista de servidores em 1 entrada em cada balanceador.
Estamos executando servidores da web atrás de um balanceador de carga EC2 e, por sua vez, esses servidores executam o HAProxy e distribuem a carga entre os servidores de trabalho.
Assumindo pesos de servidor iguais, parece que o cenário a seguir seria executado se o EC2 usar efetivamente um algoritmo de balanceamento de carga de roundrobin:
Server 1 handles request, sends to backend 1
Server 2 handles request, sends to backend 1
Server 3 handles request, sends to backend 1
Server 1 handles request, sends to backend 2
Server 2 handles request, sends to backend 2
Server 3 handles request, sends to backend 2
Server 1 handles request, sends to backend 3
Server 2 handles request, sends to backend 3
Server 3 handles request, sends to backend 3
...
Se a duração da sessão for aproximadamente a mesma, a carga não será balanceada corretamente. Assumindo pesos iguais, o HAProxy escolhe um primeiro servidor aleatório em seu algoritmo de roundrobin?
Tags load-balancing haproxy