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!
--
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.
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.
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.
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 }
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.
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.
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.
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.
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.
-
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)