Eu implementei uma configuração híbrida de IPVS / HAProxy. O HAProxy foi usado para tomar decisões relativamente pesadas no L7, o que tornou necessário reduzi-lo a volumes de tráfego relativamente baixos. Colocar o IPVS na frente deu a capacidade de fazer scale-out dos nós HAProxy, bem como remover a necessidade de gerenciar o failover nessa camada. Funcionou bem, para o caso de uso específico que eu precisava.
Eu não recomendaria essa configuração para sua situação declarada. Por ter ambos na mistura, você removerá as razões para usar o IPVS em primeiro lugar, porque enquanto o HAProxy estiver na pilha em algum lugar, ele se comportará da mesma forma que agora. Quaisquer problemas que o HAProxy está tendo com conexões TCP de longa duração ainda existirão (porque as conexões TCP ainda estão passando por uma instância HAProxy), você só será capaz de fazer DSR da caixa HAProxy para a Internet, e quando um HAProxy caixa vai para baixo, você ainda vai perder todas as conexões que estavam passando por essa instância.
Se você não precisar dos recursos específicos que o HAProxy oferece (inteligência L7), basta usar o IPVS (para os benefícios que você declarou que deseja). Se você fizer precisar dos recursos específicos que o HAProxy oferece, use-o em vez do IPVS. Sim, é um trade-off. Você precisará decidir o que é mais importante e quais conjuntos de recursos ausentes podem ser mais facilmente projetados (por exemplo, movendo algumas informações para o back-end, ou fazendo um trabalho melhor de lidar com conexões descartadas e restabelecendo-as sem impacto visível ao usuário).
Somente se você precisar dos recursos de HAProxy, e você precisa escalar o HAProxy porque você tem uma situação na qual uma única caixa HAProxy não funcionará mas um Uma única caixa DSR IPVS irá, se você então usar ambos em combinação.