Sua configuração já está configurando um cookie persistente, mas acredito que você precise definir um cookie diferente por servidor de back-end para sempre enviar um visitante para o mesmo back-end.
O seu SSO tem o seu próprio cookie? Ou você está feliz em ficar com qualquer escolha haproxy caixa para enviar o tráfego para? Se você tiver um cookie que seu aplicativo define, há uma opção de configuração para informar ao haproxy para carregar o saldo com base em cookies preexistentes, em vez de definir um deles. (Marque a opção appsession ".
Em relação ao SSL, há muita documentação por aí que descreve por que o HAProxy não suporta o próprio SSL. Em vez disso, se você quiser fazer o balanceamento de carga SSL + camada 7 (cookies, etc), terá que encerrar a conexão HTTPS no balanceador de carga (ou seja, ter o SSL residido do LB em vez do servidor de back-end). Eu fiz isso antes, rodando o nginx na mesma caixa e funcionou bem.
No entanto, se você estiver satisfeito com o balanceamento de carga da Camada 4 (sem cookies, etc.), o HAProxy pode apenas rotear o tráfego criptografado sem ter de acompanhar o conteúdo.