Você pode ajustar dinamicamente os pesos do servidor com um pouco do HAProxy Voodoo, cortesia do set weight
comand
Os bits relevantes (que são enviados para o socket de estatísticas do HAProxy):
set weight / [%]
Change a server's weight to the value passed in argument. If the value ends with the '%' sign, then the new weight will be relative to the initially configured weight. Relative weights are only permitted between 0 and 100%, and absolute weights are permitted between 0 and 256. Servers which are part of a farm running a static load-balancing algorithm have stricter limitations because the weight cannot change once set. Thus for these servers, the only accepted values are 0 and 100% (or 0 and the initial weight). Changes take effect immediately, though certain LB algorithms require a certain amount of requests to consider changes. A typical usage of this command is to disable a server during an update by setting its weight to zero, then to enable it again after the update by setting it back to 100%. This command is restricted and can only be issued on sockets configured for level "admin". Both the backend and the server may be specified either by their name or by their numeric ID, prefixed with a dash ('#').
Você precisaria escrever algum código de backend nos servidores para relatar sua carga relativa, e um processo em sua caixa HAProxy precisaria consultá-los (isso poderia ser incorporado em suas verificações de integridade com alguma criatividade, mas Eu começaria fazendo isso como um processo separado para simplificar).