Existe alguma vantagem em usar um em detrimento do outro? Estou apenas procurando opções para ocultar o endereço IP real dos servidores mestre e escravo de meus processos e não ter que reiniciá-los se o mestre falhar.
Se o Nagios detectar um mestre com falha, ainda quero me envolver para fazer o failover, inclusive informando ao HAproxy / PgBouncer sobre o novo mestre.
O HAProxy é uma solução de balanceamento de carga e alta disponibilidade de baixo nível . PgBouncer combina um pooler de conexão muito bom e um balanceamento de carga muito limitado para PostgreSQL.
Portanto, ambos têm objetivos diferentes e não podem ser comparados como "vs" na minha opinião. Embora possam ser usados em combinação uns com os outros, por exemplo. se for necessário equilibrar a carga de consultas somente leitura entre várias réplicas com HAProxy e essas réplicas forem atendidas por suas próprias instâncias PgBouncer para obter vantagens de pooling.
Mais sobre o que é e o que não é o PgBouncer está perfeitamente descrito neste post do blog .
O PgBouncer funciona em um nível superior, mapeando N conexões de entrada para M conexões de banco de dados, enquanto o HAProxy por natureza é um mapeamento 1:1. Portanto, isso fornece uma linha de defesa contra clientes que mantêm conexões ociosas, por exemplo, o que não é possível com HAProxy (pelo menos, não tão limpo, eu acho).