HAProxy (historicamente uma abreviação de High Availability Proxy) é um software livre e de código aberto que atua como proxy reverso e balanceador de carga para aplicações baseadas em TCP e HTTP. Escrito em C, o programa recebe conexões dos clientes e as encaminha a conjuntos de servidores de retaguarda, podendo operar com IPv4, IPv6 e sockets Unix.
Funcionamento e recursos
No modo TCP, o HAProxy aceita uma conexão em uma porta de escuta, estabelece uma nova conexão com um servidor e permite o fluxo de dados nos dois sentidos. Em aplicações HTTP, funciona como um proxy reverso, recebendo as requisições dos clientes e encaminhando-as aos servidores por meio de conexões separadas. O software também pode encerrar ou iniciar conexões protegidas por TLS.
Sua arquitetura utiliza um mecanismo orientado a eventos e não bloqueante, combinado a um escalonador multithread baseado em prioridades. A distribuição das requisições pode ser condicionada por listas de controle de acesso (ACLs), que permitem selecionar servidores de acordo com informações como o domínio solicitado, o caminho da URL ou o endereço do cliente.
O HAProxy também realiza verificações periódicas de integridade dos servidores. Essas verificações podem testar conexões TCP ou enviar requisições específicas a uma aplicação. Servidores considerados indisponíveis podem ser retirados temporariamente do balanceamento, enquanto as alterações de estado são registradas em logs e nas interfaces de estatísticas.
Licença
O código principal do HAProxy é distribuído sob a GNU General Public License versão 2 ou posterior. Os arquivos de cabeçalho são disponibilizados sob a GNU Lesser General Public License versão 2.1.