DEV Community

Cover image for Por que o HAProxy é meu balancer/proxy favorito
Isadora Ribeiro
Isadora Ribeiro

Posted on

Por que o HAProxy é meu balancer/proxy favorito

Quando me perguntam sobre load balancers e proxy reverso eu só tenho uma resposta: HAProxy.

Vou dividir algumas das features que considero mais top e que me fazem escolher esse software há mais de 14 anos.

10 razões para escolher o HAProxy como seu balancer favorito!

--

  1. Dataplane API: é a sidecar API oficial que permite interagir com o HAProxy via rest. O próprio processo do HAProxy sobe ela através da diretiva “program”. Permite, dinamicamente, adicionar backends, server, acl’s, certificados, frontends, etc.

  2. Stick tables: são hash tables em memória que permitem criar chaves tipo ip, string, binary, etc e vincular a elas diversos contadores (acumulativos) ou gauges (métricas por segundo). Pode usá-las para tomar decisões de tráfego, bloqueio ou somente para metrificar.

  3. Admin socket: por baixo dos panos a Dataplane API interage com o socket de admin do HAProxy que permite realizar n operações a quente no proxy e, através dela, pode-se coletar as stick tables e mandar seus resultados para um InfluxDB/Prometheus.

  4. PROMEX: o HAProxy pode ser buildado com Prometheus Exporter nativo, bastando adicionar uma regra no frontend:
    http-request use-service prometheus-exporter if { path -m str /metrics }

  5. SPOE: permite que apps externas, em Go, óbvio (:P), realizem análise do tráfego e sete variáveis na transação permitindo o HAProxy decidir o que fazer com o tráfego. Um exemplo clássico: validar Geolocalização, marcar na transação e deixar alguma ACL tomar decisão.

  6. TLS: uma única instância de HAProxy pode fazer offload de centenas de milhares de certificados TLS sem dificuldade. Além disso, via API ou socket, pode-se carregar, atualizar ou revogar certificados a quente, podendo entregar esses arquivos posteriormente via filesystem.

  7. Peers: o HAProxy nativamente pode operar em cluster, comunicando com outras instâncias e, inclusive, compartilhando as stick tables para fins de segurança, redundância e escala.

  8. Lua: algo que pessoalmente não tenho utilizado, mas que é natural para o HAProxy (assim como Nginx), a inclusão de LUA permite também customizar a operação do HAProxy em diversos níveis - seja no boot dele, seja dinamicamente, por requisição.

  9. Métricas: o HAProxy é de longe o balancer com melhor nível de visibilidade da sua operação. Possui um conjunto incrível de métricas que, arrisco dizer, não deixar faltar UMA informação que seja crucial ou informativa para a operação dele.

  10. Logs: o nível de detalhe dos logs é incrível. Pra uma req tu obtém numa única linha, entre outras coisas:

    • tempo que cliente levou pra fazer requisição
    • tempo que a requisição ficou em queues internas
    • tempo para conectar no servidor do backend de destino
    • tempo de resposta do servidor
    • tempo total da requisição
    • status de terminação da conexão

--

Bem, se me chamavam de testemunha de Go, sei que vou ganhar o chapéu de testemunha de HAProxy também :)

Pela atenção, obrigada!

Com carinho,
Isadora.

Top comments (0)