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.

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay