Kyle,
Se você precisar apenas de failover para a parte SSL e não de balanceamento de carga, aqui está o que eu sugiro. Você instala haproxy + keepalived + stunnel (corrigido) em dois nós. O keepalived possui o endereço de serviço e verifica a presença dos processos stunnel e haproxy para calcular seu peso, de forma que o nó na melhor forma seja o mestre. O Stunnel recebe o tráfego na porta 443 e o encaminha localmente para o haproxy em qualquer porta que você desejar. Para que o haproxy registre o endereço IP do cliente, você precisa do patch x-forwarded-for stunnel (você pode encontrá-lo no meu site). Você então dirá ao haproxy para registrar o cabeçalho x-forwarded-for.
Existe uma limitação no entanto. Se você suporta HTTP keep-alive, então o stunnel somente adicionará o cabeçalho x-forwarded-for uma vez, o que é um pouco problemático. Na Exceliance, começamos a trabalhar em um patch para encaminhar os parâmetros de conexão de stunnel para haproxy em vez de tocar com o x-forwarded-for. Dessa forma, a haproxy acredita que obtém sua conexão do cliente real. Se estiver interessado, diga-me, podemos enviá-lo para você assim que estiver concluído.