DEV Community

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

Posted on

1

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.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay